172 .outdir(iClasses) 173 .files(findJavaFiles(src)) 174 .run() 175 .writeAll(); 176 177 Path jdkIModuleInfo = iClasses.resolve("module-info.class"); 178 addModuleResolutionAttribute(jdkIModuleInfo, ModuleResolution_attribute.WARN_INCUBATING); 179 180 Path testSrc = base.resolve("test-src"); 181 tb.writeJavaFiles(testSrc, 182 "class T { api.Api api; }"); 183 Path testClasses = base.resolve("test-classes"); 184 tb.createDirectories(testClasses); 185 186 List<String> log; 187 List<String> expected; 188 189 log = new JavacTask(tb) 190 .options("--module-path", classes.toString(), 191 "--add-modules", "jdk.i", 192 "-XDrawDiagnostics", 193 "-Werror") 194 .outdir(testClasses) 195 .files(findJavaFiles(testSrc)) 196 .run(Expect.FAIL) 197 .writeAll() 198 .getOutputLines(Task.OutputKind.DIRECT); 199 200 expected = Arrays.asList( 201 "- compiler.warn.incubating.modules: jdk.i", 202 "- compiler.err.warnings.and.werror", 203 "1 error", 204 "1 warning" 205 ); 206 207 if (!expected.equals(log)) { 208 throw new AssertionError("Unexpected output: " + log); 209 } 210 211 Path testModuleSrc = base.resolve("test-module-src"); 212 tb.writeJavaFiles(testModuleSrc, 213 "module test { requires jdk.i; }", //explicit requires of an incubating module 214 "class T { api.Api api; }"); 215 Path testModuleClasses = base.resolve("test-module-classes"); 216 tb.createDirectories(testModuleClasses); 217 218 log = new JavacTask(tb) 219 .options("--module-path", classes.toString(), 220 "-XDrawDiagnostics", 221 "-Werror") 222 .outdir(testModuleClasses) 223 .files(findJavaFiles(testModuleSrc)) 224 .run(Expect.FAIL) 225 .writeAll() 226 .getOutputLines(Task.OutputKind.DIRECT); 227 228 expected = Arrays.asList( 229 "- compiler.warn.incubating.modules: jdk.i", 230 "- compiler.err.warnings.and.werror", 231 "1 error", 232 "1 warning" 233 ); 234 235 if (!expected.equals(log)) { 236 throw new AssertionError("Unexpected output: " + log); 237 } 238 } 239 240 private void copyJavaBase(Path targetDir) throws IOException { 241 FileSystem jrt = FileSystems.getFileSystem(URI.create("jrt:/")); 242 Path javaBase = jrt.getPath("modules", "java.base"); 243 244 if (!Files.exists(javaBase)) { 245 throw new AssertionError("No java.base?"); 246 } 247 248 Path javaBaseClasses = targetDir.resolve("java.base"); 249 250 for (Path clazz : tb.findFiles("class", javaBase)) { 251 Path target = javaBaseClasses.resolve(javaBase.relativize(clazz).toString()); 252 Files.createDirectories(target.getParent()); | 172 .outdir(iClasses) 173 .files(findJavaFiles(src)) 174 .run() 175 .writeAll(); 176 177 Path jdkIModuleInfo = iClasses.resolve("module-info.class"); 178 addModuleResolutionAttribute(jdkIModuleInfo, ModuleResolution_attribute.WARN_INCUBATING); 179 180 Path testSrc = base.resolve("test-src"); 181 tb.writeJavaFiles(testSrc, 182 "class T { api.Api api; }"); 183 Path testClasses = base.resolve("test-classes"); 184 tb.createDirectories(testClasses); 185 186 List<String> log; 187 List<String> expected; 188 189 log = new JavacTask(tb) 190 .options("--module-path", classes.toString(), 191 "--add-modules", "jdk.i", 192 "-XDrawDiagnostics") 193 .outdir(testClasses) 194 .files(findJavaFiles(testSrc)) 195 .run(Expect.SUCCESS) 196 .writeAll() 197 .getOutputLines(Task.OutputKind.DIRECT); 198 199 expected = Arrays.asList( 200 "- compiler.note.incubating.modules: jdk.i" 201 ); 202 203 if (!expected.equals(log)) { 204 throw new AssertionError("Unexpected output: " + log); 205 } 206 207 Path testModuleSrc = base.resolve("test-module-src"); 208 tb.writeJavaFiles(testModuleSrc, 209 "module test { requires jdk.i; }", //explicit requires of an incubating module 210 "class T { api.Api api; }"); 211 Path testModuleClasses = base.resolve("test-module-classes"); 212 tb.createDirectories(testModuleClasses); 213 214 log = new JavacTask(tb) 215 .options("--module-path", classes.toString(), 216 "-XDrawDiagnostics") 217 .outdir(testModuleClasses) 218 .files(findJavaFiles(testModuleSrc)) 219 .run(Expect.SUCCESS) 220 .writeAll() 221 .getOutputLines(Task.OutputKind.DIRECT); 222 223 expected = Arrays.asList( 224 "- compiler.note.incubating.modules: jdk.i" 225 ); 226 227 if (!expected.equals(log)) { 228 throw new AssertionError("Unexpected output: " + log); 229 } 230 } 231 232 private void copyJavaBase(Path targetDir) throws IOException { 233 FileSystem jrt = FileSystems.getFileSystem(URI.create("jrt:/")); 234 Path javaBase = jrt.getPath("modules", "java.base"); 235 236 if (!Files.exists(javaBase)) { 237 throw new AssertionError("No java.base?"); 238 } 239 240 Path javaBaseClasses = targetDir.resolve("java.base"); 241 242 for (Path clazz : tb.findFiles("class", javaBase)) { 243 Path target = javaBaseClasses.resolve(javaBase.relativize(clazz).toString()); 244 Files.createDirectories(target.getParent()); |