blob: 6ddb6bdb4166ab950ba08f6fb1ec3d543e319804 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016, 2017 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.parser;
import java.io.IOException;
import org.eclipse.jdt.core.tests.util.CompilerTestSetup;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import junit.framework.Test;
public class ModuleDeclarationSyntaxTest extends AbstractSyntaxTreeTest {
public ModuleDeclarationSyntaxTest(String name, String referenceCompiler,
String referenceCompilerTestsScratchArea) {
super(name, referenceCompiler, referenceCompilerTestsScratchArea);
}
public static Class<?> testClass() {
return ModuleDeclarationSyntaxTest.class;
}
@Override
public void initialize(CompilerTestSetup setUp) {
super.initialize(setUp);
}
public static Test suite() {
return buildMinimalComplianceTestSuite(testClass(), F_9);
}
static {
// TESTS_NAMES = new String[] { "test0009" };
// TESTS_NUMBERS = new int[] { 133, 134, 135 };
}
public ModuleDeclarationSyntaxTest(String testName){
super(testName, null, null);
}
public void test0001() throws IOException {
String source =
"module com.greetings {\n" +
"}\n";
String expectedUnitToString =
"module com.greetings {\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0002() throws IOException {
String source =
"module com.greetings {\n" +
"requires org.astro;" +
"}\n";
String expectedUnitToString =
"module com.greetings {\n" +
" requires org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0003() throws IOException {
String source =
"module org.astro {\n" +
" exports org.astro;\n" +
"}\n";
String expectedUnitToString =
"module org.astro {\n" +
" exports org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0004() throws IOException {
String source =
"module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
"}\n";
String expectedUnitToString =
"module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0005() throws IOException {
String source =
"module com.socket {\n" +
" exports com.socket;\n" +
" exports com.socket.spi;\n" +
" uses com.socket.spi.NetworkSocketProvider;\n" +
"}\n";
String expectedUnitToString =
"module com.socket {\n" +
" exports com.socket;\n" +
" exports com.socket.spi;\n" +
" uses com.socket.spi.NetworkSocketProvider;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0006() throws IOException {
String source =
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides com.socket.spi.NetworkSocketProvider\n" +
" with org.fastsocket.FastNetworkSocketProvider;\n" +
"}\n";
String expectedUnitToString =
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides com.socket.spi.NetworkSocketProvider with org.fastsocket.FastNetworkSocketProvider;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0007() throws IOException {
String source =
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides com.socket.spi.NetworkSocketProvider;\n" +
"}\n";
String expectedErrorString =
"----------\n" +
"1. ERROR in module-info (at line 3)\n" +
" provides com.socket.spi.NetworkSocketProvider;\n" +
" ^\n" +
"Syntax error on token \".\", with expected\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), expectedErrorString, "module-info", null, null, options);
}
public void test0008() throws IOException {
String source =
"module @Marker com.greetings {\n" +
" requires org.astro;" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 1)\n" +
" module @Marker com.greetings {\n" +
" ^^^^^^\n" +
"Syntax error on token(s), misplaced construct(s)\n" +
"----------\n" +
"2. ERROR in module-info (at line 1)\n" +
" module @Marker com.greetings {\n"+
" ^^^^^^\n"+
"Syntax error on token \"Marker\", module expected after this token\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0009() throws IOException {
String source =
"module com.greetings {\n" +
" requires @Marker org.astro;\n" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 1)\n" +
" module com.greetings {\n requires @Marker org.astro;\n" +
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
"Syntax error on token(s), misplaced construct(s)\n" +
"----------\n" +
"2. ERROR in module-info (at line 2)\n" +
" requires @Marker org.astro;\n"+
" ^^^^^^\n"+
"Syntax error on token \"Marker\", package expected after this token\n" +
"----------\n"+
"3. ERROR in module-info (at line 3)\n"+
" }\n" +
" ^\n" +
"Syntax error on token \"}\", delete this token\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0010() throws IOException {
String source =
"module com.greetings {\n" +
" requires private org.astro;\n" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 2)\n" +
" requires private org.astro;\n"+
" ^^^^^^^\n"+
"Syntax error on token \"private\", delete this token\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0011() throws IOException {
String source =
"module com.greetings {\n" +
" exports @Marker com.greetings;\n" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 1)\n" +
" module com.greetings {\n exports @Marker com.greetings;\n" +
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
"Syntax error on token(s), misplaced construct(s)\n" +
"----------\n" +
"2. ERROR in module-info (at line 2)\n" +
" exports @Marker com.greetings;\n"+
" ^^^^^^\n"+
"Syntax error on token \"Marker\", package expected after this token\n" +
"----------\n"+
"3. ERROR in module-info (at line 3)\n"+
" }\n" +
" ^\n" +
"Syntax error on token \"}\", delete this token\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0012() throws IOException {
String source =
"module com.greetings {\n" +
" exports com.greetings to @Marker org.astro;\n" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 2)\n" +
" exports com.greetings to @Marker org.astro;\n"+
" ^^^^^^^\n"+
"Syntax error on tokens, delete these tokens\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0013() throws IOException {
String source =
"module com.greetings {\n" +
" uses @Marker org.astro.World;\n" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 2)\n" +
" uses @Marker org.astro.World;\n" +
" ^^^^^^^\n"+
"Syntax error, type annotations are illegal here\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0014() throws IOException {
String source =
"module com.greetings {\n" +
" provides @Marker org.astro.World with @Marker com.greetings.Main;\n" +
"}\n";
String errorMsg =
"----------\n" +
"1. ERROR in module-info (at line 2)\n" +
" provides @Marker org.astro.World with @Marker com.greetings.Main;\n" +
" ^^^^^^^\n"+
"Syntax error, type annotations are illegal here\n" +
"----------\n" +
"2. ERROR in module-info (at line 2)\n" +
" provides @Marker org.astro.World with @Marker com.greetings.Main;\n" +
" ^^^^^^^\n"+
"Syntax error, type annotations are illegal here\n" +
"----------\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), errorMsg, "module-info", null, null, options);
}
public void test0015() throws IOException {
String source =
"module com.greetings {\n" +
"requires transitive org.astro;" +
"}\n";
String expectedUnitToString =
"module com.greetings {\n" +
" requires transitive org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0016() throws IOException {
String source =
"module com.greetings {\n" +
"requires static org.astro;" +
"}\n";
String expectedUnitToString =
"module com.greetings {\n" +
" requires static org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0017() throws IOException {
String source =
"module com.greetings {\n" +
"requires transitive static org.astro;" +
"}\n";
String expectedUnitToString =
"module com.greetings {\n" +
" requires transitive static org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0018() throws IOException {
String source =
"import com.socket.spi.NetworkSocketProvider;\n" +
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides NetworkSocketProvider\n" +
" with org.fastsocket.FastNetworkSocketProvider;\n" +
"}\n";
String expectedUnitToString =
"import com.socket.spi.NetworkSocketProvider;\n" +
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides NetworkSocketProvider with org.fastsocket.FastNetworkSocketProvider;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0019() throws IOException {
String source =
"import com.socket.spi.*;\n" +
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides NetworkSocketProvider\n" +
" with org.fastsocket.FastNetworkSocketProvider;\n" +
"}\n";
String expectedUnitToString =
"import com.socket.spi.*;\n" +
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides NetworkSocketProvider with org.fastsocket.FastNetworkSocketProvider;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0020() throws IOException {
String source =
"open module com.greetings {\n" +
"requires transitive static org.astro;" +
"}\n";
String expectedUnitToString =
"open module com.greetings {\n" +
" requires transitive static org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0021() throws IOException {
String source =
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides com.socket.spi.NetworkSocketProvider\n" +
" with org.fastsocket.FastNetworkSocketProvider, org.fastSocket.SlowNetworkSocketProvider;\n" +
"}\n";
String expectedUnitToString =
"module org.fastsocket {\n" +
" requires com.socket;\n" +
" provides com.socket.spi.NetworkSocketProvider with org.fastsocket.FastNetworkSocketProvider, org.fastSocket.SlowNetworkSocketProvider;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0022() throws IOException {
String source =
"module org.astro {\n" +
" opens org.astro;\n" +
"}\n";
String expectedUnitToString =
"module org.astro {\n" +
" opens org.astro;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0023() throws IOException {
String source =
"module org.astro {\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
"}\n";
String expectedUnitToString =
"module org.astro {\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0024() throws IOException {
String source =
"module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
String expectedUnitToString =
"module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0025() throws IOException {
String source =
"@Foo\n" +
"module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
String expectedUnitToString =
"@Foo\n" +
"module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0026() throws IOException {
String source =
"@Foo\n" +
"open module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
String expectedUnitToString =
"@Foo\n" +
"open module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void test0027() throws IOException {
String source =
"@Foo @Bar(x = 2) @Baz(\"true\")\n" +
"open module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
String expectedUnitToString =
"@Foo @Bar(x = 2) @Baz(\"true\")\n" +
"open module org.astro {\n" +
" exports org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro to com.greetings, com.example1, com.example2;\n" +
" opens org.astro.galaxy to com.greetings, com.example1, com.example2;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void testBug518626() throws IOException {
String source =
"module module.test {\n" +
" provides X with Y;\n" +
"}\n";
String expectedUnitToString =
"module module.test {\n" +
" provides X with Y;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void testbug488541() throws IOException {
String source =
"module module {\n" +
" requires requires;\n" +
" exports to to exports;\n" +
" uses module;\n" +
" provides uses with to;\n" +
"}\n";
String expectedUnitToString =
"module module {\n" +
" requires requires;\n" +
" exports to to exports;\n" +
" uses module;\n" +
" provides uses with to;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void testbug488541a() throws IOException {
String source =
"import module.pack1.exports.pack2;\n" +
"import module.open.pack1.opens.pack2;\n" +
"@open @module(true)\n" +
"open module module.module.module {\n" +
" requires static transitive requires;\n" +
" requires transitive static transitive;\n" +
" exports to to exports;\n" +
" opens module.to.pack1 to to.exports;\n" +
" uses module;\n" +
" provides uses with to;\n" +
"}\n";
String expectedUnitToString =
"import module.pack1.exports.pack2;\n" +
"import module.open.pack1.opens.pack2;\n" +
"@open @module(true)\n" +
"open module module.module.module {\n" +
" requires transitive static requires;\n" +
" requires transitive static transitive;\n" +
" exports to to exports;\n" +
" opens module.to.pack1 to to.exports;\n" +
" uses module;\n" +
" provides uses with to;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
public void testbug488541b() throws IOException {
String source =
"module module {\n" +
" requires requires;\n" +
" exports to to exports, module;\n" +
" uses module;\n" +
" provides uses with to, open, module;\n" +
"}\n";
String expectedUnitToString =
"module module {\n" +
" requires requires;\n" +
" exports to to exports, module;\n" +
" uses module;\n" +
" provides uses with to, open, module;\n" +
"}\n";
CompilerOptions options = new CompilerOptions(getCompilerOptions());
options.complianceLevel = ClassFileConstants.JDK9;
options.sourceLevel = ClassFileConstants.JDK9;
options.targetJDK = ClassFileConstants.JDK9;
checkParse(CHECK_PARSER, source.toCharArray(), null, "module-info", expectedUnitToString, null, options);
}
}