@typespec/compiler 0.57.0-dev.0 → 0.57.0-dev.5

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 (194) hide show
  1. package/dist/generated-defs/TypeSpec.d.ts +9 -9
  2. package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
  3. package/dist/manifest.js +2 -2
  4. package/dist/src/config/types.d.ts +2 -2
  5. package/dist/src/config/types.d.ts.map +1 -1
  6. package/dist/src/core/binder.d.ts +1 -1
  7. package/dist/src/core/binder.d.ts.map +1 -1
  8. package/dist/src/core/binder.js +16 -3
  9. package/dist/src/core/binder.js.map +1 -1
  10. package/dist/src/core/checker.d.ts +11 -9
  11. package/dist/src/core/checker.d.ts.map +1 -1
  12. package/dist/src/core/checker.js +1577 -241
  13. package/dist/src/core/checker.js.map +1 -1
  14. package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.d.ts +6 -0
  15. package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.d.ts.map +1 -0
  16. package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.js +15 -0
  17. package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.js.map +1 -0
  18. package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.d.ts +6 -0
  19. package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.d.ts.map +1 -0
  20. package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.js +15 -0
  21. package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.js.map +1 -0
  22. package/dist/src/core/decorator-utils.d.ts +5 -1
  23. package/dist/src/core/decorator-utils.d.ts.map +1 -1
  24. package/dist/src/core/decorator-utils.js +11 -1
  25. package/dist/src/core/decorator-utils.js.map +1 -1
  26. package/dist/src/core/deprecation.d.ts +1 -1
  27. package/dist/src/core/deprecation.d.ts.map +1 -1
  28. package/dist/src/core/diagnostic-creator.d.ts.map +1 -1
  29. package/dist/src/core/diagnostic-creator.js +1 -2
  30. package/dist/src/core/diagnostic-creator.js.map +1 -1
  31. package/dist/src/core/diagnostics.js +3 -3
  32. package/dist/src/core/diagnostics.js.map +1 -1
  33. package/dist/src/core/emitter-utils.d.ts +1 -1
  34. package/dist/src/core/emitter-utils.d.ts.map +1 -1
  35. package/dist/src/core/helpers/discriminator-utils.d.ts +2 -2
  36. package/dist/src/core/helpers/discriminator-utils.d.ts.map +1 -1
  37. package/dist/src/core/helpers/discriminator-utils.js +1 -1
  38. package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
  39. package/dist/src/core/helpers/index.d.ts +1 -1
  40. package/dist/src/core/helpers/index.d.ts.map +1 -1
  41. package/dist/src/core/helpers/index.js +3 -1
  42. package/dist/src/core/helpers/index.js.map +1 -1
  43. package/dist/src/core/helpers/location-context.d.ts +2 -2
  44. package/dist/src/core/helpers/location-context.d.ts.map +1 -1
  45. package/dist/src/core/helpers/projected-names-utils.d.ts +2 -2
  46. package/dist/src/core/helpers/projected-names-utils.d.ts.map +1 -1
  47. package/dist/src/core/helpers/projected-names-utils.js.map +1 -1
  48. package/dist/src/core/helpers/string-template-utils.d.ts +6 -6
  49. package/dist/src/core/helpers/string-template-utils.d.ts.map +1 -1
  50. package/dist/src/core/helpers/string-template-utils.js +20 -33
  51. package/dist/src/core/helpers/string-template-utils.js.map +1 -1
  52. package/dist/src/core/helpers/type-name-utils.d.ts +3 -2
  53. package/dist/src/core/helpers/type-name-utils.d.ts.map +1 -1
  54. package/dist/src/core/helpers/type-name-utils.js +57 -8
  55. package/dist/src/core/helpers/type-name-utils.js.map +1 -1
  56. package/dist/src/core/index.d.ts +4 -1
  57. package/dist/src/core/index.d.ts.map +1 -1
  58. package/dist/src/core/index.js +4 -1
  59. package/dist/src/core/index.js.map +1 -1
  60. package/dist/src/core/intrinsic-type-state.d.ts +63 -0
  61. package/dist/src/core/intrinsic-type-state.d.ts.map +1 -0
  62. package/dist/src/core/intrinsic-type-state.js +160 -0
  63. package/dist/src/core/intrinsic-type-state.js.map +1 -0
  64. package/dist/src/core/js-marshaller.d.ts +13 -0
  65. package/dist/src/core/js-marshaller.d.ts.map +1 -0
  66. package/dist/src/core/js-marshaller.js +79 -0
  67. package/dist/src/core/js-marshaller.js.map +1 -0
  68. package/dist/src/core/library.d.ts +2 -1
  69. package/dist/src/core/library.d.ts.map +1 -1
  70. package/dist/src/core/library.js +3 -0
  71. package/dist/src/core/library.js.map +1 -1
  72. package/dist/src/core/linter.d.ts +1 -1
  73. package/dist/src/core/linter.d.ts.map +1 -1
  74. package/dist/src/core/linter.js +1 -1
  75. package/dist/src/core/linter.js.map +1 -1
  76. package/dist/src/core/messages.d.ts +235 -2
  77. package/dist/src/core/messages.d.ts.map +1 -1
  78. package/dist/src/core/messages.js +74 -1
  79. package/dist/src/core/messages.js.map +1 -1
  80. package/dist/src/core/numeric-ranges.d.ts +51 -0
  81. package/dist/src/core/numeric-ranges.d.ts.map +1 -0
  82. package/dist/src/core/numeric-ranges.js +30 -0
  83. package/dist/src/core/numeric-ranges.js.map +1 -0
  84. package/dist/src/core/parser.d.ts.map +1 -1
  85. package/dist/src/core/parser.js +232 -5
  86. package/dist/src/core/parser.js.map +1 -1
  87. package/dist/src/core/program.d.ts +2 -45
  88. package/dist/src/core/program.d.ts.map +1 -1
  89. package/dist/src/core/program.js +3 -127
  90. package/dist/src/core/program.js.map +1 -1
  91. package/dist/src/core/projected-program.d.ts +3 -0
  92. package/dist/src/core/projected-program.d.ts.map +1 -0
  93. package/dist/src/core/projected-program.js +4 -0
  94. package/dist/src/core/projected-program.js.map +1 -0
  95. package/dist/src/core/projection-members.d.ts +2 -2
  96. package/dist/src/core/projection-members.d.ts.map +1 -1
  97. package/dist/src/core/projector.d.ts +2 -2
  98. package/dist/src/core/projector.d.ts.map +1 -1
  99. package/dist/src/core/projector.js +12 -3
  100. package/dist/src/core/projector.js.map +1 -1
  101. package/dist/src/core/scanner.d.ts +42 -37
  102. package/dist/src/core/scanner.d.ts.map +1 -1
  103. package/dist/src/core/scanner.js +67 -46
  104. package/dist/src/core/scanner.js.map +1 -1
  105. package/dist/src/core/semantic-walker.d.ts +1 -1
  106. package/dist/src/core/semantic-walker.d.ts.map +1 -1
  107. package/dist/src/core/semantic-walker.js +12 -0
  108. package/dist/src/core/semantic-walker.js.map +1 -1
  109. package/dist/src/core/state-accessors.d.ts +46 -0
  110. package/dist/src/core/state-accessors.d.ts.map +1 -0
  111. package/dist/src/core/state-accessors.js +123 -0
  112. package/dist/src/core/state-accessors.js.map +1 -0
  113. package/dist/src/core/type-utils.d.ts +18 -7
  114. package/dist/src/core/type-utils.d.ts.map +1 -1
  115. package/dist/src/core/type-utils.js +24 -5
  116. package/dist/src/core/type-utils.js.map +1 -1
  117. package/dist/src/core/types.d.ts +224 -45
  118. package/dist/src/core/types.d.ts.map +1 -1
  119. package/dist/src/core/types.js +8 -0
  120. package/dist/src/core/types.js.map +1 -1
  121. package/dist/src/emitter-framework/asset-emitter.d.ts +1 -1
  122. package/dist/src/emitter-framework/asset-emitter.d.ts.map +1 -1
  123. package/dist/src/emitter-framework/asset-emitter.js +4 -1
  124. package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
  125. package/dist/src/emitter-framework/ref-scope.d.ts +1 -1
  126. package/dist/src/emitter-framework/ref-scope.d.ts.map +1 -1
  127. package/dist/src/emitter-framework/reference-cycle.d.ts +2 -2
  128. package/dist/src/emitter-framework/reference-cycle.d.ts.map +1 -1
  129. package/dist/src/emitter-framework/reference-cycle.js +1 -1
  130. package/dist/src/emitter-framework/reference-cycle.js.map +1 -1
  131. package/dist/src/emitter-framework/type-emitter.d.ts +2 -1
  132. package/dist/src/emitter-framework/type-emitter.d.ts.map +1 -1
  133. package/dist/src/emitter-framework/type-emitter.js +10 -2
  134. package/dist/src/emitter-framework/type-emitter.js.map +1 -1
  135. package/dist/src/emitter-framework/types.d.ts +2 -2
  136. package/dist/src/emitter-framework/types.d.ts.map +1 -1
  137. package/dist/src/formatter/print/comment-handler.d.ts.map +1 -1
  138. package/dist/src/formatter/print/comment-handler.js +22 -0
  139. package/dist/src/formatter/print/comment-handler.js.map +1 -1
  140. package/dist/src/formatter/print/printer.d.ts +11 -5
  141. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  142. package/dist/src/formatter/print/printer.js +95 -4
  143. package/dist/src/formatter/print/printer.js.map +1 -1
  144. package/dist/src/init/file-templating.d.ts +2 -2
  145. package/dist/src/init/file-templating.d.ts.map +1 -1
  146. package/dist/src/lib/decorators.d.ts +3 -55
  147. package/dist/src/lib/decorators.d.ts.map +1 -1
  148. package/dist/src/lib/decorators.js +30 -124
  149. package/dist/src/lib/decorators.js.map +1 -1
  150. package/dist/src/lib/encoded-names.d.ts +2 -2
  151. package/dist/src/lib/encoded-names.d.ts.map +1 -1
  152. package/dist/src/lib/intrinsic-decorators.d.ts +2 -2
  153. package/dist/src/lib/intrinsic-decorators.d.ts.map +1 -1
  154. package/dist/src/lib/intrinsic-decorators.js +7 -0
  155. package/dist/src/lib/intrinsic-decorators.js.map +1 -1
  156. package/dist/src/lib/service.d.ts +1 -1
  157. package/dist/src/lib/service.d.ts.map +1 -1
  158. package/dist/src/server/classify.d.ts.map +1 -1
  159. package/dist/src/server/classify.js +10 -0
  160. package/dist/src/server/classify.js.map +1 -1
  161. package/dist/src/server/completion.d.ts.map +1 -1
  162. package/dist/src/server/completion.js +6 -0
  163. package/dist/src/server/completion.js.map +1 -1
  164. package/dist/src/server/serverlib.js +2 -2
  165. package/dist/src/server/serverlib.js.map +1 -1
  166. package/dist/src/server/tmlanguage.d.ts +1 -1
  167. package/dist/src/server/tmlanguage.d.ts.map +1 -1
  168. package/dist/src/server/tmlanguage.js +147 -20
  169. package/dist/src/server/tmlanguage.js.map +1 -1
  170. package/dist/src/server/type-details.js +1 -2
  171. package/dist/src/server/type-details.js.map +1 -1
  172. package/dist/src/server/type-signature.js +15 -6
  173. package/dist/src/server/type-signature.js.map +1 -1
  174. package/dist/src/server/types.d.ts +1 -1
  175. package/dist/src/server/types.d.ts.map +1 -1
  176. package/dist/src/testing/expect.js +1 -1
  177. package/dist/src/testing/expect.js.map +1 -1
  178. package/dist/src/testing/rule-tester.d.ts.map +1 -1
  179. package/dist/src/testing/rule-tester.js +1 -2
  180. package/dist/src/testing/rule-tester.js.map +1 -1
  181. package/dist/src/testing/test-host.d.ts +1 -2
  182. package/dist/src/testing/test-host.d.ts.map +1 -1
  183. package/dist/src/testing/test-host.js +1 -8
  184. package/dist/src/testing/test-host.js.map +1 -1
  185. package/dist/src/testing/test-server-host.d.ts.map +1 -1
  186. package/dist/src/testing/test-server-host.js +2 -1
  187. package/dist/src/testing/test-server-host.js.map +1 -1
  188. package/dist/src/testing/test-utils.d.ts +1 -0
  189. package/dist/src/testing/test-utils.d.ts.map +1 -1
  190. package/dist/src/testing/test-utils.js +7 -0
  191. package/dist/src/testing/test-utils.js.map +1 -1
  192. package/dist/typespec.tmLanguage +408 -17
  193. package/lib/intrinsics.tsp +55 -5
  194. package/package.json +1 -1
