8239575: javadoc triggers javac AssertionError for annos on modules

Ensure ModuleSymbols are implicitly loaded only once in the javadoc context.

Reviewed-by: jjg
This commit is contained in:
Jan Lahoda 2020-03-04 13:43:25 +01:00
parent b3666b94a3
commit 9d57eefe6e
2 changed files with 35 additions and 15 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2020, 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
@ -248,23 +248,26 @@ public class ModuleFinder {
}
ModuleSymbol msym = syms.enterModule(name);
msym.module_info.classfile = fo;
if (fileManager.hasLocation(StandardLocation.PATCH_MODULE_PATH) && name != names.error) {
msym.patchLocation = fileManager.getLocationForModule(StandardLocation.PATCH_MODULE_PATH, name.toString());
if (msym.patchLocation != null) {
JavaFileObject patchFO = getModuleInfoFromLocation(StandardLocation.CLASS_OUTPUT, Kind.CLASS);
patchFO = preferredFileObject(getModuleInfoFromLocation(msym.patchLocation, Kind.CLASS), patchFO);
patchFO = preferredFileObject(getModuleInfoFromLocation(msym.patchLocation, Kind.SOURCE), patchFO);
if (msym.module_info.classfile == null) {
msym.module_info.classfile = fo;
if (fileManager.hasLocation(StandardLocation.PATCH_MODULE_PATH) && name != names.error) {
msym.patchLocation = fileManager.getLocationForModule(StandardLocation.PATCH_MODULE_PATH, name.toString());
if (patchFO != null) {
msym.module_info.classfile = patchFO;
if (msym.patchLocation != null) {
JavaFileObject patchFO = getModuleInfoFromLocation(StandardLocation.CLASS_OUTPUT, Kind.CLASS);
patchFO = preferredFileObject(getModuleInfoFromLocation(msym.patchLocation, Kind.CLASS), patchFO);
patchFO = preferredFileObject(getModuleInfoFromLocation(msym.patchLocation, Kind.SOURCE), patchFO);
if (patchFO != null) {
msym.module_info.classfile = patchFO;
}
}
}
}
msym.completer = Completer.NULL_COMPLETER;
classFinder.fillIn(msym.module_info);
msym.completer = Completer.NULL_COMPLETER;
classFinder.fillIn(msym.module_info);
}
return msym;
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2020, 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
@ -23,7 +23,7 @@
/*
* @test
* @bug 8159305 8166127 8175860 8176481
* @bug 8159305 8166127 8175860 8176481 8239575
* @summary Tests primarily the module graph computations.
* @modules
* jdk.javadoc/jdk.javadoc.internal.api
@ -653,4 +653,21 @@ public class Modules extends ModuleTestBase {
.write(src);
}
@Test
public void testSingleModuleOptionWithSourcePathAndAnnotatedModule(Path base) throws Exception {
Path src = base.resolve("src");
Path mod = Paths.get(src.toString(), "m1");
tb.writeJavaFiles(mod,
"@Deprecated module m1 { exports p; }",
"package p; public class C { }",
"package p; public class P { }");
execTask("--source-path", mod.toString(),
"--module", "m1");
checkModulesSpecified("m1");
checkPackagesIncluded("p");
checkTypesIncluded("p.C");
checkTypesIncluded("p.P");
}
}