Show error about entity name visibility on entity name resulting in the error

This commit is contained in:
Sheetal Nandi
2014-11-10 15:56:18 -08:00
parent 7719f39faf
commit ffdb0fc45d
24 changed files with 651 additions and 670 deletions

View File

@@ -1001,28 +1001,9 @@ module ts {
var symbol = resolveName(enclosingDeclaration, (<Identifier>firstIdentifier).text, meaning, /*nodeNotFoundErrorMessage*/ undefined, /*nameArg*/ undefined);
// Verify if the symbol is accessible
var isVisible = hasVisibleDeclarations(symbol);
if (isVisible) {
return isVisible;
}
// Not visible populate error info
var errorSymbolName: string;
var errorModuleName: string;
// TODO(shkamat) For now lets just do this for alias declarations, but in all cases only first identifier text should be enough
if (entityName.parent.kind === SyntaxKind.ImportDeclaration) {
errorSymbolName = getTextOfNode(firstIdentifier);
}
else {
errorSymbolName = getTextOfNode(entityName);
errorModuleName = entityName.kind === SyntaxKind.QualifiedName ?
getTextOfNode(firstIdentifier) :
undefined;
}
return <SymbolAccessiblityResult>{
return hasVisibleDeclarations(symbol) || <SymbolAccessiblityResult>{
accessibility: SymbolAccessibility.NotAccessible,
errorSymbolName: errorSymbolName,
errorModuleName: errorModuleName
errorSymbolName: getTextOfNode(firstIdentifier),
};
}

View File

@@ -2562,7 +2562,7 @@ module ts {
setWriter(oldWriter);
}
function handleSymbolAccessibilityError(symbolAccesibilityResult: SymbolAccessiblityResult) {
function handleSymbolAccessibilityError(symbolAccesibilityResult: SymbolAccessiblityResult, errorNode?: Node) {
if (symbolAccesibilityResult.accessibility === SymbolAccessibility.Accessible) {
// write the aliases
if (symbolAccesibilityResult && symbolAccesibilityResult.aliasesToMakeVisible) {
@@ -2575,14 +2575,14 @@ module ts {
var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult);
if (errorInfo) {
if (errorInfo.typeName) {
diagnostics.push(createDiagnosticForNode(errorInfo.errorNode,
diagnostics.push(createDiagnosticForNode(errorNode || errorInfo.errorNode,
errorInfo.diagnosticMessage,
getSourceTextOfLocalNode(errorInfo.typeName),
symbolAccesibilityResult.errorSymbolName,
symbolAccesibilityResult.errorModuleName));
}
else {
diagnostics.push(createDiagnosticForNode(errorInfo.errorNode,
diagnostics.push(createDiagnosticForNode(errorNode || errorInfo.errorNode,
errorInfo.diagnosticMessage,
symbolAccesibilityResult.errorSymbolName,
symbolAccesibilityResult.errorModuleName));
@@ -2690,7 +2690,7 @@ module ts {
// Aliases can be written asynchronously so use correct enclosing declaration
entityName.parent.kind === SyntaxKind.ImportDeclaration ? entityName.parent : enclosingDeclaration);
handleSymbolAccessibilityError(visibilityResult);
handleSymbolAccessibilityError(visibilityResult, entityName);
writeEntityName(entityName);
function writeEntityName(entityName: EntityName) {