Skip to content

Commit 7599235

Browse files
committed
update
1 parent b4586cc commit 7599235

File tree

2 files changed

+12
-18
lines changed

2 files changed

+12
-18
lines changed

packages/ide/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "zenstack-v3",
33
"publisher": "zenstack",
4-
"version": "3.0.8",
4+
"version": "3.0.9",
55
"displayName": "ZenStack V3 Language Tools",
66
"description": "VSCode extension for ZenStack (v3) ZModel language",
77
"private": true,

packages/language/src/zmodel-linker.ts

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
type LangiumDocument,
1111
type LinkingError,
1212
type Reference,
13+
type ReferenceInfo,
1314
interruptAndCheck,
1415
} from 'langium';
1516
import { match } from 'ts-pattern';
@@ -93,31 +94,22 @@ export class ZModelLinker extends DefaultLinker {
9394
document.state = DocumentState.Linked;
9495
}
9596

96-
private linkReference(
97-
container: AstNode,
98-
property: string,
99-
document: LangiumDocument,
100-
extraScopes: ScopeProvider[],
101-
) {
102-
if (this.resolveFromScopeProviders(container, property, document, extraScopes)) {
97+
private linkReference(refInfo: ReferenceInfo, document: LangiumDocument, extraScopes: ScopeProvider[]) {
98+
if (this.resolveFromScopeProviders(refInfo.reference, document, extraScopes)) {
10399
return;
104100
}
105-
106-
const reference: DefaultReference = (container as any)[property];
107-
this.doLink({ reference, container, property }, document);
101+
this.doLink(refInfo, document);
108102
}
109103

110104
//#endregion
111105

112106
//#region Expression type resolving
113107

114108
private resolveFromScopeProviders(
115-
node: AstNode,
116-
property: string,
109+
reference: DefaultReference,
117110
document: LangiumDocument,
118111
providers: ScopeProvider[],
119112
) {
120-
const reference: DefaultReference = (node as any)[property];
121113
for (const provider of providers) {
122114
const target = provider(reference.$refText);
123115
if (target) {
@@ -275,7 +267,7 @@ export class ZModelLinker extends DefaultLinker {
275267
}
276268

277269
private resolveInvocation(node: InvocationExpr, document: LangiumDocument, extraScopes: ScopeProvider[]) {
278-
this.linkReference(node, 'function', document, extraScopes);
270+
this.linkReference({ reference: node.function, container: node, property: 'function' }, document, extraScopes);
279271
node.args.forEach((arg) => this.resolve(arg, document, extraScopes));
280272
if (node.function.ref) {
281273
const funcDecl = node.function.ref as FunctionDecl;
@@ -400,7 +392,7 @@ export class ZModelLinker extends DefaultLinker {
400392
if (isArrayExpr(node.value)) {
401393
node.value.items.forEach((item) => {
402394
if (isReferenceExpr(item)) {
403-
const resolved = this.resolveFromScopeProviders(item, 'target', document, [scopeProvider]);
395+
const resolved = this.resolveFromScopeProviders(item.target, document, [scopeProvider]);
404396
if (resolved) {
405397
this.resolveToDeclaredType(item, (resolved as DataField).type);
406398
} else {
@@ -413,7 +405,7 @@ export class ZModelLinker extends DefaultLinker {
413405
this.resolveToBuiltinTypeOrDecl(node.value, node.value.items[0].$resolvedType.decl, true);
414406
}
415407
} else if (isReferenceExpr(node.value)) {
416-
const resolved = this.resolveFromScopeProviders(node.value, 'target', document, [scopeProvider]);
408+
const resolved = this.resolveFromScopeProviders(node.value.target, document, [scopeProvider]);
417409
if (resolved) {
418410
this.resolveToDeclaredType(node.value, (resolved as DataField).type);
419411
} else {
@@ -494,7 +486,9 @@ export class ZModelLinker extends DefaultLinker {
494486
}
495487

496488
private resolveDefault(node: AstNode, document: LangiumDocument<AstNode>, extraScopes: ScopeProvider[]) {
497-
AstUtils.streamReferences(node).forEach((ref) => this.doLink(ref, document));
489+
AstUtils.streamReferences(node).forEach((ref) => {
490+
this.linkReference(ref, document, extraScopes);
491+
});
498492
for (const child of AstUtils.streamContents(node)) {
499493
this.resolve(child, document, extraScopes);
500494
}

0 commit comments

Comments
 (0)