Skip to content

Commit b7c6c87

Browse files
authored
fix: proper semantic highlighting and formatting for type declarations (#1883)
1 parent 83936da commit b7c6c87

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

packages/ide/jetbrains/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## [Unreleased]
44

5+
### Fixed
6+
7+
- Proper semantic highlighting and formatting for type declarations.
8+
9+
## 2.9.0
10+
511
### Added
612

713
- Support for using `@@validate` attribute inside type declarations.

packages/schema/src/language-server/zmodel-formatter.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ export class ZModelFormatter extends AbstractFormatter {
2626
protected format(node: AstNode): void {
2727
const formatter = this.getNodeFormatter(node);
2828

29-
if (ast.isDataModelField(node)) {
30-
if (this.isPrismaStyle && ast.isDataModel(node.$container)) {
29+
if (ast.isDataModelField(node) || ast.isTypeDefField(node)) {
30+
if (this.isPrismaStyle && (ast.isDataModel(node.$container) || ast.isTypeDef(node.$container))) {
3131
const dataModel = node.$container;
3232

3333
const compareFn = (a: number, b: number) => b - a;
@@ -104,14 +104,14 @@ export class ZModelFormatter extends AbstractFormatter {
104104
this.isPrismaStyle = isPrismaStyle;
105105
}
106106

107-
private getFieldTypeLength(field: ast.DataModelField) {
107+
private getFieldTypeLength(field: ast.DataModelField | ast.TypeDefField) {
108108
let length: number;
109109

110110
if (field.type.type) {
111111
length = field.type.type.length;
112112
} else if (field.type.reference) {
113113
length = field.type.reference.$refText.length;
114-
} else if (field.type.unsupported) {
114+
} else if (ast.isDataModelField(field) && field.type.unsupported) {
115115
const name = `Unsupported("${field.type.unsupported.value.value}")`;
116116
length = name.length;
117117
} else {

packages/schema/src/language-server/zmodel-semantic.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import {
1818
isPlugin,
1919
isPluginField,
2020
isReferenceExpr,
21+
isTypeDef,
22+
isTypeDefField,
2123
} from '@zenstackhq/language/ast';
2224
import { AbstractSemanticTokenProvider, AstNode, SemanticTokenAcceptor } from 'langium';
2325
import { SemanticTokenTypes } from 'vscode-languageserver';
@@ -36,14 +38,15 @@ export class ZModelSemanticTokenProvider extends AbstractSemanticTokenProvider {
3638
property: 'superTypes',
3739
type: SemanticTokenTypes.type,
3840
});
39-
} else if (isDataSource(node) || isGeneratorDecl(node) || isPlugin(node) || isEnum(node)) {
41+
} else if (isDataSource(node) || isGeneratorDecl(node) || isPlugin(node) || isEnum(node) || isTypeDef(node)) {
4042
acceptor({
4143
node,
4244
property: 'name',
4345
type: SemanticTokenTypes.type,
4446
});
4547
} else if (
4648
isDataModelField(node) ||
49+
isTypeDefField(node) ||
4750
isConfigField(node) ||
4851
isAttributeArg(node) ||
4952
isPluginField(node) ||

0 commit comments

Comments
 (0)