From a14c80fb10b144035f831c960030afc46b429849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20L=C3=B3pez?= Date: Tue, 18 Jan 2022 21:41:52 +0100 Subject: [PATCH] Exclude Groovy autogenerated MAX_VALUE and MIN_VALUE from enum (#6763) Fixes #6760 --- .../ast/groovy/visitor/GroovyEnumElement.java | 6 +++++- .../groovy/visitor/GroovyEnumElementSpec.groovy | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/inject-groovy/src/main/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElement.java b/inject-groovy/src/main/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElement.java index b415f1cec86..e87c30cadea 100644 --- a/inject-groovy/src/main/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElement.java +++ b/inject-groovy/src/main/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElement.java @@ -55,7 +55,11 @@ class GroovyEnumElement extends GroovyClassElement implements EnumElement { @Override public List values() { ClassNode cn = (ClassNode) getNativeType(); - List values = cn.getFields().stream().filter(fn -> fn.getType().equals(cn)).map(FieldNode::getName).collect(Collectors.toList()); + List values = cn.getFields().stream() + .filter((fn -> !fn.getName().equals("MAX_VALUE") && !fn.getName().equals("MIN_VALUE"))) + .filter(fn -> fn.getType().equals(cn)) + .map(FieldNode::getName) + .collect(Collectors.toList()); return Collections.unmodifiableList(values); } diff --git a/inject-groovy/src/test/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElementSpec.groovy b/inject-groovy/src/test/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElementSpec.groovy index 6a6a8444415..366b427c11a 100644 --- a/inject-groovy/src/test/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElementSpec.groovy +++ b/inject-groovy/src/test/groovy/io/micronaut/ast/groovy/visitor/GroovyEnumElementSpec.groovy @@ -35,4 +35,18 @@ class Foo { expect: element.getEnclosedElement(ElementQuery.of(ClassElement.class)).get().getPrimaryConstructor().get().getDeclaringType().isEnum() } + + void "exclude Groovy autogenerated MAX_VALUE and MIN_VALUE"() { + given: + def element = (GroovyEnumElement) buildClassElement(""" +package test + +enum MyEnum { + A, B +} +""") + expect: + !element.values().contains('MAX_VALUE') + !element.values().contains('MIN_VALUE') + } }