src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java
changeset 48427 b08405cc467a
parent 48054 702043a4cdeb
child 50285 5b6bdc59f8cc
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java	Wed Jan 03 15:37:35 2018 +0530
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java	Wed Jan 03 11:10:56 2018 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -63,6 +63,7 @@
 import com.sun.tools.javac.code.Directive.RequiresFlag;
 import com.sun.tools.javac.code.Directive.UsesDirective;
 import com.sun.tools.javac.code.Flags;
+import com.sun.tools.javac.code.Flags.Flag;
 import com.sun.tools.javac.code.Lint.LintCategory;
 import com.sun.tools.javac.code.ModuleFinder;
 import com.sun.tools.javac.code.Source;
@@ -109,11 +110,15 @@
 import static com.sun.tools.javac.code.Flags.ENUM;
 import static com.sun.tools.javac.code.Flags.PUBLIC;
 import static com.sun.tools.javac.code.Flags.UNATTRIBUTED;
+
 import com.sun.tools.javac.code.Kinds;
+
 import static com.sun.tools.javac.code.Kinds.Kind.ERR;
 import static com.sun.tools.javac.code.Kinds.Kind.MDL;
 import static com.sun.tools.javac.code.Kinds.Kind.MTH;
+
 import com.sun.tools.javac.code.Symbol.ModuleResolutionFlags;
+
 import static com.sun.tools.javac.code.TypeTag.CLASS;
 
 /**
@@ -775,10 +780,20 @@
             } else {
                 allRequires.add(msym);
                 Set<RequiresFlag> flags = EnumSet.noneOf(RequiresFlag.class);
-                if (tree.isTransitive)
-                    flags.add(RequiresFlag.TRANSITIVE);
-                if (tree.isStaticPhase)
-                    flags.add(RequiresFlag.STATIC_PHASE);
+                if (tree.isTransitive) {
+                    if (msym == syms.java_base && source.compareTo(Source.JDK10) >= 0) {
+                        log.error(tree.pos(), Errors.ModifierNotAllowedHere(names.transitive));
+                    } else {
+                        flags.add(RequiresFlag.TRANSITIVE);
+                    }
+                }
+                if (tree.isStaticPhase) {
+                    if (msym == syms.java_base && source.compareTo(Source.JDK10) >= 0) {
+                        log.error(tree.pos(), Errors.ModNotAllowedHere(EnumSet.of(Flag.STATIC)));
+                    } else {
+                        flags.add(RequiresFlag.STATIC_PHASE);
+                    }
+                }
                 RequiresDirective d = new RequiresDirective(msym, flags);
                 tree.directive = d;
                 sym.requires = sym.requires.prepend(d);