Skip to content

Commit 9a02b5b

Browse files
fix(aliasing): added new resolvedName property to typeIdentifier object for import aliased declrations (#36)
* fix(aliasing): added new resolvedName property to typeIdentifier object for import aliased declrations Signed-off-by: sanketshevkar <[email protected]> * fix(aliasing): added new resolvedName property to typeIdentifier object for import aliased declrations Signed-off-by: sanketshevkar <[email protected]> --------- Signed-off-by: sanketshevkar <[email protected]>
1 parent 826a20c commit 9a02b5b

File tree

5 files changed

+186
-71
lines changed

5 files changed

+186
-71
lines changed

lib/metamodel.js

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/metamodel.json

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@
8484
"isArray": false,
8585
"isOptional": false
8686
},
87+
{
88+
"$class": "[email protected]",
89+
"name": "resolvedName",
90+
"isArray": false,
91+
"isOptional": true
92+
},
8793
{
8894
"$class": "[email protected]",
8995
"name": "namespace",
@@ -998,10 +1004,10 @@
9981004
]
9991005
},
10001006
{
1001-
"$class":"[email protected]",
1002-
"name":"AliasedType",
1003-
"isAbstract":false,
1004-
"properties":[
1007+
"$class": "[email protected]",
1008+
"name": "AliasedType",
1009+
"isAbstract": false,
1010+
"properties": [
10051011
{
10061012
"$class": "[email protected]",
10071013
"name": "name",
@@ -1089,7 +1095,6 @@
10891095
"name": "Import"
10901096
}
10911097
},
1092-
10931098
{
10941099
"$class": "[email protected]",
10951100
"name": "Model",

lib/metamodelutil.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function createNameTable(priorModels, metaModel) {
6363
'Asset': {namespace: concertoNs, name: 'Asset'},
6464
'Participant': {namespace: concertoNs, name: 'Participant'},
6565
'Transaction': {namespace: concertoNs, name: 'Transaction'},
66-
'Event': {namespace: concertoNs, name: 'Event'}
66+
'Event': {namespace: concertoNs, name: 'Event'},
6767
};
6868

6969
// First list the imported names in order (overriding as we go along)
@@ -89,7 +89,7 @@ function createNameTable(priorModels, metaModel) {
8989
if (!findDeclaration(modelFile, type)) {
9090
throw new Error(`Declaration ${type} in namespace ${namespace} not found`);
9191
}
92-
table[localName] = {namespace, name: type};
92+
table[localName] = localName !== type ? {namespace, name: localName, resolvedName: type} : {namespace, name: type};
9393
});
9494
} else {
9595
(modelFile.declarations || []).forEach((decl) => {
@@ -147,6 +147,9 @@ function resolveTypeNames(metaModel, table) {
147147
const name = metaModel.superType.name;
148148
metaModel.superType.namespace = resolveName(name, table);
149149
metaModel.superType.name = table[name].name;
150+
if (table[name]?.resolvedName) {
151+
metaModel.superType.resolvedName = table[name].resolvedName;
152+
}
150153
}
151154
(metaModel.properties || []).forEach((property) => {
152155
resolveTypeNames(property, table);
@@ -172,6 +175,9 @@ function resolveTypeNames(metaModel, table) {
172175
case `${MetaModelNamespace}.ObjectMapValueType`: {
173176
metaModel.type.namespace = resolveName(metaModel.type.name, table);
174177
metaModel.type.name = table[metaModel.type.name].name;
178+
if (table[metaModel.type.name]?.resolvedName) {
179+
metaModel.type.resolvedName = table[metaModel.type.name].resolvedName;
180+
}
175181
}
176182
break;
177183
case `${MetaModelNamespace}.StringScalar`:
@@ -273,4 +279,4 @@ module.exports = {
273279
resolveLocalNamesForAll,
274280
importFullyQualifiedNames,
275281
getExternalImports,
276-
};
282+
};

0 commit comments

Comments
 (0)