3789983e89
Reviewed-by: darcy, ihse
93 lines
3.4 KiB
Java
93 lines
3.4 KiB
Java
/*
|
|
* Copyright (c) 2014, 2016, 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
|
|
* under the terms of the GNU General Public License version 2 only, as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* version 2 for more details (a copy is included in the LICENSE file that
|
|
* accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU General Public License version
|
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
* or visit www.oracle.com if you need additional information or have any
|
|
* questions.
|
|
*/
|
|
|
|
/*
|
|
* @test
|
|
* @bug 8042261
|
|
* @summary Checking that deprecated attribute does not apply to classes of deprecated package.
|
|
* @library /tools/lib /tools/javac/lib ../lib
|
|
* @modules jdk.compiler/com.sun.tools.javac.api
|
|
* jdk.compiler/com.sun.tools.javac.main
|
|
* jdk.compiler/com.sun.tools.javac.util
|
|
* jdk.jdeps/com.sun.tools.classfile
|
|
* @build toolbox.ToolBox InMemoryFileManager TestResult TestBase
|
|
* @run main DeprecatedPackageTest
|
|
*/
|
|
|
|
import com.sun.tools.classfile.Attribute;
|
|
import com.sun.tools.classfile.ClassFile;
|
|
import com.sun.tools.classfile.Deprecated_attribute;
|
|
|
|
public class DeprecatedPackageTest extends TestResult {
|
|
|
|
private static final String[] sourceTest = new String[]{
|
|
"package deprecated;\n"
|
|
+ "public class notDeprecated{}",
|
|
"package deprecated;\n"
|
|
+ "public interface notDeprecated{}",
|
|
"package deprecated;\n"
|
|
+ "public @interface notDeprecated{}",
|
|
"package deprecated;\n"
|
|
+ "public enum notDeprecated{}"
|
|
};
|
|
|
|
private static final String CLASS_NAME = "deprecated.notDeprecated";
|
|
|
|
private static final String PACKAGE_INFO =
|
|
"@Deprecated\n" +
|
|
"package deprecated;";
|
|
|
|
public static void main(String[] args) throws TestFailedException {
|
|
new DeprecatedPackageTest().test();
|
|
}
|
|
|
|
private void test() throws TestFailedException {
|
|
try {
|
|
for (String src : sourceTest) {
|
|
test(PACKAGE_INFO, src);
|
|
test(PACKAGE_INFO.replaceAll("@Deprecated", "/** @deprecated */"), src);
|
|
}
|
|
} catch (Exception e) {
|
|
addFailure(e);
|
|
} finally {
|
|
checkStatus();
|
|
}
|
|
}
|
|
|
|
private void test(String package_info, String src) {
|
|
addTestCase(src);
|
|
printf("Testing test case: \n%s\n", src);
|
|
try {
|
|
ClassFile cf = readClassFile(compile(
|
|
new String[]{"package-info.java", package_info},
|
|
new String[]{"notDeprecated.java", src})
|
|
.getClasses().get(CLASS_NAME));
|
|
Deprecated_attribute attr =
|
|
(Deprecated_attribute) cf.getAttribute(Attribute.Deprecated);
|
|
checkNull(attr, "Class can not have deprecated attribute : " + CLASS_NAME);
|
|
} catch (Exception e) {
|
|
addFailure(e);
|
|
}
|
|
}
|
|
}
|