Gracefully handle accessor declarations in ambient classes.

This commit is contained in:
Daniel Rosenwasser
2014-07-25 13:07:27 -07:00
parent 9f22a07c92
commit fc80c300a0
6 changed files with 52 additions and 49 deletions

View File

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

View File

@@ -2902,7 +2902,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);
}