| Index: tools/gn/scope.cc
|
| diff --git a/tools/gn/scope.cc b/tools/gn/scope.cc
|
| index 4e049ebbc545ad997de936ffd37ffdaca7197967..63b45bc6f01b9c2662ded7504ea768baeca6f7dd 100644
|
| --- a/tools/gn/scope.cc
|
| +++ b/tools/gn/scope.cc
|
| @@ -307,8 +307,11 @@ bool Scope::NonRecursiveMergeTo(Scope* dest,
|
|
|
| if (!options.clobber_existing) {
|
| const Template* existing_template = dest->GetTemplate(i->first);
|
| - if (existing_template) {
|
| - // Rule present in both the source and the dest.
|
| + // Since templates are refcounted, we can check if it's the same one by
|
| + // comparing pointers.
|
| + if (existing_template && i->second != existing_template) {
|
| + // Rule present in both the source and the dest, and they're not the
|
| + // same one.
|
| std::string desc_string(desc_for_err);
|
| *err = Err(node_for_err, "Template collision.",
|
| "This " + desc_string + " contains a template \"" +
|
|
|