diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index 6038af80..923085fe 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -2156,6 +2156,8 @@ repository: - include: '#type-fn-type-parameters' - include: '#type-paren-or-function-parameters' - include: '#type-function-return-type' + - name: storage.modifier.ts + match: '{{startOfIdentifier}}(readonly){{endOfIdentifier}}' - include: '#type-name' type-primitive: diff --git a/TypeScript.tmLanguage b/TypeScript.tmLanguage index e328d902..df63b58e 100644 --- a/TypeScript.tmLanguage +++ b/TypeScript.tmLanguage @@ -6519,6 +6519,12 @@ include #type-function-return-type + + name + storage.modifier.ts + match + (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)) + include #type-name diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage index 48073b1a..207b2f76 100644 --- a/TypeScriptReact.tmLanguage +++ b/TypeScriptReact.tmLanguage @@ -6465,6 +6465,12 @@ include #type-function-return-type + + name + storage.modifier.tsx + match + (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(readonly)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)) + include #type-name diff --git a/tests/baselines/readonlyModifier.baseline.txt b/tests/baselines/readonlyModifier.baseline.txt new file mode 100644 index 00000000..0f69e0b0 --- /dev/null +++ b/tests/baselines/readonlyModifier.baseline.txt @@ -0,0 +1,246 @@ +original file +----------------------------------- +function f1(mt: [number, number], rt: readonly [number, number]) { +} + +function f2(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) { +} + +type ReadWrite = { -readonly [P in keyof T] : T[P] }; +----------------------------------- + +Grammar: TypeScript.tmLanguage +----------------------------------- +>function f1(mt: [number, number], rt: readonly [number, number]) { + ^^^^^^^^ + source.ts meta.function.ts storage.type.function.ts + ^ + source.ts meta.function.ts + ^^ + source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts + ^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^^^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts storage.modifier.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts + ^ + source.ts meta.function.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts +>} + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts +> + ^ + source.ts +>function f2(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) { + ^^^^^^^^ + source.ts meta.function.ts storage.type.function.ts + ^ + source.ts meta.function.ts + ^^ + source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts + ^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^^^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts storage.modifier.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts + ^^ + source.ts meta.function.ts meta.parameters.ts variable.parameter.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^^^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts storage.modifier.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts punctuation.separator.comma.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts + ^^^^^^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts support.type.primitive.ts + ^ + source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts + ^ + source.ts meta.function.ts + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts +>} + ^ + source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts +> + ^ + source.ts +>type ReadWrite = { -readonly [P in keyof T] : T[P] }; + ^^^^ + source.ts meta.type.declaration.ts storage.type.type.ts + ^ + source.ts meta.type.declaration.ts + ^^^^^^^^^ + source.ts meta.type.declaration.ts entity.name.type.alias.ts + ^ + source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts + ^ + source.ts meta.type.declaration.ts meta.type.parameters.ts entity.name.type.ts + ^ + source.ts meta.type.declaration.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts + ^ + source.ts meta.type.declaration.ts + ^ + source.ts meta.type.declaration.ts keyword.operator.assignment.ts + ^ + source.ts meta.type.declaration.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts punctuation.definition.block.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts keyword.operator.type.modifier.ts + ^^^^^^^^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts storage.modifier.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts meta.brace.square.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts entity.name.type.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts + ^^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts keyword.operator.expression.in.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts + ^^^^^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts keyword.operator.expression.keyof.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts entity.name.type.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts meta.brace.square.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.indexer.mappedtype.declaration.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts keyword.operator.type.annotation.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts entity.name.type.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts meta.type.tuple.ts entity.name.type.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts meta.type.annotation.ts + ^ + source.ts meta.type.declaration.ts meta.object.type.ts punctuation.definition.block.ts + ^ + source.ts punctuation.terminator.statement.ts \ No newline at end of file diff --git a/tests/cases/readonlyModifier.ts b/tests/cases/readonlyModifier.ts new file mode 100644 index 00000000..7e0d327c --- /dev/null +++ b/tests/cases/readonlyModifier.ts @@ -0,0 +1,7 @@ +function f1(mt: [number, number], rt: readonly [number, number]) { +} + +function f2(ma: string[], ra: readonly string[], mt: [string, string], rt: readonly [string, string]) { +} + +type ReadWrite = { -readonly [P in keyof T] : T[P] }; \ No newline at end of file