From 776fd61aad1d355309c8fb197e145e63ddb8c126 Mon Sep 17 00:00:00 2001 From: Eliot Date: Tue, 23 Jul 2024 23:46:20 +0200 Subject: [PATCH] Coerce the type of a Object.Class field reference to be treated as a meta class. --- server/src/UC/expressions.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/src/UC/expressions.ts b/server/src/UC/expressions.ts index 5a04a4c..b7ba6f0 100644 --- a/server/src/UC/expressions.ts +++ b/server/src/UC/expressions.ts @@ -808,9 +808,10 @@ export class UCMemberExpression extends UCExpression { } } else if (member.getName() === NAME_CLASS && areIdentityMatch(member.outer, IntrinsicObject)) { const classContext = getContext(context, UCSymbolKind.Class)!; - const coercedType = new UCObjectTypeSymbol(this.id, undefined, undefined, ModifierFlags.ReadOnly); - const coercedType = new UCObjectTypeSymbol(this.id); - coercedType.setRefNoIndex(classContext); + const coercedType = new UCObjectTypeSymbol(IntrinsicClass.id, undefined, UCSymbolKind.Class, ModifierFlags.ReadOnly); + coercedType.baseType = new UCObjectTypeSymbol(classContext.id, undefined, UCSymbolKind.Class, ModifierFlags.ReadOnly); + (coercedType.baseType as UCObjectTypeSymbol).setRefNoIndex(classContext); + coercedType.setRefNoIndex(IntrinsicClass); this.coercedType = coercedType; } else if (member.getName() === NAME_OUTER && areIdentityMatch(member.outer, IntrinsicObject)) { const classContext = getContext(context, UCSymbolKind.Class)!;