Search in sources :

Example 16 with Module

use of com.google.javascript.jscomp.modules.Module in project closure-compiler by google.

the class TypeCheck method visitModuleBody.

/**
 * Validates the implicit assignment to the global for a legacy goog.module
 */
private void visitModuleBody(NodeTraversal t, Node moduleBody) {
    Module associatedModule = ModuleImportResolver.getModuleFromScopeRoot(compiler.getModuleMap(), (b) -> t.getInput(), moduleBody);
    if (!associatedModule.metadata().isLegacyGoogModule()) {
        return;
    }
    QualifiedName moduleName = QualifiedName.of(associatedModule.closureNamespace());
    Node googModuleCall = moduleBody.getFirstChild();
    if (moduleName.isSimple()) {
        TypedVar globalVar = topScope.getVar(moduleName.join());
        validator.expectCanAssignTo(googModuleCall, moduleBody.getJSType(), globalVar.getType(), "legacy goog.module export");
    } else {
        JSType parentType = topScope.lookupQualifiedName(moduleName.getOwner());
        ObjectType parentObjectType = parentType != null ? parentType.toMaybeObjectType() : null;
        if (parentObjectType == null) {
            return;
        }
        validator.expectCanAssignToPropertyOf(googModuleCall, moduleBody.getJSType(), parentObjectType.getPropertyType(moduleName.getComponent()), parentObjectType, () -> moduleName.getOwner().join(), moduleName.getComponent());
    }
}
Also used : ObjectType(com.google.javascript.rhino.jstype.ObjectType) JSType(com.google.javascript.rhino.jstype.JSType) QualifiedName(com.google.javascript.rhino.QualifiedName) Node(com.google.javascript.rhino.Node) Module(com.google.javascript.jscomp.modules.Module)

Aggregations

Module (com.google.javascript.jscomp.modules.Module)16 Node (com.google.javascript.rhino.Node)11 QualifiedName (com.google.javascript.rhino.QualifiedName)5 ModuleMap (com.google.javascript.jscomp.modules.ModuleMap)4 Binding (com.google.javascript.jscomp.modules.Binding)3 JSType (com.google.javascript.rhino.jstype.JSType)3 ModulePath (com.google.javascript.jscomp.deps.ModuleLoader.ModulePath)2 ModuleMetadata (com.google.javascript.jscomp.modules.ModuleMetadataMap.ModuleMetadata)2 JSDocInfo (com.google.javascript.rhino.JSDocInfo)2 ObjectType (com.google.javascript.rhino.jstype.ObjectType)2 StaticTypedScope (com.google.javascript.rhino.jstype.StaticTypedScope)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Nullable (javax.annotation.Nullable)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 CheckReturnValue (com.google.errorprone.annotations.CheckReturnValue)1 Name (com.google.javascript.jscomp.GlobalNamespace.Name)1 Ref (com.google.javascript.jscomp.GlobalNamespace.Ref)1 ModuleMetadataMap (com.google.javascript.jscomp.modules.ModuleMetadataMap)1 FlowScope (com.google.javascript.jscomp.type.FlowScope)1