Skip to content

Commit 15f3f74

Browse files
committed
TM: Re-add typeof/typefrom/evaltype/vatype matching
1 parent 7dc5f1d commit 15f3f74

File tree

2 files changed

+92
-6
lines changed

2 files changed

+92
-6
lines changed

syntaxes/c3.tmLanguage.json

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,10 +1199,41 @@
11991199
"name": "support.type.c3"
12001200
}
12011201
},
1202-
"end": "(?=[^\\s{])",
1202+
"end": "(?=[^*\\[?\\s{])",
12031203
"patterns": [
12041204
{
12051205
"include": "#generic_params"
1206+
},
1207+
{
1208+
"include": "#type_suffix"
1209+
}
1210+
]
1211+
},
1212+
{
1213+
"begin": "(\\$(?:typeof|typefrom|evaltype))\\b\\s*\\(",
1214+
"beginCaptures": {
1215+
"1": {
1216+
"name": "storage.type.c3"
1217+
}
1218+
},
1219+
"end": "\\)",
1220+
"patterns": [
1221+
{
1222+
"include": "#expression"
1223+
}
1224+
]
1225+
},
1226+
{
1227+
"begin": "(\\$(?:vatype))\\b\\s*\\[",
1228+
"beginCaptures": {
1229+
"1": {
1230+
"name": "storage.type.c3"
1231+
}
1232+
},
1233+
"end": "\\]",
1234+
"patterns": [
1235+
{
1236+
"include": "#expression"
12061237
}
12071238
]
12081239
},
@@ -1226,13 +1257,41 @@
12261257
"name": "support.type.c3"
12271258
}
12281259
},
1229-
"end": "(?![*\\[?\\s])",
1260+
"end": "(?=[^*\\[?\\s])",
12301261
"patterns": [
12311262
{
12321263
"include": "#type_suffix"
12331264
}
12341265
]
12351266
},
1267+
{
1268+
"begin": "(\\$(?:typeof|typefrom|evaltype))\\b\\s*\\(",
1269+
"beginCaptures": {
1270+
"1": {
1271+
"name": "storage.type.c3"
1272+
}
1273+
},
1274+
"end": "\\)",
1275+
"patterns": [
1276+
{
1277+
"include": "#expression"
1278+
}
1279+
]
1280+
},
1281+
{
1282+
"begin": "(\\$(?:vatype))\\b\\s*\\[",
1283+
"beginCaptures": {
1284+
"1": {
1285+
"name": "storage.type.c3"
1286+
}
1287+
},
1288+
"end": "\\]",
1289+
"patterns": [
1290+
{
1291+
"include": "#expression"
1292+
}
1293+
]
1294+
},
12361295
{
12371296
"include": "#type_suffix"
12381297
}

syntaxes/c3.tmLanguage.yml

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -609,11 +609,24 @@ repository:
609609
#1: { name: storage.type.built-in.c3 }
610610
#1: { name: storage.type.primitive.c3 }
611611
2: { name: support.type.c3 }
612-
#end: (?![*\[?\s{])
613-
end: (?=[^\s{])
612+
end: (?=[^*\[?\s{])
614613
patterns:
615614
- include: "#generic_params"
616-
#- include: "#type_suffix"
615+
- include: "#type_suffix"
616+
617+
- begin: '(\$(?:typeof|typefrom|evaltype))\b\s*\(' # TODO using \s* doesn't match over multiple lines
618+
beginCaptures:
619+
1: { name: storage.type.c3 }
620+
end: \)
621+
patterns:
622+
- include: "#expression"
623+
624+
- begin: '(\$(?:vatype))\b\s*\[' # TODO using \s* doesn't match over multiple lines
625+
beginCaptures:
626+
1: { name: storage.type.c3 }
627+
end: \]
628+
patterns:
629+
- include: "#expression"
617630

618631
# Matching type suffix after typeof/typefrom etc. is too hard so just do generic matches here
619632
- include: "#type_suffix"
@@ -629,10 +642,24 @@ repository:
629642
#1: { name: storage.type.built-in.c3 }
630643
#1: { name: storage.type.primitive.c3 }
631644
2: { name: support.type.c3 }
632-
end: (?![*\[?\s])
645+
end: (?=[^*\[?\s])
633646
patterns:
634647
- include: "#type_suffix"
635648

649+
- begin: '(\$(?:typeof|typefrom|evaltype))\b\s*\(' # TODO using \s* doesn't match over multiple lines
650+
beginCaptures:
651+
1: { name: storage.type.c3 }
652+
end: \)
653+
patterns:
654+
- include: "#expression"
655+
656+
- begin: '(\$(?:vatype))\b\s*\[' # TODO using \s* doesn't match over multiple lines
657+
beginCaptures:
658+
1: { name: storage.type.c3 }
659+
end: \]
660+
patterns:
661+
- include: "#expression"
662+
636663
# Matching type suffix after typeof/typefrom etc. is too hard so just do generic matches here
637664
- include: "#type_suffix"
638665

0 commit comments

Comments
 (0)