< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacTypes.java

Print this page

        

@@ -91,46 +91,47 @@
         return types.isSameType((Type) t1, (Type) t2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean isSubtype(TypeMirror t1, TypeMirror t2) {
-        validateTypeNotIn(t1, EXEC_OR_PKG);
-        validateTypeNotIn(t2, EXEC_OR_PKG);
+        validateTypeNotIn(t1, EXEC_OR_PKG_OR_MOD);
+        validateTypeNotIn(t2, EXEC_OR_PKG_OR_MOD);
         return types.isSubtype((Type) t1, (Type) t2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean isAssignable(TypeMirror t1, TypeMirror t2) {
-        validateTypeNotIn(t1, EXEC_OR_PKG);
-        validateTypeNotIn(t2, EXEC_OR_PKG);
+        validateTypeNotIn(t1, EXEC_OR_PKG_OR_MOD);
+        validateTypeNotIn(t2, EXEC_OR_PKG_OR_MOD);
         return types.isAssignable((Type) t1, (Type) t2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean contains(TypeMirror t1, TypeMirror t2) {
-        validateTypeNotIn(t1, EXEC_OR_PKG);
-        validateTypeNotIn(t2, EXEC_OR_PKG);
+        validateTypeNotIn(t1, EXEC_OR_PKG_OR_MOD);
+        validateTypeNotIn(t2, EXEC_OR_PKG_OR_MOD);
         return types.containsType((Type) t1, (Type) t2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public boolean isSubsignature(ExecutableType m1, ExecutableType m2) {
         return types.isSubSignature((Type) m1, (Type) m2);
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public List<Type> directSupertypes(TypeMirror t) {
-        validateTypeNotIn(t, EXEC_OR_PKG);
+        validateTypeNotIn(t, EXEC_OR_PKG_OR_MOD);
         Type ty = (Type)t;
         return types.directSupertypes(ty).stream()
                 .map(Type::stripMetadataIfNeeded)
                 .collect(Collectors.toList());
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public TypeMirror erasure(TypeMirror t) {
-        if (t.getKind() == TypeKind.PACKAGE)
+        TypeKind kind = t.getKind();
+        if (kind == TypeKind.PACKAGE || kind == TypeKind.MODULE)
             throw new IllegalArgumentException(t.toString());
         return types.erasure((Type)t).stripMetadataIfNeeded();
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)

@@ -148,11 +149,11 @@
         return (PrimitiveType)unboxed;
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public TypeMirror capture(TypeMirror t) {
-        validateTypeNotIn(t, EXEC_OR_PKG);
+        validateTypeNotIn(t, EXEC_OR_PKG_OR_MOD);
         return types.capture((Type)t).stripMetadataIfNeeded();
     }
 
     @DefinedBy(Api.LANGUAGE_MODEL)
     public PrimitiveType getPrimitiveType(TypeKind kind) {

@@ -190,10 +191,11 @@
         switch (componentType.getKind()) {
         case VOID:
         case EXECUTABLE:
         case WILDCARD:  // heh!
         case PACKAGE:
+        case MODULE:
             throw new IllegalArgumentException(componentType.toString());
         }
         return new Type.ArrayType((Type) componentType, syms.arrayClass);
     }
 

@@ -297,12 +299,12 @@
             throw new IllegalArgumentException(sym + "@" + site);
         return types.memberType(site, sym);
     }
 
 
-    private static final Set<TypeKind> EXEC_OR_PKG =
-            EnumSet.of(TypeKind.EXECUTABLE, TypeKind.PACKAGE);
+    private static final Set<TypeKind> EXEC_OR_PKG_OR_MOD =
+        EnumSet.of(TypeKind.EXECUTABLE, TypeKind.PACKAGE, TypeKind.MODULE);
 
     /**
      * Throws an IllegalArgumentException if a type's kind is one of a set.
      */
     private void validateTypeNotIn(TypeMirror t, Set<TypeKind> invalidKinds) {
< prev index next >