* Resolves a qualified name and any involved aliases.
(name, meaning, ignoreErrors, dontResolveAlias, location)
| 50985 | * Resolves a qualified name and any involved aliases. |
| 50986 | */ |
| 50987 | function resolveEntityName(name, meaning, ignoreErrors, dontResolveAlias, location) { |
| 50988 | if (ts.nodeIsMissing(name)) { |
| 50989 | return undefined; |
| 50990 | } |
| 50991 | var namespaceMeaning = 1920 /* SymbolFlags.Namespace */ | (ts.isInJSFile(name) ? meaning & 111551 /* SymbolFlags.Value */ : 0); |
| 50992 | var symbol; |
| 50993 | if (name.kind === 79 /* SyntaxKind.Identifier */) { |
| 50994 | var message = meaning === namespaceMeaning || ts.nodeIsSynthesized(name) ? ts.Diagnostics.Cannot_find_namespace_0 : getCannotFindNameDiagnosticForName(ts.getFirstIdentifier(name)); |
| 50995 | var symbolFromJSPrototype = ts.isInJSFile(name) && !ts.nodeIsSynthesized(name) ? resolveEntityNameFromAssignmentDeclaration(name, meaning) : undefined; |
| 50996 | symbol = getMergedSymbol(resolveName(location || name, name.escapedText, meaning, ignoreErrors || symbolFromJSPrototype ? undefined : message, name, /*isUse*/ true, false)); |
| 50997 | if (!symbol) { |
| 50998 | return getMergedSymbol(symbolFromJSPrototype); |
| 50999 | } |
| 51000 | } |
| 51001 | else if (name.kind === 161 /* SyntaxKind.QualifiedName */ || name.kind === 206 /* SyntaxKind.PropertyAccessExpression */) { |
| 51002 | var left = name.kind === 161 /* SyntaxKind.QualifiedName */ ? name.left : name.expression; |
| 51003 | var right = name.kind === 161 /* SyntaxKind.QualifiedName */ ? name.right : name.name; |
| 51004 | var namespace = resolveEntityName(left, namespaceMeaning, ignoreErrors, /*dontResolveAlias*/ false, location); |
| 51005 | if (!namespace || ts.nodeIsMissing(right)) { |
| 51006 | return undefined; |
| 51007 | } |
| 51008 | else if (namespace === unknownSymbol) { |
| 51009 | return namespace; |
| 51010 | } |
| 51011 | if (namespace.valueDeclaration && |
| 51012 | ts.isInJSFile(namespace.valueDeclaration) && |
| 51013 | ts.isVariableDeclaration(namespace.valueDeclaration) && |
| 51014 | namespace.valueDeclaration.initializer && |
| 51015 | isCommonJsRequire(namespace.valueDeclaration.initializer)) { |
| 51016 | var moduleName = namespace.valueDeclaration.initializer.arguments[0]; |
| 51017 | var moduleSym = resolveExternalModuleName(moduleName, moduleName); |
| 51018 | if (moduleSym) { |
| 51019 | var resolvedModuleSymbol = resolveExternalModuleSymbol(moduleSym); |
| 51020 | if (resolvedModuleSymbol) { |
| 51021 | namespace = resolvedModuleSymbol; |
| 51022 | } |
| 51023 | } |
| 51024 | } |
| 51025 | symbol = getMergedSymbol(getSymbol(getExportsOfSymbol(namespace), right.escapedText, meaning)); |
| 51026 | if (!symbol) { |
| 51027 | if (!ignoreErrors) { |
| 51028 | var namespaceName = getFullyQualifiedName(namespace); |
| 51029 | var declarationName = ts.declarationNameToString(right); |
| 51030 | var suggestionForNonexistentModule = getSuggestedSymbolForNonexistentModule(right, namespace); |
| 51031 | if (suggestionForNonexistentModule) { |
| 51032 | error(right, ts.Diagnostics._0_has_no_exported_member_named_1_Did_you_mean_2, namespaceName, declarationName, symbolToString(suggestionForNonexistentModule)); |
| 51033 | return undefined; |
| 51034 | } |
| 51035 | var containingQualifiedName = ts.isQualifiedName(name) && getContainingQualifiedNameNode(name); |
| 51036 | var canSuggestTypeof = globalObjectType // <-- can't pull on types if global types aren't initialized yet |
| 51037 | && (meaning & 788968 /* SymbolFlags.Type */) |
| 51038 | && containingQualifiedName |
| 51039 | && !ts.isTypeOfExpression(containingQualifiedName.parent) |
| 51040 | && tryGetQualifiedNameAsValue(containingQualifiedName); |
| 51041 | if (canSuggestTypeof) { |
| 51042 | error(containingQualifiedName, ts.Diagnostics._0_refers_to_a_value_but_is_being_used_as_a_type_here_Did_you_mean_typeof_0, ts.entityNameToString(containingQualifiedName)); |
| 51043 | return undefined; |
| 51044 | } |
no test coverage detected
searching dependent graphs…