|
Groovy example source code file (Groovy3852Bug.groovy)
The Groovy Groovy3852Bug.groovy source codepackage groovy.bugs import gls.CompilableTestSupport class Groovy3852Bug extends CompilableTestSupport { def gcl = new GroovyClassLoader() void testDuplicationAnnotationOnClassNoParams() { try { gcl.parseClass """ @Deprecated @Deprecated @Deprecated class TooDeprecatedGroovy3852V1 {} """ fail('The class compilation should have failed as it has duplication annotations') }catch(ex) { assertTrue ex.message.contains('Cannot specify duplicate annotation') } } void testDuplicationAnnotationOnClassWithParams() { try { gcl.parseClass """ import java.lang.annotation.* @Retention(value=RetentionPolicy.CLASS) @Retention(value=RetentionPolicy.CLASS) @interface TooDeprecatedGroovy3852V2 {} """ fail('The class compilation should have failed as it has duplication annotations') }catch(ex) { assertTrue ex.message.contains('Cannot specify duplicate annotation') } } void testDuplicationAnnotationOnOtherTargets() { try { gcl.parseClass """ class TooDeprecatedGroovy3852V3 { @Deprecated @Deprecated @Deprecated def m() {} } """ fail('The class compilation should have failed as it has duplication annotations on a method') }catch(ex) { assertTrue ex.message.contains('Cannot specify duplicate annotation') } try { gcl.parseClass """ class TooDeprecatedGroovy3852V3 { @Deprecated @Deprecated @Deprecated def f } """ fail('The class compilation should have failed as it has duplication annotations on a field') }catch(ex) { assertTrue ex.message.contains('Cannot specify duplicate annotation') } } void testDuplicationNonRuntimeRetentionPolicyAnnotations() { try { gcl.parseClass """ @Newify(auto=false, value=String) @Newify(auto=false, value=String) class Groovy3930 {} """ } catch (ex) { fail('The class compilation should have succeeded as it has duplication annotations but with retention policy not at RUNTIME') } } void testDuplicationAnnotationsForImport() { // TODO: replace with better test - Newify doesn't really make sense for import try { gcl.parseClass """ @Newify(auto=false, value=String) @Newify(auto=false, value=String) import java.lang.String class Groovy3925 {} """ } catch (ex) { fail('The class compilation should have succeeded as it has duplication annotations but with retention policy not at RUNTIME') } } } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy Groovy3852Bug.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.