From 734f161cdc814e9656b6f3c2242f9e498c9f2511 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 25 Mar 2016 14:29:22 -0700 Subject: [PATCH] Changed emit for decorator metadata --- Jakefile.js | 7 ++----- src/compiler/factory.ts | 2 +- src/compiler/transformers/module/module.ts | 2 +- src/compiler/transformers/ts.ts | 18 ++++++++++++------ 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index 0c764758240..d024568ee35 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -695,7 +695,6 @@ function runTestsAndWriteOutput(file) { cleanTestDirs(); var tests = process.env.test || process.env.tests || process.env.t; var light = process.env.light || false; - var beep = process.env.beep; var testConfigFile = 'test.config'; if (fs.existsSync(testConfigFile)) { fs.unlinkSync(testConfigFile); @@ -796,8 +795,6 @@ function runTestsAndWriteOutput(file) { console.log(comments.join(os.EOL)); deleteTemporaryProjectOutput(); complete(); - - if (beep) process.stdout.write("\u0007"); }); ex.addListener("error", function (e, status) { if (progress.visible) { @@ -816,7 +813,6 @@ function runTestsAndWriteOutput(file) { } deleteTemporaryProjectOutput(); - if (beep) process.stdout.write("\u0007"); fail("Process exited with code " + status); }); ex.run(); @@ -827,13 +823,14 @@ function runConsoleTests(defaultReporter, defaultSubsets) { var debug = process.env.debug || process.env.d; tests = process.env.test || process.env.tests || process.env.t; var light = process.env.light || false; + var stackTraceLimit = process.env.stackTraceLimit || 1; var testConfigFile = 'test.config'; if(fs.existsSync(testConfigFile)) { fs.unlinkSync(testConfigFile); } if (tests || light) { - writeTestConfigFile(testConfigFile, tests, light); + writeTestConfigFile(testConfigFile, tests, light, stackTraceLimit); } if (tests && tests.toLocaleLowerCase() === "rwc") { diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 695b999e7bf..389718fdaf0 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -791,7 +791,7 @@ namespace ts { export function createDecorateHelper(decoratorExpressions: Expression[], target: Expression, memberName?: Expression, descriptor?: Expression) { const argumentsArray: Expression[] = []; - argumentsArray.push(createArrayLiteral(decoratorExpressions)); + argumentsArray.push(createArrayLiteral(decoratorExpressions, /*location*/ undefined, /*multiLine*/ true)); argumentsArray.push(target); if (memberName) { argumentsArray.push(memberName); diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index 3166b77c293..0227ccd8303 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -674,7 +674,7 @@ namespace ts { } } else { - const declaration = resolver.getReferencedImportDeclaration(original); + const declaration = resolver.getReferencedImportDeclaration(node.parent ? node : original); if (declaration) { if (declaration.kind === SyntaxKind.ImportClause) { if (languageVersion >= ScriptTarget.ES5) { diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 19e317b6cba..b127ee50754 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -83,6 +83,7 @@ namespace ts { */ function transformSourceFile(node: SourceFile) { currentSourceFile = node; + currentScope = node; const visited = visitEachChild(node, visitor, context); setNodeEmitFlags(visited, NodeEmitFlags.EmitEmitHelpers | getNodeEmitFlags(node)); return visited; @@ -1355,14 +1356,18 @@ namespace ts { */ function addTypeMetadata(node: Declaration, decoratorExpressions: Expression[]) { if (compilerOptions.emitDecoratorMetadata) { + let properties: ObjectLiteralElement[]; if (shouldAddTypeMetadata(node)) { - decoratorExpressions.push(createMetadataHelper("design:type", serializeTypeOfNode(node), /*defer*/ true)); + (properties || (properties = [])).push(createPropertyAssignment("type", createArrowFunction([], serializeTypeOfNode(node)))); } if (shouldAddParamTypesMetadata(node)) { - decoratorExpressions.push(createMetadataHelper("design:paramtypes", serializeParameterTypesOfNode(node), /*defer*/ true)); + (properties || (properties = [])).push(createPropertyAssignment("paramTypes", createArrowFunction([], serializeParameterTypesOfNode(node)))); } if (shouldAddReturnTypeMetadata(node)) { - decoratorExpressions.push(createMetadataHelper("design:returntype", serializeReturnTypeOfNode(node), /*defer*/ true)); + (properties || (properties = [])).push(createPropertyAssignment("returnType", createArrowFunction([], serializeReturnTypeOfNode(node)))); + } + if (properties) { + decoratorExpressions.push(createMetadataHelper("design:typeinfo", createObjectLiteral(properties, /*location*/ undefined, /*multiLine*/ true), /*defer*/ false)); } } } @@ -1483,11 +1488,11 @@ namespace ts { * @param node The node that should have its return type serialized. */ function serializeReturnTypeOfNode(node: Node): Expression { - if (isFunctionLike(node)) { + if (isFunctionLike(node) && node.type) { return serializeTypeNode(node.type); } - return undefined; + return createVoidZero(); } /** @@ -1533,7 +1538,7 @@ namespace ts { return createIdentifier("Boolean"); case SyntaxKind.StringKeyword: - case SyntaxKind.StringLiteral: + case SyntaxKind.StringLiteralType: return createIdentifier("String"); case SyntaxKind.NumberKeyword: @@ -1552,6 +1557,7 @@ namespace ts { case SyntaxKind.UnionType: case SyntaxKind.IntersectionType: case SyntaxKind.AnyKeyword: + case SyntaxKind.ThisType: break; default: