@@ -102,42 +102,46 @@ endfunction
102102###
103103### generic assistance functions
104104###
105- function match_element_name(alpha, beta)
106- define my.alpha = match_element_name.alpha
107- define my.beta = match_element_name.beta
108- return defined(my.alpha) & defined(my.beta) & (object_base_from_element(my.alpha) = object_base_from_element(my.beta))
105+ function match_name(element, name)
106+ define my.element = match_name.element
107+ return defined(my.element) & (my.element.name = my.name)
109108endfunction
110109
111- function exists_collision(root, element)
110+ function exists_unsuffixed_collision(root, name)
111+ define my.root = exists_unsuffixed_collision.root
112+ define my.unsuffixed = string.substr(my.name, 0, string.locate_last(my.name, "."))
113+ return count(my.root.collision, match_name(count, my.unsuffixed)) > 0
114+ endfunction
115+
116+ function exists_collision(root, name)
112117 define my.root = exists_collision.root
113- define my.element = exists_collision.element
114- return count(my.root.collision, match_element_name(count, my.element)) > 0
118+ return count(my.root.collision, match_name(count, my.name)) > 0
115119endfunction
116120
117- function add_collision(root, element )
121+ function add_collision(root, name )
118122 define my.root = add_collision.root
119- define my.element = add_collision.element
120- if (defined(my.root) & !exists_collision(my.root, my.element))
123+ define my.unsuffixed = string.substr(my.name, 0, string.locate_last(my.name, "."))
124+
125+ if (defined(my.root) & !exists_collision(my.root, my.unsuffixed))
121126 new my.root.collision as _collision
122- _collision.name = my.element.name
127+ _collision.name = my.unsuffixed
123128 endnew
124129 endif
125130 return my.root
126131endfunction
127132
128- function collides_file_name(root, element )
133+ function collides_file_name(root, name )
129134 define my.root = collides_file_name.root
130- define my.element = collides_file_name.element
131- return count(my.root.file, match_element_name(count, my.element)) > 1
135+ return count(my.root.file, match_name(count, my.name)) > 1
132136endfunction
133137
134138function populate_collisions(collisions, file_data)
135139 define my.collisions = populate_collisions.collisions
136140 define my.file_data = populate_collisions.file_data
137141
138142 for my.file_data.file as _file
139- if (collides_file_name(my.file_data, _file))
140- add_collision(my.collisions, _file)
143+ if (collides_file_name(my.file_data, _file.name ))
144+ add_collision(my.collisions, _file.name )
141145 endif
142146 endfor
143147endfunction
@@ -802,7 +806,7 @@ endfunction emit_project
802806. define my.collisions = emit_compile_item.collisions
803807. define my.file_record = emit_compile_item.file_record
804808.
805- . if (!exists_collision (my.collisions, my.file_record))
809+ . if (!exists_unsuffixed_collision (my.collisions, my.file_record.name ))
806810. emit_file_record_item("ClCompile", my.file_record)
807811. else
808812. emit_item_with_object("ClCompile", my.file_record)
0 commit comments