diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 1eb4ddb777928..aabf21216ac75 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -1531,6 +1531,7 @@ namespace ts { case SyntaxKind.LiteralType: switch ((node).literal.kind) { case SyntaxKind.StringLiteral: + case SyntaxKind.NoSubstitutionTemplateLiteral: return factory.createIdentifier("String"); case SyntaxKind.PrefixUnaryExpression: diff --git a/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.js b/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.js new file mode 100644 index 0000000000000..72cdd31044dda --- /dev/null +++ b/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.js @@ -0,0 +1,31 @@ +//// [templateLiteralsAndDecoratorMetadata.ts] +declare var format: any; +export class Greeter { + @format("Hello, %s") + greeting: `boss` | `employee` = `employee`; //template literals on this line cause the issue +} + +//// [templateLiteralsAndDecoratorMetadata.js] +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +exports.__esModule = true; +exports.Greeter = void 0; +var Greeter = /** @class */ (function () { + function Greeter() { + this.greeting = "employee"; //template literals on this line cause the issue + } + __decorate([ + format("Hello, %s"), + __metadata("design:type", String) + ], Greeter.prototype, "greeting"); + return Greeter; +}()); +exports.Greeter = Greeter; diff --git a/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.symbols b/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.symbols new file mode 100644 index 0000000000000..b027618b35443 --- /dev/null +++ b/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.symbols @@ -0,0 +1,13 @@ +=== tests/cases/compiler/templateLiteralsAndDecoratorMetadata.ts === +declare var format: any; +>format : Symbol(format, Decl(templateLiteralsAndDecoratorMetadata.ts, 0, 11)) + +export class Greeter { +>Greeter : Symbol(Greeter, Decl(templateLiteralsAndDecoratorMetadata.ts, 0, 24)) + + @format("Hello, %s") +>format : Symbol(format, Decl(templateLiteralsAndDecoratorMetadata.ts, 0, 11)) + + greeting: `boss` | `employee` = `employee`; //template literals on this line cause the issue +>greeting : Symbol(Greeter.greeting, Decl(templateLiteralsAndDecoratorMetadata.ts, 1, 22)) +} diff --git a/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.types b/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.types new file mode 100644 index 0000000000000..5d983f8a5e72d --- /dev/null +++ b/tests/baselines/reference/templateLiteralsAndDecoratorMetadata.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/templateLiteralsAndDecoratorMetadata.ts === +declare var format: any; +>format : any + +export class Greeter { +>Greeter : Greeter + + @format("Hello, %s") +>format("Hello, %s") : any +>format : any +>"Hello, %s" : "Hello, %s" + + greeting: `boss` | `employee` = `employee`; //template literals on this line cause the issue +>greeting : "boss" | "employee" +>`employee` : "employee" +} diff --git a/tests/cases/compiler/templateLiteralsAndDecoratorMetadata.ts b/tests/cases/compiler/templateLiteralsAndDecoratorMetadata.ts new file mode 100644 index 0000000000000..f9c3ea2600385 --- /dev/null +++ b/tests/cases/compiler/templateLiteralsAndDecoratorMetadata.ts @@ -0,0 +1,7 @@ +// @experimentalDecorators: true +// @emitDecoratorMetadata: true +declare var format: any; +export class Greeter { + @format("Hello, %s") + greeting: `boss` | `employee` = `employee`; //template literals on this line cause the issue +} \ No newline at end of file