@@ -21,18 +21,18 @@
21
21
  </array>
22
22
  <key>repository</key>
23
23
  <dict>
24
- <key>alias-statement</key>
24
+ <key>alias-id</key>
25
25
  <dict>
26
26
  <key>name</key>
27
- <string>meta.alias-statement.typespec</string>
27
+ <string>meta.alias-id.typespec</string>
28
28
  <key>begin</key>
29
- <string>\b(alias)\b</string>
29
+ <string>(=)\s*</string>
30
30
  <key>beginCaptures</key>
31
31
  <dict>
32
32
  <key>1</key>
33
33
  <dict>
34
34
  <key>name</key>
35
- <string>keyword.other.tsp</string>
35
+ <string>keyword.operator.assignment.tsp</string>
36
36
  </dict>
37
37
  </dict>
38
38
  <key>end</key>
@@ -41,15 +41,40 @@
41
41
  <array>
42
42
  <dict>
43
43
  <key>include</key>
44
- <string>#type-parameters</string>
44
+ <string>#expression</string>
45
+ </dict>
46
+ </array>
47
+ </dict>
48
+ <key>alias-statement</key>
49
+ <dict>
50
+ <key>name</key>
51
+ <string>meta.alias-statement.typespec</string>
52
+ <key>begin</key>
53
+ <string>\b(alias)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`)\s*</string>
54
+ <key>beginCaptures</key>
55
+ <dict>
56
+ <key>1</key>
57
+ <dict>
58
+ <key>name</key>
59
+ <string>keyword.other.tsp</string>
60
+ </dict>
61
+ <key>2</key>
62
+ <dict>
63
+ <key>name</key>
64
+ <string>entity.name.type.tsp</string>
45
65
  </dict>
66
+ </dict>
67
+ <key>end</key>
68
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
69
+ <key>patterns</key>
70
+ <array>
46
71
  <dict>
47
72
  <key>include</key>
48
- <string>#operator-assignment</string>
73
+ <string>#alias-id</string>
49
74
  </dict>
50
75
  <dict>
51
76
  <key>include</key>
52
- <string>#expression</string>
77
+ <string>#type-parameters</string>
53
78
  </dict>
54
79
  </array>
55
80
  </dict>
@@ -58,7 +83,7 @@
58
83
  <key>name</key>
59
84
  <string>meta.augment-decorator-statement.typespec</string>
60
85
  <key>begin</key>
61
- <string>((@@)\b[_$[:alpha:]]([_$[:alnum:]]|\.[_$[:alpha:]])*\b)</string>
86
+ <string>((@@)\b[_$[:alpha:]](?:[_$[:alnum:]]|\.[_$[:alpha:]])*\b)</string>
62
87
  <key>beginCaptures</key>
63
88
  <dict>
64
89
  <key>1</key>
@@ -102,12 +127,94 @@
102
127
  <key>match</key>
103
128
  <string>\b(true|false)\b</string>
104
129
  </dict>
130
+ <key>callExpression</key>
131
+ <dict>
132
+ <key>name</key>
133
+ <string>meta.callExpression.typespec</string>
134
+ <key>begin</key>
135
+ <string>(\b[_$[:alpha:]](?:[_$[:alnum:]]|\.[_$[:alpha:]])*\b)\s*(\()</string>
136
+ <key>beginCaptures</key>
137
+ <dict>
138
+ <key>1</key>
139
+ <dict>
140
+ <key>name</key>
141
+ <string>entity.name.function.tsp</string>
142
+ </dict>
143
+ <key>2</key>
144
+ <dict>
145
+ <key>name</key>
146
+ <string>punctuation.parenthesis.open.tsp</string>
147
+ </dict>
148
+ </dict>
149
+ <key>end</key>
150
+ <string>\)</string>
151
+ <key>endCaptures</key>
152
+ <dict>
153
+ <key>0</key>
154
+ <dict>
155
+ <key>name</key>
156
+ <string>punctuation.parenthesis.close.tsp</string>
157
+ </dict>
158
+ </dict>
159
+ <key>patterns</key>
160
+ <array>
161
+ <dict>
162
+ <key>include</key>
163
+ <string>#token</string>
164
+ </dict>
165
+ <dict>
166
+ <key>include</key>
167
+ <string>#expression</string>
168
+ </dict>
169
+ <dict>
170
+ <key>include</key>
171
+ <string>#punctuation-comma</string>
172
+ </dict>
173
+ </array>
174
+ </dict>
175
+ <key>const-statement</key>
176
+ <dict>
177
+ <key>name</key>
178
+ <string>meta.const-statement.typespec</string>
179
+ <key>begin</key>
180
+ <string>\b(const)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`)</string>
181
+ <key>beginCaptures</key>
182
+ <dict>
183
+ <key>1</key>
184
+ <dict>
185
+ <key>name</key>
186
+ <string>keyword.other.tsp</string>
187
+ </dict>
188
+ <key>2</key>
189
+ <dict>
190
+ <key>name</key>
191
+ <string>variable.name.tsp</string>
192
+ </dict>
193
+ </dict>
194
+ <key>end</key>
195
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
196
+ <key>patterns</key>
197
+ <array>
198
+ <dict>
199
+ <key>include</key>
200
+ <string>#type-annotation</string>
201
+ </dict>
202
+ <dict>
203
+ <key>include</key>
204
+ <string>#operator-assignment</string>
205
+ </dict>
206
+ <dict>
207
+ <key>include</key>
208
+ <string>#expression</string>
209
+ </dict>
210
+ </array>
211
+ </dict>
105
212
  <key>decorator</key>
