@typespec/compiler 1.16.0 → 1.17.0-dev.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/core/binder.d.ts +1 -1
  3. package/dist/src/core/binder.d.ts.map +1 -1
  4. package/dist/src/core/binder.js +33 -0
  5. package/dist/src/core/binder.js.map +1 -1
  6. package/dist/src/core/checker.d.ts.map +1 -1
  7. package/dist/src/core/checker.js +168 -53
  8. package/dist/src/core/checker.js.map +1 -1
  9. package/dist/src/core/features.d.ts +3 -0
  10. package/dist/src/core/features.d.ts.map +1 -1
  11. package/dist/src/core/features.js +3 -0
  12. package/dist/src/core/features.js.map +1 -1
  13. package/dist/src/core/helpers/type-name-utils.js +19 -3
  14. package/dist/src/core/helpers/type-name-utils.js.map +1 -1
  15. package/dist/src/core/inspector/node.js +6 -1
  16. package/dist/src/core/inspector/node.js.map +1 -1
  17. package/dist/src/core/messages.d.ts +38 -2
  18. package/dist/src/core/messages.d.ts.map +1 -1
  19. package/dist/src/core/messages.js +12 -0
  20. package/dist/src/core/messages.js.map +1 -1
  21. package/dist/src/core/modifiers.d.ts +9 -2
  22. package/dist/src/core/modifiers.d.ts.map +1 -1
  23. package/dist/src/core/modifiers.js +8 -0
  24. package/dist/src/core/modifiers.js.map +1 -1
  25. package/dist/src/core/name-resolver.d.ts.map +1 -1
  26. package/dist/src/core/name-resolver.js +30 -4
  27. package/dist/src/core/name-resolver.js.map +1 -1
  28. package/dist/src/core/parser.d.ts.map +1 -1
  29. package/dist/src/core/parser.js +257 -23
  30. package/dist/src/core/parser.js.map +1 -1
  31. package/dist/src/core/scanner.d.ts +5 -0
  32. package/dist/src/core/scanner.d.ts.map +1 -1
  33. package/dist/src/core/scanner.js +10 -0
  34. package/dist/src/core/scanner.js.map +1 -1
  35. package/dist/src/core/type-utils.d.ts.map +1 -1
  36. package/dist/src/core/type-utils.js +3 -0
  37. package/dist/src/core/type-utils.js.map +1 -1
  38. package/dist/src/core/types.d.ts +111 -14
  39. package/dist/src/core/types.d.ts.map +1 -1
  40. package/dist/src/core/types.js +4 -0
  41. package/dist/src/core/types.js.map +1 -1
  42. package/dist/src/formatter/print/comment-handler.js +11 -1
  43. package/dist/src/formatter/print/comment-handler.js.map +1 -1
  44. package/dist/src/formatter/print/printer.d.ts +2 -2
  45. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  46. package/dist/src/formatter/print/printer.js +106 -15
  47. package/dist/src/formatter/print/printer.js.map +1 -1
  48. package/dist/src/init/init.d.ts.map +1 -1
  49. package/dist/src/init/init.js +3 -1
  50. package/dist/src/init/init.js.map +1 -1
  51. package/dist/src/init/prompts.d.ts +1 -1
  52. package/dist/src/init/prompts.d.ts.map +1 -1
  53. package/dist/src/init/prompts.js +1 -1
  54. package/dist/src/init/prompts.js.map +1 -1
  55. package/dist/src/init/scaffold.d.ts.map +1 -1
  56. package/dist/src/init/scaffold.js +31 -3
  57. package/dist/src/init/scaffold.js.map +1 -1
  58. package/dist/src/init/template-source/in-memory-template-source.d.ts +1 -1
  59. package/dist/src/init/template-source/in-memory-template-source.d.ts.map +1 -1
  60. package/dist/src/init/template-source/in-memory-template-source.js +2 -1
  61. package/dist/src/init/template-source/in-memory-template-source.js.map +1 -1
  62. package/dist/src/init/template-source/types.d.ts +1 -0
  63. package/dist/src/init/template-source/types.d.ts.map +1 -1
  64. package/dist/src/init/template-source/types.js +10 -1
  65. package/dist/src/init/template-source/types.js.map +1 -1
  66. package/dist/src/init/template-source/uri-template-source.d.ts +1 -1
  67. package/dist/src/init/template-source/uri-template-source.d.ts.map +1 -1
  68. package/dist/src/init/template-source/uri-template-source.js +23 -2
  69. package/dist/src/init/template-source/uri-template-source.js.map +1 -1
  70. package/dist/src/module-resolver/utils.d.ts.map +1 -1
  71. package/dist/src/module-resolver/utils.js +6 -2
  72. package/dist/src/module-resolver/utils.js.map +1 -1
  73. package/dist/src/server/classify.d.ts.map +1 -1
  74. package/dist/src/server/classify.js +12 -4
  75. package/dist/src/server/classify.js.map +1 -1
  76. package/dist/src/server/completion.js +14 -1
  77. package/dist/src/server/completion.js.map +1 -1
  78. package/dist/src/server/tmlanguage.d.ts.map +1 -1
  79. package/dist/src/server/tmlanguage.js +69 -1
  80. package/dist/src/server/tmlanguage.js.map +1 -1
  81. package/dist/src/server/type-signature.js +4 -1
  82. package/dist/src/server/type-signature.js.map +1 -1
  83. package/dist/src/testing/tester.d.ts +11 -0
  84. package/dist/src/testing/tester.d.ts.map +1 -1
  85. package/dist/src/testing/tester.js +28 -3
  86. package/dist/src/testing/tester.js.map +1 -1
  87. package/dist/src/typekit/kits/enum.d.ts +14 -1
  88. package/dist/src/typekit/kits/enum.d.ts.map +1 -1
  89. package/dist/src/typekit/kits/enum.js +2 -1
  90. package/dist/src/typekit/kits/enum.js.map +1 -1
  91. package/dist/src/typekit/kits/model.d.ts +12 -1
  92. package/dist/src/typekit/kits/model.d.ts.map +1 -1
  93. package/dist/src/typekit/kits/model.js +3 -2
  94. package/dist/src/typekit/kits/model.js.map +1 -1
  95. package/dist/src/typekit/kits/union.d.ts +12 -1
  96. package/dist/src/typekit/kits/union.d.ts.map +1 -1
  97. package/dist/src/typekit/kits/union.js +3 -3
  98. package/dist/src/typekit/kits/union.js.map +1 -1
  99. package/dist/src/typekit/utils.d.ts.map +1 -1
  100. package/dist/src/typekit/utils.js +17 -0
  101. package/dist/src/typekit/utils.js.map +1 -1
  102. package/dist/typespec.tmLanguage +209 -37
  103. package/package.json +12 -9
