Skip to content

Commit 591e72c

Browse files
committed
fix: merge dependency aliases in JsonIR compiler
posix library defines :upper, :lower; unicode defines combining marks. These aliases were missing from the IR output, causing interscript-ts to fail on maps that reference them (German β, Belarusian Е, etc.).
1 parent 1074db6 commit 591e72c

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

lib/interscript/compiler/json_ir.rb

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,40 @@ def code
3333
private
3434

3535
def serialise_document(doc)
36+
# Merge aliases from the document AND from dependency documents so
37+
# that consumers (interscript-ts) can resolve every alias reference
38+
# without re-implementing the Ruby dep_aliases indirection.
39+
all_aliases = {}
40+
41+
# Walk dependencies and merge their alias definitions.
42+
# posix defines :upper, :lower; unicode defines :combining marks; etc.
43+
doc.dependencies.each do |dep|
44+
next unless dep.document
45+
dep.document.aliases.each do |aname, defn|
46+
all_aliases[aname.to_s] ||= serialise_item(defn.data)
47+
end
48+
end
49+
50+
# Also walk dep_aliases (for run-rule dependency resolution paths).
51+
doc.dep_aliases.each_value do |dep|
52+
next unless dep.document
53+
dep.document.aliases.each do |aname, defn|
54+
all_aliases[aname.to_s] ||= serialise_item(defn.data)
55+
end
56+
end
57+
58+
# Document's own aliases override dependency aliases.
59+
doc.aliases.each do |name, defn|
60+
all_aliases[name.to_s] = serialise_item(defn.data)
61+
end
62+
3663
{
3764
schemaVersion: SCHEMA_VERSION,
3865
systemCode: doc.name.to_s,
3966
dependencies: doc.dependencies.map(&:full_name),
4067
metadata: serialise_metadata(doc.metadata),
4168
stages: serialise_stages(doc.stages),
42-
aliases: serialise_aliases(doc.aliases),
69+
aliases: all_aliases,
4370
functions: {}
4471
}
4572
end

0 commit comments

Comments
 (0)