void (@NotNull GrMethod method) { checkDuplicateMethod(method); checkMethodWithTypeParamsShouldHaveReturnType(myHolder, method); checkInnerMethod(myHolder, method); checkOptionalParametersInAbstractMethod(myHolder, method); checkConstructorOfImmutableClass(myHolder, method); checkGetterOfImmutable(myHolder, method); final PsiElement nameIdentifier = method.getNameIdentifierGroovy(); if (GroovyTokenSets.STRING_LITERALS.contains(nameIdentifier.getNode().getElementType())) { checkStringLiteral(nameIdentifier); } GrOpenBlock block = method.getBlock(); if (block != null && TypeInferenceHelper.isTooComplexTooAnalyze(block)) { myHolder.newAnnotation(HighlightSeverity.WEAK_WARNING, GroovyBundle.message("method.0.is.too.complex.too.analyze", method.getName())).range(nameIdentifier).create(); } final PsiClass containingClass = method.getContainingClass(); if (method.isConstructor()) { if (containingClass instanceof GrAnonymousClassDefinition) { myHolder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("constructors.are.not.allowed.in.anonymous.class")).range(nameIdentifier).create(); } else if (containingClass != null && containingClass.isInterface()) { myHolder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("constructors.are.not.allowed.in.interface")).range(nameIdentifier).create(); } } if (method.getBlock() == null && !method.hasModifierProperty(PsiModifier.NATIVE) && !GrTraitUtil.isMethodAbstract(method)) { myHolder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("not.abstract.method.should.have.body")).range(nameIdentifier).create(); } checkOverridingMethod(myHolder, method); }