@@ -36,7 +36,7 @@
36
36
  </dict>
37
37
  </dict>
38
38
  <key>end</key>
39
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
39
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
40
40
  <key>patterns</key>
41
41
  <array>
42
42
  <dict>
@@ -70,7 +70,7 @@
70
70
  </dict>
71
71
  </dict>
72
72
  <key>end</key>
73
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
73
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
74
74
  <key>patterns</key>
75
75
  <array>
76
76
  <dict>
@@ -103,7 +103,7 @@
103
103
  </dict>
104
104
  </dict>
105
105
  <key>end</key>
106
- <string>(?=([_$[:alpha:]]|`))|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
106
+ <string>(?=([_$[:alpha:]]|`))|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
107
107
  <key>patterns</key>
108
108
  <array>
109
109
  <dict>
@@ -202,7 +202,7 @@
202
202
  </dict>
203
203
  </dict>
204
204
  <key>end</key>
205
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
205
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
206
206
  <key>patterns</key>
207
207
  <array>
208
208
  <dict>
@@ -239,7 +239,7 @@
239
239
  </dict>
240
240
  </dict>
241
241
  <key>end</key>
242
- <string>(?=([_$[:alpha:]]|`))|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
242
+ <string>(?=([_$[:alpha:]]|`))|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
243
243
  <key>patterns</key>
244
244
  <array>
245
245
  <dict>
@@ -282,7 +282,7 @@
282
282
  </dict>
283
283
  </dict>
284
284
  <key>end</key>
285
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
285
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
286
286
  <key>patterns</key>
287
287
  <array>
288
288
  <dict>
@@ -315,7 +315,7 @@
315
315
  </dict>
316
316
  </dict>
317
317
  <key>end</key>
318
- <string>$|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
318
+ <string>$|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
319
319
  <key>patterns</key>
320
320
  <array>
321
321
  <dict>
