--- 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);