File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -161,9 +161,6 @@ def merge_signals(self, data):
161161 states .append (SignalState (raw_match , name ))
162162 signal_data .pop ('states' , None )
163163
164- if signal_name in self .signals :
165- fatal_error ('ERROR: Signal %s in %s has more than one definition' % (signal_name , self .name ))
166-
167164 signal = self .signals [signal_name ]
168165 signal .name = signal_name
169166 signal .message_set = self .message_set
@@ -173,7 +170,6 @@ def merge_signals(self, data):
173170 signal .states = states
174171 signal .merge_signal (signal_data )
175172
176-
177173 def validate (self ):
178174 if self .bus_name is None :
179175 LOG .warning ("No default or explicit bus for message %s" % self .id )
Original file line number Diff line number Diff line change @@ -89,11 +89,21 @@ def find_file(filename, search_paths):
8989 fatal_error ("Unable to find '%s' in search paths (%s)" % (
9090 filename , search_paths ))
9191
92+ # https://stackoverflow.com/a/14902564
93+ def dict_raise_on_duplicates (ordered_pairs ):
94+ """Reject duplicate keys."""
95+ d = {}
96+ for k , v in ordered_pairs :
97+ if k in d :
98+ raise ValueError ("duplicate key: %r" % (k ,))
99+ else :
100+ d [k ] = v
101+ return d
92102
93103def load_json_from_search_path (filename , search_paths ):
94104 with open (find_file (filename , search_paths )) as json_file :
95105 try :
96- data = json .load (json_file )
106+ data = json .load (json_file , object_pairs_hook = dict_raise_on_duplicates )
97107 except ValueError as e :
98108 fatal_error ("%s does not contain valid JSON: \n %s\n " %
99109 (filename , e ))
You can’t perform that action at this time.
0 commit comments