Fix bug #3737 (exported JSX classes props not validated)

This commit is contained in:
Ryan Cavanaugh
2015-07-07 12:46:58 -07:00
parent f682980216
commit 311d20fa99
6 changed files with 199 additions and 11 deletions
+7 -11
View File
@@ -7095,13 +7095,18 @@ namespace ts {
// Look up the value in the current scope
if (node.tagName.kind === SyntaxKind.Identifier) {
valueSymbol = getResolvedSymbol(<Identifier>node.tagName);
let tag = <Identifier>node.tagName;
valueSymbol = resolveName(tag, tag.text, SymbolFlags.Value, Diagnostics.Cannot_find_name_0, tag.text);
}
else {
valueSymbol = checkQualifiedName(<QualifiedName>node.tagName).symbol;
}
if (valueSymbol !== unknownSymbol) {
if (valueSymbol && valueSymbol !== unknownSymbol) {
let symbolLinks = getSymbolLinks(valueSymbol);
if (symbolLinks) {
symbolLinks.referenced = true;
}
links.jsxFlags |= JsxFlags.ClassElement;
}
@@ -7301,15 +7306,6 @@ namespace ts {
let targetAttributesType = getJsxElementAttributesType(node);
if (getNodeLinks(node).jsxFlags & JsxFlags.ClassElement) {
if (node.tagName.kind === SyntaxKind.Identifier) {
checkIdentifier(<Identifier>node.tagName);
}
else {
checkQualifiedName(<QualifiedName>node.tagName);
}
}
let nameTable: Map<boolean> = {};
// Process this array in right-to-left order so we know which
// attributes (mostly from spreads) are being overwritten and