Skip to content

Commit c8452c7

Browse files
baroquebobcatuujava
authored andcommitted
Change naming scheme for macros to use the macro name
(cherry picked from commit f74bf7a)
1 parent 7e64195 commit c8452c7

1 file changed

Lines changed: 36 additions & 8 deletions

File tree

src/org/mirah/macros/builder.mirah

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -327,17 +327,45 @@ class MacroBuilder; implements org.mirah.macros.Compiler
327327
script
328328
end
329329

330+
# Macro names are defined as <declaring-type>$Extensions$<macro-name><opt-counter>
331+
#
330332
def extensionName(macroDef: MacroDefinition)
333+
macro_mangled = macroDef.name.identifier.
334+
replace('[','lbracket_').
335+
replace(']','rbracket_').
336+
replace('+', 'plus_').
337+
replace('-', 'minus_').
338+
replace('=', 'eq_').
339+
replace('>', 'gt_').
340+
replace('<', 'lt_').
341+
replace('/', 'div_').
342+
replace('?', 'is_')
343+
base_name = "#{registerableTypeName(macroDef)}$#{macro_mangled}"
344+
ct = counter_for_name(base_name)
345+
if ct > 0
346+
"#{base_name}#{ct}"
347+
else
348+
base_name
349+
end
350+
end
351+
352+
353+
def counter_for_name(macro_def_name_klass: String)
354+
# TODO, I think the .intValue / cast in put may be unnecessary
355+
counter = Integer(@extension_counters.get(macro_def_name_klass))
356+
if counter.nil?
357+
id = 0
358+
else
359+
id = counter.intValue + 1
360+
end
361+
@extension_counters.put(macro_def_name_klass, Integer.new(id))
362+
id
363+
end
364+
365+
def registerableTypeName(macroDef: MacroDefinition)
331366
enclosing_type = @scopes.getScope(macroDef).selfType.peekInferredType
332367
if !enclosing_type.isError
333-
counter:Integer = @extension_counters.get(enclosing_type)
334-
if counter.nil?
335-
id = 1
336-
else
337-
id = counter.intValue + 1
338-
end
339-
@extension_counters.put(enclosing_type, Integer.new(id))
340-
"#{enclosing_type.name}$Extension#{id}"
368+
"#{enclosing_type.name}$Extensions"
341369
else
342370
raise InternalError.new("Cannot use error type #{enclosing_type} as base name for macros.")
343371
end

0 commit comments

Comments
 (0)