diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index cc73dca16ed..6b662cf70f0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6936,6 +6936,16 @@ module ts { } } + function checkYieldExpression(node: YieldExpression): void { + // Grammar checking + if (!(node.parserContextFlags & ParserContextFlags.Yield)) { + grammarErrorOnFirstToken(node, Diagnostics.yield_expression_must_be_contained_within_a_generator_declaration); + } + else { + grammarErrorOnFirstToken(node, Diagnostics.yield_expressions_are_not_currently_supported); + } + } + function checkConditionalExpression(node: ConditionalExpression, contextualMapper?: TypeMapper): Type { checkExpression(node.condition); var type1 = checkExpression(node.whenTrue, contextualMapper); @@ -7103,6 +7113,9 @@ module ts { return checkConditionalExpression(node, contextualMapper); case SyntaxKind.OmittedExpression: return undefinedType; + case SyntaxKind.YieldExpression: + checkYieldExpression(node); + return unknownType; } return unknownType; } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 29b91a434a7..2763340551a 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4676,7 +4676,7 @@ module ts { case SyntaxKind.VariableDeclaration: return checkVariableDeclaration(node); case SyntaxKind.VariableStatement: return checkVariableStatement(node); //case SyntaxKind.WithStatement: return checkWithStatement(node); - case SyntaxKind.YieldExpression: return checkYieldExpression(node); + //case SyntaxKind.YieldExpression: return checkYieldExpression(node); } }