Skip to content

Commit d17a85c

Browse files
committed
fix: supporting using type names as reference target as well
1 parent 5a13d8b commit d17a85c

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

packages/language/src/generated/grammar.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ export const ZModelGrammar = (): Grammar => loadedZModelGrammar ?? (loadedZModel
956956
"terminal": {
957957
"$type": "RuleCall",
958958
"rule": {
959-
"$ref": "#/rules@46"
959+
"$ref": "#/rules@47"
960960
},
961961
"arguments": []
962962
},

packages/language/src/zmodel.langium

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ NullExpr:
7474
value='null';
7575

7676
ReferenceExpr:
77-
target=[ReferenceTarget:RegularID] ('(' ReferenceArgList ')')?;
77+
target=[ReferenceTarget:RegularIDWithTypeNames] ('(' ReferenceArgList ')')?;
7878

7979
fragment ReferenceArgList:
8080
args+=ReferenceArg (',' args+=ReferenceArg)*;

packages/schema/tests/schema/parser.test.ts

+18
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,24 @@ describe('Parsing Tests', () => {
8787
expect((attrVal.value as ReferenceExpr).target.ref?.name).toBe('USER');
8888
});
8989

90+
it('enum fields named with type name', async () => {
91+
const content = `
92+
enum MyEnum {
93+
DateTime
94+
Int
95+
String
96+
}
97+
98+
model User {
99+
id String @id
100+
role MyEnum @default(DateTime)
101+
102+
@@allow('all', role == String)
103+
}
104+
`;
105+
await loadModel(content);
106+
});
107+
90108
it('enum dup name resolve', async () => {
91109
const content = `
92110
datasource db {

0 commit comments

Comments
 (0)