106
213
  <dict>
107
214
  <key>name</key>
108
215
  <string>meta.decorator.typespec</string>
109
216
  <key>begin</key>
110
- <string>((@)\b[_$[:alpha:]]([_$[:alnum:]]|\.[_$[:alpha:]])*\b)</string>
217
+ <string>((@)\b[_$[:alpha:]](?:[_$[:alnum:]]|\.[_$[:alpha:]])*\b)</string>
111
218
  <key>beginCaptures</key>
112
219
  <dict>
113
220
  <key>1</key>
@@ -518,10 +625,22 @@
518
625
  <key>include</key>
519
626
  <string>#valueof</string>
520
627
  </dict>
628
+ <dict>
629
+ <key>include</key>
630
+ <string>#typeof</string>
631
+ </dict>
521
632
  <dict>
522
633
  <key>include</key>
523
634
  <string>#type-arguments</string>
524
635
  </dict>
636
+ <dict>
637
+ <key>include</key>
638
+ <string>#object-literal</string>
639
+ </dict>
640
+ <dict>
641
+ <key>include</key>
642
+ <string>#tuple-literal</string>
643
+ </dict>
525
644
  <dict>
526
645
  <key>include</key>
527
646
  <string>#tuple-expression</string>
@@ -530,6 +649,10 @@
530
649
  <key>include</key>
