diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrEnumTypeDefinitionImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrEnumTypeDefinitionImpl.java index 13d5f86b9a5a..88578b358bc6 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrEnumTypeDefinitionImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrEnumTypeDefinitionImpl.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef; @@ -125,24 +111,25 @@ public class GrEnumTypeDefinitionImpl extends GrTypeDefinitionImpl implements Gr PsiMethod[] defMethods = new PsiMethod[4]; final PsiManagerEx manager = getManager(); final PsiElementFactory factory = JavaPsiFacade.getElementFactory(getProject()); + final PsiClassType thisType = factory.createType(this); defMethods[0] = new LightMethodBuilder(manager, GroovyLanguage.INSTANCE, "values") - .setMethodReturnType(factory.createTypeFromText(CommonClassNames.JAVA_UTIL_COLLECTION + "<" + getName() + ">", this)) + .setMethodReturnType(new PsiArrayType(thisType)) .setContainingClass(this) .addModifier(PsiModifier.PUBLIC) .addModifier(PsiModifier.STATIC); defMethods[1] = new LightMethodBuilder(manager, GroovyLanguage.INSTANCE, "next") - .setMethodReturnType(factory.createType(this)) + .setMethodReturnType(thisType) .setContainingClass(this) .addModifier(PsiModifier.PUBLIC); defMethods[2] = new LightMethodBuilder(manager, GroovyLanguage.INSTANCE, "previous") - .setMethodReturnType(factory.createType(this)) + .setMethodReturnType(thisType) .setContainingClass(this) .addModifier(PsiModifier.PUBLIC); defMethods[3] = new LightMethodBuilder(manager, GroovyLanguage.INSTANCE, "valueOf") - .setMethodReturnType(factory.createType(this)) + .setMethodReturnType(thisType) .setContainingClass(this) .addParameter("name", CommonClassNames.JAVA_LANG_STRING) .addModifier(PsiModifier.PUBLIC) diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy index 2d2d912c3c1b..2e132bf8dfd1 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy @@ -814,4 +814,8 @@ def bar() { } ''', 'java.util.List>' } + + void 'test enum values() type'() { + doExprTest 'enum E {}; E.values()', 'E[]' + } }