File tree Expand file tree Collapse file tree 3 files changed +14
-5
lines changed
schema/src/language-server Expand file tree Collapse file tree 3 files changed +14
-5
lines changed Original file line number Diff line number Diff line change 2
2
3
3
## [ Unreleased]
4
4
5
+ ### Fixed
6
+
7
+ - Proper semantic highlighting and formatting for type declarations.
8
+
9
+ ## 2.9.0
10
+
5
11
### Added
6
12
7
13
- Support for using ` @@validate ` attribute inside type declarations.
Original file line number Diff line number Diff line change @@ -26,8 +26,8 @@ export class ZModelFormatter extends AbstractFormatter {
26
26
protected format ( node : AstNode ) : void {
27
27
const formatter = this . getNodeFormatter ( node ) ;
28
28
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 ) ) ) {
31
31
const dataModel = node . $container ;
32
32
33
33
const compareFn = ( a : number , b : number ) => b - a ;
@@ -104,14 +104,14 @@ export class ZModelFormatter extends AbstractFormatter {
104
104
this . isPrismaStyle = isPrismaStyle ;
105
105
}
106
106
107
- private getFieldTypeLength ( field : ast . DataModelField ) {
107
+ private getFieldTypeLength ( field : ast . DataModelField | ast . TypeDefField ) {
108
108
let length : number ;
109
109
110
110
if ( field . type . type ) {
111
111
length = field . type . type . length ;
112
112
} else if ( field . type . reference ) {
113
113
length = field . type . reference . $refText . length ;
114
- } else if ( field . type . unsupported ) {
114
+ } else if ( ast . isDataModelField ( field ) && field . type . unsupported ) {
115
115
const name = `Unsupported("${ field . type . unsupported . value . value } ")` ;
116
116
length = name . length ;
117
117
} else {
Original file line number Diff line number Diff line change @@ -18,6 +18,8 @@ import {
18
18
isPlugin ,
19
19
isPluginField ,
20
20
isReferenceExpr ,
21
+ isTypeDef ,
22
+ isTypeDefField ,
21
23
} from '@zenstackhq/language/ast' ;
22
24
import { AbstractSemanticTokenProvider , AstNode , SemanticTokenAcceptor } from 'langium' ;
23
25
import { SemanticTokenTypes } from 'vscode-languageserver' ;
@@ -36,14 +38,15 @@ export class ZModelSemanticTokenProvider extends AbstractSemanticTokenProvider {
36
38
property : 'superTypes' ,
37
39
type : SemanticTokenTypes . type ,
38
40
} ) ;
39
- } else if ( isDataSource ( node ) || isGeneratorDecl ( node ) || isPlugin ( node ) || isEnum ( node ) ) {
41
+ } else if ( isDataSource ( node ) || isGeneratorDecl ( node ) || isPlugin ( node ) || isEnum ( node ) || isTypeDef ( node ) ) {
40
42
acceptor ( {
41
43
node,
42
44
property : 'name' ,
43
45
type : SemanticTokenTypes . type ,
44
46
} ) ;
45
47
} else if (
46
48
isDataModelField ( node ) ||
49
+ isTypeDefField ( node ) ||
47
50
isConfigField ( node ) ||
48
51
isAttributeArg ( node ) ||
49
52
isPluginField ( node ) ||
You can’t perform that action at this time.
0 commit comments