From db4d8af8aff02f5904e6f1f5e0129da82261162a Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 6 Aug 2015 14:44:33 +0300 Subject: [PATCH] capitalization inspection: report problem in constructor calls --- .../capitalization/ConstructorArgument.java | 10 ++++++++++ .../SuperConstructorArgument.java | 13 +++++++++++++ .../TitleCapitalizationInspection.java | 17 ++++++++++------- .../CapitalizationInspectionTest.java | 8 ++++++++ 4 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 plugins/devkit/testData/inspections/capitalization/ConstructorArgument.java create mode 100644 plugins/devkit/testData/inspections/capitalization/SuperConstructorArgument.java diff --git a/plugins/devkit/testData/inspections/capitalization/ConstructorArgument.java b/plugins/devkit/testData/inspections/capitalization/ConstructorArgument.java new file mode 100644 index 000000000000..09a38a81d309 --- /dev/null +++ b/plugins/devkit/testData/inspections/capitalization/ConstructorArgument.java @@ -0,0 +1,10 @@ +import org.jetbrains.annotations.Nls; + +class ConstructorArgument { + ConstructorArgument(@Nls(capitalization = Nls.Capitalization.Title) String foo) { + } + + public static void create() { + new ConstructorArgument("Foo bar"); + } +} \ No newline at end of file diff --git a/plugins/devkit/testData/inspections/capitalization/SuperConstructorArgument.java b/plugins/devkit/testData/inspections/capitalization/SuperConstructorArgument.java new file mode 100644 index 000000000000..ef9c2e0d7a02 --- /dev/null +++ b/plugins/devkit/testData/inspections/capitalization/SuperConstructorArgument.java @@ -0,0 +1,13 @@ +import org.jetbrains.annotations.Nls; + +class SuperConstructorArgument { + SuperConstructorArgument(@Nls(capitalization = Nls.Capitalization.Title) String foo) { + } + + public static class SubClass extends SuperConstructorArgument { + public SubClass() { + super("Foo bar"); + } + } + +} \ No newline at end of file diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/capitalization/TitleCapitalizationInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/capitalization/TitleCapitalizationInspection.java index a0b9c8203ff7..2cb3fb71919c 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/capitalization/TitleCapitalizationInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/capitalization/TitleCapitalizationInspection.java @@ -84,15 +84,18 @@ public class TitleCapitalizationInspection extends BaseJavaLocalInspectionTool { } @Override - public void visitMethodCallExpression(PsiMethodCallExpression expression) { + public void visitCallExpression(PsiCallExpression expression) { PsiMethod psiMethod = expression.resolveMethod(); if (psiMethod != null) { - PsiExpression[] args = expression.getArgumentList().getExpressions(); - PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); - for (int i = 0; i < Math.min(parameters.length, args.length); i++) { - PsiParameter parameter = parameters[i]; - Nls.Capitalization capitalization = getCapitalizationFromAnno(parameter); - checkCapitalization(args[i], holder, capitalization); + PsiExpressionList argumentList = expression.getArgumentList(); + if (argumentList != null) { + PsiExpression[] args = argumentList.getExpressions(); + PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); + for (int i = 0; i < Math.min(parameters.length, args.length); i++) { + PsiParameter parameter = parameters[i]; + Nls.Capitalization capitalization = getCapitalizationFromAnno(parameter); + checkCapitalization(args[i], holder, capitalization); + } } } } diff --git a/plugins/java-i18n/testSrc/com/intellij/codeInspection/CapitalizationInspectionTest.java b/plugins/java-i18n/testSrc/com/intellij/codeInspection/CapitalizationInspectionTest.java index c25e5e72e7cf..e18557c6fb94 100644 --- a/plugins/java-i18n/testSrc/com/intellij/codeInspection/CapitalizationInspectionTest.java +++ b/plugins/java-i18n/testSrc/com/intellij/codeInspection/CapitalizationInspectionTest.java @@ -47,6 +47,14 @@ public class CapitalizationInspectionTest extends LightCodeInsightFixtureTestCas doTest(false); } + public void testConstructorArgument() { + doTest(false); + } + + public void testSuperConstructorArgument() { + doTest(false); + } + public void testRecursiveMethod() { myFixture.testHighlighting(getTestName(false) + ".java"); assertEmpty(myFixture.filterAvailableIntentions("Properly capitalize"));