@@ -491,6 +491,39 @@
491
491
  </dict>
492
492
  </array>
493
493
  </dict>
494
+ <key>enum-expression</key>
495
+ <dict>
496
+ <key>name</key>
497
+ <string>meta.enum-expression.typespec</string>
498
+ <key>begin</key>
499
+ <string>\b(enum)\b(?:\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`))?</string>
500
+ <key>beginCaptures</key>
501
+ <dict>
502
+ <key>1</key>
503
+ <dict>
504
+ <key>name</key>
505
+ <string>keyword.other.tsp</string>
506
+ </dict>
507
+ <key>2</key>
508
+ <dict>
509
+ <key>name</key>
510
+ <string>entity.name.type.tsp</string>
511
+ </dict>
512
+ </dict>
513
+ <key>end</key>
514
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
515
+ <key>patterns</key>
516
+ <array>
517
+ <dict>
518
+ <key>include</key>
519
+ <string>#token</string>
520
+ </dict>
521
+ <dict>
522
+ <key>include</key>
523
+ <string>#enum-body</string>
524
+ </dict>
525
+ </array>
526
+ </dict>
494
527
  <key>enum-member</key>
495
528
  <dict>
496
529
  <key>name</key>
@@ -511,7 +544,7 @@
511
544
  </dict>
512
545
  </dict>
513
546
  <key>end</key>
514
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
547
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
515
548
  <key>patterns</key>
516
549
  <array>
517
550
  <dict>
@@ -549,7 +582,7 @@
549
582
  </dict>
550
583
  </dict>
551
584
  <key>end</key>
552
- <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
585
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
553
586
  <key>patterns</key>
554
587
  <array>
555
588
  <dict>
@@ -609,6 +642,22 @@
609
642
  <key>include</key>
610
643
  <string>#tuple-expression</string>
611
644
  </dict>
645
+ <dict>
646
+ <key>include</key>
647
+ <string>#model-expression-keyword</string>
648
+ </dict>
649
+ <dict>
650
+ <key>include</key>
651
+ <string>#scalar-expression</string>
652
+ </dict>
653
+ <dict>
654
+ <key>include</key>
655
+ <string>#enum-expression</string>
656
+ </dict>
657
+ <dict>
658
+ <key>include</key>
659
+ <string>#union-expression</string>
660
+ </dict>
612
661
  <dict>
613
662
  <key>include</key>
614
663
  <string>#model-expression</string>
@@ -653,7 +702,7 @@
653
702
  </dict>
654
703
  </dict>
655
704
  <key>end</key>
656
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
705
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
657
706
  <key>patterns</key>
658
707
  <array>
659
708
  <dict>
@@ -692,7 +741,7 @@
692
741
  </dict>
693
742
  </dict>
694
743
  <key>end</key>
695
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
744
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
696
745
  <key>patterns</key>
697
746
  <array>
698
747
  <dict>
@@ -764,7 +813,7 @@
764
813
  </dict>
765
814
  </dict>
766
815
  <key>end</key>
767
- <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
816
+ <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b))</string>
768
817
  <key>patterns</key>
769
818
  <array>
770
819
  <dict>
@@ -797,7 +846,7 @@
797
846
  </dict>
798
847
  </dict>
799
848
  <key>end</key>
800
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
849
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
801
850
  <key>patterns</key>
802
851
  <array>
803
852
  <dict>
@@ -830,7 +879,7 @@
830
879
  </dict>
831
880
  </dict>
832
881
  <key>end</key>
833
- <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
882
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
834
883
  <key>patterns</key>
835
884
  <array>
836
885
  <dict>
@@ -914,6 +963,47 @@
914
963
  </dict>
915
964
  </array>
916
965
  </dict>
966
+ <key>model-expression-keyword</key>
967
+ <dict>
968
+ <key>name</key>
969
+ <string>meta.model-expression-keyword.typespec</string>
970
+ <key>begin</key>
971
+ <string>\b(model)\b(?:\s+(?!extends\b|is\b)(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`))?</string>
972
+ <key>beginCaptures</key>
973
+ <dict>
974
+ <key>1</key>
975
+ <dict>
976
+ <key>name</key>
977
+ <string>keyword.other.tsp</string>
978
+ </dict>
979
+ <key>2</key>
980
+ <dict>
981
+ <key>name</key>
982
+ <string>entity.name.type.tsp</string>
983
+ </dict>
984
+ </dict>
985
+ <key>end</key>
986
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
987
+ <key>patterns</key>
988
+ <array>
989
+ <dict>
990
+ <key>include</key>
991
+ <string>#token</string>
992
+ </dict>
993
+ <dict>
994
+ <key>include</key>
995
+ <string>#type-parameters</string>
996
+ </dict>
997
+ <dict>
998
+ <key>include</key>
999
+ <string>#model-heritage</string>
1000
+ </dict>
1001
+ <dict>
1002
+ <key>include</key>
1003
+ <string>#expression</string>
1004
+ </dict>
1005
+ </array>
1006
+ </dict>
917
1007
  <key>model-heritage</key>
