Merge pull request #256 from Microsoft/ambientAccessorErrors

Gracefully handle accessor declarations in ambient classes.
This commit is contained in:
Daniel Rosenwasser
2014-07-29 11:46:32 -07:00
6 changed files with 52 additions and 49 deletions

View File

@@ -5042,7 +5042,7 @@ module ts {
}
checkSourceElement(node.body);
if (node.type) {
if (node.type && !isAccessor(node.kind)) {
checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type));
}

View File

@@ -2897,7 +2897,16 @@ module ts {
node.typeParameters = sig.typeParameters;
node.parameters = sig.parameters;
node.type = sig.type;
node.body = parseBody(/* ignoreMissingOpenBrace */ false);
// A common error is to try to declare an accessor in an ambient class.
if (inAmbientContext && canParseSemicolon()) {
parseSemicolon();
node.body = createMissingNode();
}
else {
node.body = parseBody(/* ignoreMissingOpenBrace */ false);
}
return finishNode(node);
}