531
650
  <string>#model-expression</string>
532
651
  </dict>
652
+ <dict>
653
+ <key>include</key>
654
+ <string>#callExpression</string>
655
+ </dict>
533
656
  <dict>
534
657
  <key>include</key>
535
658
  <string>#identifier-expression</string>
@@ -1078,6 +1201,87 @@
1078
1201
  <key>match</key>
1079
1202
  <string>(?:\b(?&lt;!\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\b(?!\$)|\b(?&lt;!\$)0(?:b|B)[01][01_]*(n)?\b(?!\$)|(?&lt;!\$)(?:(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(\.)[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\B(\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(\.)[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(\.)(n)?\B)|(?:\B(\.)[0-9][0-9_]*(n)?\b)|(?:\b[0-9][0-9_]*(n)?\b(?!\.)))(?!\$))</string>
1080
1203
  </dict>
1204
+ <key>object-literal</key>
1205
+ <dict>
1206
+ <key>name</key>
1207
+ <string>meta.object-literal.typespec</string>
1208
+ <key>begin</key>
1209
+ <string>#\{</string>
1210
+ <key>beginCaptures</key>
1211
+ <dict>
1212
+ <key>0</key>
1213
+ <dict>
1214
+ <key>name</key>
1215
+ <string>punctuation.hashcurlybrace.open.tsp</string>
1216
+ </dict>
1217
+ </dict>
1218
+ <key>end</key>
1219
+ <string>\}</string>
1220
+ <key>endCaptures</key>
1221
+ <dict>
1222
+ <key>0</key>
1223
+ <dict>
1224
+ <key>name</key>
1225
+ <string>punctuation.curlybrace.close.tsp</string>
1226
+ </dict>
1227
+ </dict>
1228
+ <key>patterns</key>
1229
+ <array>
1230
+ <dict>
1231
+ <key>include</key>
1232
+ <string>#token</string>
1233
+ </dict>
1234
+ <dict>
1235
+ <key>include</key>
1236
+ <string>#object-literal-property</string>
1237
+ </dict>
1238
+ <dict>
1239
+ <key>include</key>
1240
+ <string>#directive</string>
1241
+ </dict>
1242
+ <dict>
1243
+ <key>include</key>
1244
+ <string>#spread-operator</string>
1245
+ </dict>
1246
+ <dict>
1247
+ <key>include</key>
1248
+ <string>#punctuation-comma</string>
1249
+ </dict>
1250
+ </array>
1251
+ </dict>
1252
+ <key>object-literal-property</key>
1253
+ <dict>
1254
+ <key>name</key>
1255
+ <string>meta.object-literal-property.typespec</string>
1256
+ <key>begin</key>
1257
+ <string>(?:(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`)\s*(:))</string>
1258
+ <key>beginCaptures</key>
1259
+ <dict>
1260
+ <key>1</key>
1261
+ <dict>
1262
+ <key>name</key>
1263
+ <string>variable.name.tsp</string>
1264
+ </dict>
1265
+ <key>2</key>
1266
+ <dict>
1267
+ <key>name</key>
1268
+ <string>keyword.operator.type.annotation.tsp</string>
1269
+ </dict>
1270
+ </dict>
1271
+ <key>end</key>
1272
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1273
+ <key>patterns</key>
1274
+ <array>
1275
+ <dict>
1276
+ <key>include</key>
1277
+ <string>#token</string>
1278
+ </dict>
1279
+ <dict>
1280
+ <key>include</key>
1281
+ <string>#expression</string>
1282
+ </dict>
1283
+ </array>
1284
+ </dict>
1081
1285
  <key>operation-heritage</key>
1082
1286
  <dict>
1083
1287
  <key>name</key>
@@ -1481,6 +1685,83 @@
1481
1685
  <key>match</key>
1482
1686
  <string>;</string>
1483
1687
  </dict>
1688
+ <key>scalar-body</key>
1689
+ <dict>
1690
+ <key>name</key>
1691
+ <string>meta.scalar-body.typespec</string>
1692
+ <key>begin</key>
1693
+ <string>\{</string>
1694
+ <key>beginCaptures</key>
1695
+ <dict>
1696
+ <key>0</key>
1697
+ <dict>
1698
+ <key>name</key>
1699
+ <string>punctuation.curlybrace.open.tsp</string>
1700
+ </dict>
1701
+ </dict>
1702
+ <key>end</key>
1703
+ <string>\}</string>
1704
+ <key>endCaptures</key>
1705
+ <dict>
1706
+ <key>0</key>
1707
+ <dict>
1708
+ <key>name</key>
1709
+ <string>punctuation.curlybrace.close.tsp</string>
1710
+ </dict>
1711
+ </dict>
1712
+ <key>patterns</key>
1713
+ <array>
1714
+ <dict>
1715
+ <key>include</key>
1716
+ <string>#token</string>
1717
+ </dict>
1718
+ <dict>
1719
+ <key>include</key>
1720
+ <string>#directive</string>
1721
+ </dict>
1722
+ <dict>
1723
+ <key>include</key>
1724
+ <string>#scalar-constructor</string>
1725
+ </dict>
1726
+ <dict>
1727
+ <key>include</key>
1728
+ <string>#punctuation-semicolon</string>
1729
+ </dict>
1730
+ </array>
1731
+ </dict>
1732
+ <key>scalar-constructor</key>
1733
+ <dict>
1734
+ <key>name</key>
1735
+ <string>meta.scalar-constructor.typespec</string>
1736
+ <key>begin</key>
1737
+ <string>\b(init)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`)</string>
1738
+ <key>beginCaptures</key>
1739
+ <dict>
1740
+ <key>1</key>
1741
+ <dict>
1742
+ <key>name</key>
1743
+ <string>keyword.other.tsp</string>
1744
+ </dict>
1745
+ <key>2</key>
1746
+ <dict>
1747
+ <key>name</key>
1748
+ <string>entity.name.function.tsp</string>
1749
+ </dict>
1750
+ </dict>
1751
+ <key>end</key>
1752
+ <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1753
+ <key>patterns</key>
1754
+ <array>
1755
+ <dict>
1756
+ <key>include</key>
1757
+ <string>#token</string>
1758
+ </dict>
1759
+ <dict>
1760
+ <key>include</key>
1761
+ <string>#operation-parameters</string>
1762
+ </dict>
1763
+ </array>
1764
+ </dict>
1484
1765
  <key>scalar-extends</key>
1485
1766
  <dict>
1486
1767
  <key>name</key>
@@ -1514,7 +1795,7 @@
1514
1795
  <key>name</key>
1515
1796
  <string>meta.scalar-statement.typespec</string>
1516
1797
  <key>begin</key>
1517
- <string>\b(scalar)\b</string>
1798
+ <string>\b(scalar)\b\s+(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`)</string>
1518
1799
  <key>beginCaptures</key>
1519
1800
  <dict>
1520
1801
  <key>1</key>
@@ -1522,9 +1803,14 @@
1522
1803
  <key>name</key>
1523
1804
  <string>keyword.other.tsp</string>
1524
1805
  </dict>
1806
+ <key>2</key>
1807
+ <dict>
1808
+ <key>name</key>
1809
+ <string>entity.name.type.tsp</string>
1810
+ </dict>
1525
1811
  </dict>
1526
1812
  <key>end</key>
1527
- <string>(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1813
+ <string>(?&lt;=\})|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
1528
1814
  <key>patterns</key>
1529
1815
  <array>
1530
1816
  <dict>
@@ -1541,7 +1827,7 @@
1541
1827
  </dict>
1542
1828
  <dict>
1543
1829
  <key>include</key>
1544
- <string>#expression</string>
1830
+ <string>#scalar-body</string>
1545
1831
  </dict>
1546
1832
  </array>
1547
1833
  </dict>
@@ -1613,6 +1899,10 @@
1613
1899
  <key>include</key>
1614
1900
  <string>#alias-statement</string>
1615
1901
  </dict>
1902
+ <dict>
1903
+ <key>include</key>
1904
+ <string>#const-statement</string>
1905
+ </dict>
1616
1906
  <dict>
1617
1907
  <key>include</key>
1618
1908
  <string>#namespace-statement</string>
@@ -1785,6 +2075,42 @@
1785
2075
  </dict>
1786
2076
  </array>
1787
2077
  </dict>
2078
+ <key>tuple-literal</key>
2079
+ <dict>
2080
+ <key>name</key>
2081
+ <string>meta.tuple-literal.typespec</string>
2082
+ <key>begin</key>
2083
+ <string>#\[</string>
2084
+ <key>beginCaptures</key>
2085
+ <dict>
2086
+ <key>0</key>
2087
+ <dict>
2088
+ <key>name</key>
2089
+ <string>punctuation.hashsquarebracket.open.tsp</string>
2090
+ </dict>
2091
+ </dict>
2092
+ <key>end</key>
2093
+ <string>\]</string>
2094
+ <key>endCaptures</key>
2095
+ <dict>
2096
+ <key>0</key>
2097
+ <dict>
2098
+ <key>name</key>
2099
+ <string>punctuation.squarebracket.close.tsp</string>
2100
+ </dict>
2101
+ </dict>
2102
+ <key>patterns</key>
2103
+ <array>
2104
+ <dict>
2105
+ <key>include</key>
2106
+ <string>#expression</string>
2107
+ </dict>
2108
+ <dict>
2109
+ <key>include</key>
2110
+ <string>#punctuation-comma</string>
2111
+ </dict>
2112
+ </array>
2113
+ </dict>
1788
2114
  <key>type-annotation</key>
1789
2115
  <dict>
1790
2116
  <key>name</key>
@@ -1814,6 +2140,51 @@
1814
2140
  </dict>
1815
2141
  </array>
1816
2142
  </dict>
2143
+ <key>type-argument</key>
2144
+ <dict>
2145
+ <key>name</key>
2146
+ <string>meta.type-argument.typespec</string>
2147
+ <key>begin</key>
2148
+ <string>(?:(\b[_$[:alpha:]][_$[:alnum:]]*\b|`(?:[^`\\]|\\.)*`)\s*(=))</string>
2149
+ <key>beginCaptures</key>
2150
+ <dict>
2151
+ <key>1</key>
2152
+ <dict>
2153
+ <key>name</key>
2154
+ <string>entity.name.type.tsp</string>
2155
+ </dict>
2156
+ <key>2</key>
2157
+ <dict>
2158
+ <key>name</key>
2159
+ <string>keyword.operator.assignment.tsp</string>
2160
+ </dict>
2161
+ </dict>
2162
+ <key>end</key>
2163
+ <string>=</string>
2164
+ <key>endCaptures</key>
2165
+ <dict>
2166
+ <key>0</key>
2167
+ <dict>
2168
+ <key>name</key>
2169
+ <string>keyword.operator.assignment.tsp</string>
2170
+ </dict>
2171
+ </dict>
2172
+ <key>patterns</key>
2173
+ <array>
2174
+ <dict>
2175
+ <key>include</key>
2176
+ <string>#token</string>
2177
+ </dict>
2178
+ <dict>
2179
+ <key>include</key>
2180
+ <string>#expression</string>
2181
+ </dict>
2182
+ <dict>
2183
+ <key>include</key>
2184
+ <string>#punctuation-comma</string>
2185
+ </dict>
2186
+ </array>
2187
+ </dict>
1817
2188
  <key>type-arguments</key>
1818
2189
  <dict>
1819
2190
  <key>name</key>
@@ -1842,11 +2213,7 @@
1842
2213
  <array>
1843
2214
  <dict>
1844
2215
  <key>include</key>
1845
- <string>#identifier-expression</string>
1846
- </dict>
1847
- <dict>
1848
- <key>include</key>
1849
- <string>#operator-assignment</string>
2216
+ <string>#type-argument</string>
1850
2217
  </dict>
1851
2218
  <dict>
1852
2219
  <key>include</key>
@@ -1974,6 +2341,30 @@
1974
2341
  </dict>
1975
2342
  </array>
1976
2343
  </dict>
2344
+ <key>typeof</key>
2345
+ <dict>
2346
+ <key>name</key>
2347
+ <string>meta.typeof.typespec</string>
2348
+ <key>begin</key>
2349
+ <string>\b(typeof)</string>
2350
+ <key>beginCaptures</key>
2351
+ <dict>
2352
+ <key>1</key>
2353
+ <dict>
2354
+ <key>name</key>
2355
+ <string>keyword.other.tsp</string>
2356
+ </dict>
2357
+ </dict>
2358
+ <key>end</key>
2359
+ <string>(?=&gt;)|(?=,|;|@|\)|\}|\b(?:extern)\b|\b(?:namespace|model|op|using|import|enum|alias|union|interface|dec|fn)\b)</string>
2360
+ <key>patterns</key>
2361
+ <array>
2362
+ <dict>
2363
+ <key>include</key>
2364
+ <string>#expression</string>
2365
+ </dict>
2366
+ </array>
2367
+ </dict>
1977
2368
  <key>union-body</key>
1978
2369
  <dict>
1979
2370
  <key>name</key>
@@ -98,27 +98,77 @@ scalar string;
98
98
  /**
99
99
  * A date on a calendar without a time zone, e.g. "April 10th"
100
100
  */
101
- scalar plainDate;
101
+ scalar plainDate {
102
+ /**
103
+ * Create a plain date from an ISO 8601 string.
104
+ * @example
105
+ *
106
+ * ```tsp
107
+ * const time = plainTime.fromISO("2024-05-06");
108
+ * ```
109
+ */
110
+ init fromISO(value: string);
111
+ }
102
112
 
103
113
  /**
104
114
  * A time on a clock without a time zone, e.g. "3:00 am"
105
115
  */
106
- scalar plainTime;
116
+ scalar plainTime {
117
+ /**
118
+ * Create a plain time from an ISO 8601 string.
119
+ * @example
120
+ *
121
+ * ```tsp
122
+ * const time = plainTime.fromISO("12:34");
123
+ * ```
124
+ */
125
+ init fromISO(value: string);
126
+ }
107
127
 
108
128
  /**
109
129
  * An instant in coordinated universal time (UTC)"
110
130
  */
111
- scalar utcDateTime;
131
+ scalar utcDateTime {
132
+ /**
133
+ * Create a date from an ISO 8601 string.
134
+ * @example
135
+ *
136
+ * ```tsp
137
+ * const time = utcDateTime.fromISO("2024-05-06T12:20-12Z");
138
+ * ```
139
+ */
140
+ init fromISO(value: string);
141
+ }
112
142
 
113
143
  /**
114
144
  * A date and time in a particular time zone, e.g. "April 10th at 3:00am in PST"
115
145
  */
116
- scalar offsetDateTime;
146
+ scalar offsetDateTime {
147
+ /**
148
+ * Create a date from an ISO 8601 string.
149
+ * @example
150
+ *
151
+ * ```tsp
152
+ * const time = offsetDateTime.fromISO("2024-05-06T12:20-12-0700");
153
+ * ```
154
+ */
155
+ init fromISO(value: string);
156
+ }
117
157
 
118
158
  /**
119
159
  * A duration/time period. e.g 5s, 10h
120
160
  */
121
- scalar duration;
161
+ scalar duration {
162
+ /**
163
+ * Create a duration from an ISO 8601 string.
164
+ * @example
165
+ *
166
+ * ```tsp
167
+ * const time = duration.fromISO("P1Y1D");
168
+ * ```
169
+ */
170
+ init fromISO(value: string);
171
+ }
122
172
 
123
173
  /**
124
174
  * Boolean with `true` and `false` values.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/compiler",
3
- "version": "0.57.0-dev.0",
3
+ "version": "0.57.0-dev.5",
4
4
  "description": "TypeSpec Compiler Preview",
5
5
  "author": "Microsoft Corporation",
6
6
  "license": "MIT",