Skip to content

Commit edd5a7c

Browse files
Add Mode A brand type for finite string literal brands.
Introduce contextual `brand type Name = Lit | Lit` with dual type/value binding, synthesized `.is`/`.from`, runtime companion emit, and nominal assignability that still accepts matching string literals. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent f29aeb9 commit edd5a7c

32 files changed

Lines changed: 1146 additions & 196 deletions

packages/typescript/src/ast/ast.generated.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ export type KeywordSyntaxKind =
159159
| SyntaxKind.BigIntKeyword
160160
| SyntaxKind.OverrideKeyword
161161
| SyntaxKind.OfKeyword
162+
| SyntaxKind.BrandKeyword
162163
| SyntaxKind.DeferKeyword;
163164
export type ModifierSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.ConstKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.ExportKeyword | SyntaxKind.InKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.StaticKeyword;
164165
export type KeywordTypeSyntaxKind = SyntaxKind.AnyKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VoidKeyword;
@@ -330,6 +331,7 @@ export type TokenSyntaxKind =
330331
| SyntaxKind.BigIntKeyword
331332
| SyntaxKind.OverrideKeyword
332333
| SyntaxKind.OfKeyword
334+
| SyntaxKind.BrandKeyword
333335
| SyntaxKind.DeferKeyword;
334336
export type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFile | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
335337
export type JSDocNodeSyntaxKind =

tools/scripts/tsc/ast.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@
195195
"BigIntKeyword",
196196
"OverrideKeyword",
197197
"OfKeyword",
198+
"BrandKeyword",
198199
{
199200
"name": "DeferKeyword",
200201
"comment": "LastKeyword and LastToken and LastContextualKeyword"

tsc/internal/api/encoder/decoder_generated.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tsc/internal/ast/ast_generated.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)