NPEGetDirectivesTest.java revision 3640:53ebb47dc802
152419Sjulian/* 252419Sjulian * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. 352419Sjulian * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 452419Sjulian * 552419Sjulian * This code is free software; you can redistribute it and/or modify it 652419Sjulian * under the terms of the GNU General Public License version 2 only, as 752419Sjulian * published by the Free Software Foundation. 852419Sjulian * 952419Sjulian * This code is distributed in the hope that it will be useful, but WITHOUT 1052419Sjulian * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1152419Sjulian * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1252419Sjulian * version 2 for more details (a copy is included in the LICENSE file that 1352419Sjulian * accompanied this code). 1452419Sjulian * 1552419Sjulian * You should have received a copy of the GNU General Public License version 1652419Sjulian * 2 along with this work; if not, write to the Free Software Foundation, 1752419Sjulian * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1852419Sjulian * 1952419Sjulian * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2052419Sjulian * or visit www.oracle.com if you need additional information or have any 2152419Sjulian * questions. 2252419Sjulian */ 2352419Sjulian 2452419Sjulian/* 2552419Sjulian * @test 2652419Sjulian * @bug 8160454 2752419Sjulian * @summary JSR269 jigsaw update: javax.lang.model.element.ModuleElement.getDirectives() causes NPE on unnamed modules 2852419Sjulian * @modules 2952419Sjulian * jdk.compiler/com.sun.tools.javac.code 3052419Sjulian * jdk.compiler/com.sun.tools.javac.util 3152419Sjulian * @compile NPEGetDirectivesTest.java 3252419Sjulian * @compile -processor NPEGetDirectivesTest NPEGetDirectivesTest.java 3352419Sjulian */ 3452419Sjulian 3552419Sjulianimport javax.annotation.processing.AbstractProcessor; 3652419Sjulianimport javax.annotation.processing.RoundEnvironment; 3752419Sjulianimport javax.annotation.processing.SupportedAnnotationTypes; 3852419Sjulianimport javax.lang.model.SourceVersion; 3952419Sjulianimport javax.lang.model.element.*; 4052752Sjulian 4152419Sjulianimport java.util.Set; 4252419Sjulian 4352419Sjulianimport com.sun.tools.javac.code.Directive.RequiresDirective; 4452639Sarchieimport com.sun.tools.javac.code.Symbol.ModuleSymbol; 4552419Sjulianimport com.sun.tools.javac.util.Assert; 4652419Sjulian 4752419Sjulianimport static com.sun.tools.javac.code.Directive.RequiresFlag.MANDATED; 4852419Sjulian 4952419Sjulian@SupportedAnnotationTypes("*") 5052419Sjulianpublic class NPEGetDirectivesTest extends AbstractProcessor { 5152419Sjulian @Override 5252419Sjulian public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { 5352419Sjulian for (Element e: roundEnv.getRootElements()) { 5452419Sjulian Element m = e.getEnclosingElement(); 5552419Sjulian while (!(m instanceof ModuleElement)) { 5652843Sphk m = m.getEnclosingElement(); 5752419Sjulian } 5852419Sjulian ((ModuleSymbol)m).getDirectives(); 5952419Sjulian RequiresDirective requiresDirective = ((ModuleSymbol)m).requires.head; 6052419Sjulian Assert.check(requiresDirective.getDependency().getQualifiedName().toString().equals("java.base")); 6152639Sarchie Assert.check(requiresDirective.flags.contains(MANDATED)); 6252419Sjulian } 6352419Sjulian return false; 6452816Sarchie } 6552419Sjulian 6652639Sarchie @Override 6752639Sarchie public SourceVersion getSupportedSourceVersion() { 6852639Sarchie return SourceVersion.latest(); 6952639Sarchie } 7052639Sarchie} 7152816Sarchie