918
1008
  <dict>
919
1009
  <key>name</key>
@@ -929,7 +1019,7 @@
929
1019
  </dict>
930
1020
  </dict>
931
1021
  <key>end</key>
932
- <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
1022
+ <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b))</string>
933
1023
  <key>patterns</key>
934
1024
  <array>
935
1025
  <dict>
@@ -962,7 +1052,7 @@
962
1052
  </dict>
963
1053
  </dict>
964
1054
  <key>end</key>
965
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1055
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
966
1056
  <key>patterns</key>
967
1057
  <array>
968
1058
  <dict>
@@ -1003,7 +1093,7 @@
1003
1093
  </dict>
1004
1094
  </dict>
1005
1095
  <key>end</key>
1006
- <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1096
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1007
1097
  <key>patterns</key>
1008
1098
  <array>
1009
1099
  <dict>
@@ -1063,7 +1153,7 @@
1063
1153
  <key>begin</key>
1064
1154
  <string>(?=([_$[:alpha:]]|`))</string>
1065
1155
  <key>end</key>
1066
- <string>((?=\{)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
1156
+ <string>((?=\{)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b))</string>
1067
1157
  <key>patterns</key>
1068
1158
  <array>
1069
1159
  <dict>
@@ -1091,7 +1181,7 @@
1091
1181
  </dict>
1092
1182
  </dict>
1093
1183
  <key>end</key>
1094
- <string>((?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
1184
+ <string>((?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b))</string>
1095
1185
  <key>patterns</key>
1096
1186
  <array>
1097
1187
  <dict>
@@ -1183,7 +1273,7 @@
1183
1273
  </dict>
1184
1274
  </dict>
1185
1275
  <key>end</key>
1186
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1276
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1187
1277
  <key>patterns</key>
1188
1278
  <array>
1189
1279
  <dict>
@@ -1211,7 +1301,7 @@
1211
1301
  </dict>
1212
1302
  </dict>
1213
1303
  <key>end</key>
1214
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1304
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1215
1305
  <key>patterns</key>
1216
1306
  <array>
1217
1307
  <dict>
@@ -1315,7 +1405,7 @@
1315
1405
  </dict>
1316
1406
  </dict>
1317
1407
  <key>end</key>
1318
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1408
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1319
1409
  <key>patterns</key>
1320
1410
  <array>
1321
1411
  <dict>
@@ -1456,7 +1546,7 @@
1456
1546
  </dict>
1457
1547
  </dict>
1458
1548
  <key>end</key>
1459
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1549
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1460
1550
  <key>patterns</key>
1461
1551
  <array>
1462
1552
  <dict>
@@ -1469,6 +1559,47 @@
1469
1559
  </dict>
1470
1560
  </array>
1471
1561
  </dict>
1562
+ <key>scalar-expression</key>
1563
+ <dict>
1564
+ <key>name</key>
1565
+ <string>meta.scalar-expression.typespec</string>
1566
+ <key>begin</key>
1567
+ <string>\b(scalar)\b(?:\s+(?!extends\b)(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`))?</string>
1568
+ <key>beginCaptures</key>
1569
+ <dict>
1570
+ <key>1</key>
1571
+ <dict>
1572
+ <key>name</key>
1573
+ <string>keyword.other.tsp</string>
1574
+ </dict>
1575
+ <key>2</key>
1576
+ <dict>
1577
+ <key>name</key>
1578
+ <string>entity.name.type.tsp</string>
1579
+ </dict>
1580
+ </dict>
1581
+ <key>end</key>
1582
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1583
+ <key>patterns</key>
1584
+ <array>
1585
+ <dict>
1586
+ <key>include</key>
1587
+ <string>#token</string>
1588
+ </dict>
1589
+ <dict>
1590
+ <key>include</key>
1591
+ <string>#type-parameters</string>
1592
+ </dict>
1593
+ <dict>
1594
+ <key>include</key>
1595
+ <string>#scalar-extends</string>
1596
+ </dict>
1597
+ <dict>
1598
+ <key>include</key>
1599
+ <string>#scalar-body</string>
1600
+ </dict>
1601
+ </array>
1602
+ </dict>
1472
1603
  <key>scalar-extends</key>
