|
Groovy example source code file (Groovy3852Bug.groovy)
The Groovy Groovy3852Bug.groovy source code
package 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: |
Other websites by Alvin Alexander:
Life/living in Alaska (OneMansAlaska.com)
How I Sold My Business (HowISoldMyBusiness.com)
Copyright 1998-2011 Alvin Alexander, devdaily.com
All Rights Reserved.