Index: Source/build/scripts/name_macros.py |
diff --git a/Source/build/scripts/name_macros.py b/Source/build/scripts/name_macros.py |
index a1655bd4f2c66775bbb6b643b22b891e2ae9780e..9aa4e570ff817e0e8e946707d65adcf392c163e2 100644 |
--- a/Source/build/scripts/name_macros.py |
+++ b/Source/build/scripts/name_macros.py |
@@ -69,11 +69,30 @@ class Writer(in_generator.Writer): |
self.namespace = self.in_file.parameters['namespace'].strip('"') |
self._entries_by_conditional = {} |
self._unconditional_entries = [] |
+ self._validate_entries() |
self._sort_entries_by_conditional() |
self._outputs = {(self.namespace + "Headers.h"): self.generate_headers_header, |
(self.namespace + "Interfaces.h"): self.generate_interfaces_header, |
} |
+ def _validate_entries(self): |
+ # If there is more than one entry with the same script name, only the first one will ever |
+ # be hit in practice, and so we'll silently ignore any properties requested for the second |
+ # (like RuntimeEnabled - see crbug.com/332588). |
+ entries_by_script_name = dict() |
+ for entry in self.in_file.name_dictionaries: |
+ script_name = name_utilities.script_name(entry) |
+ if script_name in entries_by_script_name: |
+ self._fatal('Multiple entries with script_name=%(script_name)s: %(name1)s %(name2)s' % { |
+ 'script_name': script_name, |
+ 'name1': entry['name'], |
+ 'name2': entries_by_script_name[script_name]['name']}) |
+ entries_by_script_name[script_name] = entry |
+ |
+ def _fatal(self, message): |
+ print 'FATAL ERROR: ' + message |
+ exit(1) |
+ |
def _sort_entries_by_conditional(self): |
unconditional_names = set() |
for entry in self.in_file.name_dictionaries: |