1473
1604
  <dict>
1474
1605
  <key>name</key>
@@ -1484,7 +1615,7 @@
1484
1615
  </dict>
1485
1616
  </dict>
1486
1617
  <key>end</key>
1487
- <string>(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1618
+ <string>(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1488
1619
  <key>patterns</key>
1489
1620
  <array>
1490
1621
  <dict>
@@ -1522,7 +1653,7 @@
1522
1653
  </dict>
1523
1654
  </dict>
1524
1655
  <key>end</key>
1525
- <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1656
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1526
1657
  <key>patterns</key>
1527
1658
  <array>
1528
1659
  <dict>
@@ -1558,7 +1689,7 @@
1558
1689
  </dict>
1559
1690
  </dict>
1560
1691
  <key>end</key>
1561
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1692
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1562
1693
  <key>patterns</key>
1563
1694
  <array>
1564
1695
  <dict>
@@ -1839,7 +1970,7 @@
1839
1970
  </dict>
1840
1971
  </dict>
1841
1972
  <key>end</key>
1842
- <string>(?=,|;|@|\)|\}|=|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1973
+ <string>(?=,|;|@|\)|\}|=|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1843
1974
  <key>patterns</key>
1844
1975
  <array>
1845
1976
  <dict>
@@ -1868,7 +1999,7 @@
1868
1999
  </dict>
1869
2000
  </dict>
1870
2001
  <key>end</key>
1871
- <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2002
+ <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1872
2003
  <key>endCaptures</key>
1873
2004
  <dict>
1874
2005
  <key>0</key>
@@ -1948,7 +2079,7 @@
1948
2079
  </dict>
1949
2080
  </dict>
1950
2081
  <key>end</key>
1951
- <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2082
+ <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1952
2083
  <key>patterns</key>
1953
2084
  <array>
1954
2085
  <dict>
@@ -1980,7 +2111,7 @@
1980
2111
  </dict>
1981
2112
  </dict>
1982
2113
  <key>end</key>
1983
- <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2114
+ <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
1984
2115
  <key>patterns</key>
1985
2116
  <array>
1986
2117
  <dict>
@@ -2004,7 +2135,7 @@
2004
2135
  </dict>
2005
2136
  </dict>
2006
2137
  <key>end</key>
2007
- <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2138
+ <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2008
2139
  <key>patterns</key>
2009
2140
  <array>
2010
2141
  <dict>
@@ -2064,7 +2195,7 @@
2064
2195
  </dict>
2065
2196
  </dict>
2066
2197
  <key>end</key>
2067
- <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2198
+ <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2068
2199
  <key>patterns</key>
2069
2200
  <array>
2070
2201
  <dict>
@@ -2125,6 +2256,47 @@
2125
2256
  </dict>
2126
2257
  </array>
2127
2258
  </dict>
