test/tools/javac/processing/model/element/TestExecutableElement.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2012, 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. --- 1,7 ---- /* ! * Copyright (c) 2012, 2013, 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.
*** 21,31 **** * questions. */ /* * @test ! * @bug 8005046 * @summary Test basic properties of javax.lang.element.Element * @author Joseph D. Darcy * @library /tools/javac/lib * @build JavacTestingAbstractProcessor TestExecutableElement * @compile -processor TestExecutableElement -proc:only TestExecutableElement.java --- 21,31 ---- * questions. */ /* * @test ! * @bug 8005046 8011052 * @summary Test basic properties of javax.lang.element.Element * @author Joseph D. Darcy * @library /tools/javac/lib * @build JavacTestingAbstractProcessor TestExecutableElement * @compile -processor TestExecutableElement -proc:only TestExecutableElement.java
*** 33,42 **** --- 33,43 ---- import java.lang.annotation.*; import java.util.Formatter; import java.util.Set; import java.util.Objects; + import java.util.regex.*; import javax.annotation.processing.*; import javax.lang.model.SourceVersion; import static javax.lang.model.SourceVersion.*; import javax.lang.model.element.*; import javax.lang.model.util.*;
*** 77,89 **** expectedIsDefault.value() : false; boolean methodIsDefault = method.isDefault(); if (methodIsDefault != expectedDefault) { messager.printMessage(ERROR, ! new Formatter().format("Unexpected Executable.isDefault result: got %s, expected %s", expectedDefault, methodIsDefault).toString(), method); return 1; } --- 78,120 ---- expectedIsDefault.value() : false; boolean methodIsDefault = method.isDefault(); + if (expectedDefault) { + if (!method.getModifiers().contains(Modifier.DEFAULT)) { + messager.printMessage(ERROR, + "Modifier \"default\" not present as expected.", + method); + } + + // Check printing output + java.io.Writer stringWriter = new java.io.StringWriter(); + eltUtils.printElements(stringWriter, method); + Pattern p = Pattern.compile(expectedIsDefault.expectedTextRegex(), Pattern.DOTALL); + + if (! p.matcher(stringWriter.toString()).matches()) { + messager.printMessage(ERROR, + new Formatter().format("Unexpected printing ouptput:%n\tgot %s,%n\texpected pattern %s.", + stringWriter.toString(), + expectedIsDefault.expectedTextRegex()).toString(), + method); + } + + System.out.println("\t" + stringWriter.toString()); + + } else { + if (method.getModifiers().contains(Modifier.DEFAULT)) { + messager.printMessage(ERROR, + "Modifier \"default\" present when not expected.", + method); + } + } + if (methodIsDefault != expectedDefault) { messager.printMessage(ERROR, ! new Formatter().format("Unexpected Executable.isDefault result: got ``%s'', expected ``%s''.", expectedDefault, methodIsDefault).toString(), method); return 1; }
*** 96,113 **** */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @interface IsDefault { boolean value(); } /** * Test interface to provide a default method. */ interface ProviderOfDefault { @IsDefault(false) boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv); ! @IsDefault(true) ! default void quux() {}; } --- 127,145 ---- */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @interface IsDefault { boolean value(); + String expectedTextRegex() default ""; } /** * Test interface to provide a default method. */ interface ProviderOfDefault { @IsDefault(false) boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv); ! @IsDefault(value=true, expectedTextRegex="\\s*@IsDefault\\(.*\\)\\s*default strictfp void quux\\(\\);\\s*$") ! default strictfp void quux() {}; }