2259
+ <key>union-expression</key>
2260
+ <dict>
2261
+ <key>name</key>
2262
+ <string>meta.union-expression.typespec</string>
2263
+ <key>begin</key>
2264
+ <string>\b(union)\b(?:\s+(?!extends\b)(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`))?</string>
2265
+ <key>beginCaptures</key>
2266
+ <dict>
2267
+ <key>1</key>
2268
+ <dict>
2269
+ <key>name</key>
2270
+ <string>keyword.other.tsp</string>
2271
+ </dict>
2272
+ <key>2</key>
2273
+ <dict>
2274
+ <key>name</key>
2275
+ <string>entity.name.type.tsp</string>
2276
+ </dict>
2277
+ </dict>
2278
+ <key>end</key>
2279
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2280
+ <key>patterns</key>
2281
+ <array>
2282
+ <dict>
2283
+ <key>include</key>
2284
+ <string>#token</string>
2285
+ </dict>
2286
+ <dict>
2287
+ <key>include</key>
2288
+ <string>#type-parameters</string>
2289
+ </dict>
2290
+ <dict>
2291
+ <key>include</key>
2292
+ <string>#union-extends</string>
2293
+ </dict>
2294
+ <dict>
2295
+ <key>include</key>
2296
+ <string>#union-body</string>
2297
+ </dict>
2298
+ </array>
2299
+ </dict>
2128
2300
  <key>union-extends</key>
2129
2301
  <dict>
2130
2302
  <key>name</key>
@@ -2140,7 +2312,7 @@
2140
2312
  </dict>
2141
2313
  </dict>
2142
2314
  <key>end</key>
2143
- <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b))</string>
2315
+ <string>((?=\{)|(?=;|@|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b))</string>
2144
2316
  <key>patterns</key>
2145
2317
  <array>
2146
2318
  <dict>
@@ -2178,7 +2350,7 @@
2178
2350
  </dict>
2179
2351
  </dict>
2180
2352
  <key>end</key>
2181
- <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2353
+ <string>(?&lt;=\})|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2182
2354
  <key>patterns</key>
2183
2355
  <array>
2184
2356
  <dict>
@@ -2219,7 +2391,7 @@
2219
2391
  </dict>
2220
2392
  </dict>
2221
2393
  <key>end</key>
2222
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2394
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2223
2395
  <key>patterns</key>
2224
2396
  <array>
2225
2397
  <dict>
@@ -2247,7 +2419,7 @@
2247
2419
  </dict>
2248
2420
  </dict>
2249
2421
  <key>end</key>
2250
- <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2422
+ <string>(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2251
2423
  <key>patterns</key>
2252
2424
  <array>
2253
2425
  <dict>
@@ -2279,7 +2451,7 @@
2279
2451
  </dict>
2280
2452
  </dict>
2281
2453
  <key>end</key>
2282
- <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2454
+ <string>(?=&gt;)|(?=,|;|@|#[a-z]|\)|\}|\b(?:extern|internal)\b|\b(?:namespace|op|using|import|alias|interface|dec|fn)\b)</string>
2283
2455
  <key>patterns</key>
2284
2456
  <array>
2285
2457
  <dict>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/compiler",
3
- "version": "1.16.0",
3
+ "version": "1.17.0-dev.10",
4
4
  "description": "TypeSpec compiler and standard library",
5
5
  "author": "Microsoft Corporation",
6
6
  "license": "MIT",
@@ -87,8 +87,11 @@
87
87
  "!dist/test/**"
88
88
  ],
89
89
  "dependencies": {
90
- "@babel/code-frame": "^7.29.0",
91
- "@inquirer/prompts": "^8.6.0",
90
+ "@babel/code-frame": "^8.0.0",
91
+ "@inquirer/checkbox": "^5.2.2",
92
+ "@inquirer/confirm": "^6.2.0",
93
+ "@inquirer/input": "^5.1.3",
94
+ "@inquirer/select": "^5.2.2",
92
95
  "ajv": "^8.20.0",
93
96
  "change-case": "^5.4.4",
94
97
  "env-paths": "^4.0.0",
@@ -110,16 +113,16 @@
110
113
  "@types/node": "^26.3.0",
111
114
  "@types/semver": "^7.8.0",
112
115
  "@types/yargs": "^17.0.35",
113
- "@vitest/coverage-v8": "^4.1.11",
114
- "@vitest/ui": "^4.1.11",
116
+ "@typespec/internal-build-utils": "^0.86.0 || >= 0.87.0-dev.0",
117
+ "@vitest/coverage-v8": "^5.0.0",
118
+ "@vitest/ui": "^5.0.0",
115
119
  "pathe": "^2.0.3",
116
120
  "rimraf": "^6.1.3",
121
+ "tmlanguage-generator": "^0.6.8 || >= 0.6.9-dev.8",
117
122
  "typescript": "~6.0.2",
118
- "vitest": "^4.1.11",
123
+ "vitest": "^5.0.0",
119
124
  "vscode-oniguruma": "^2.0.1",
120
- "vscode-textmate": "^9.3.2",
121
- "@typespec/internal-build-utils": "^0.86.0",
122
- "tmlanguage-generator": "^0.6.8"
125
+ "vscode-textmate": "^9.3.2"
123
126
  },
124
127
  "scripts": {
125
128
  "clean": "rimraf ./dist ./temp",