From 7c16fb8a890edea80800bc034264fc79d3a5f62b Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 9 Sep 2015 12:41:54 +0300 Subject: [PATCH] Fix StringIndexOutOfBoundsException #EA-72837 Fixed --- .../testData/diagnostics/tests/regressions/ea72837.kt | 9 +++++++++ .../testData/diagnostics/tests/regressions/ea72837.txt | 5 +++++ .../kotlin/checkers/JetDiagnosticsTestGenerated.java | 6 ++++++ .../resolve/scopes/DecapitalizedAnnotationScope.kt | 2 +- 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/regressions/ea72837.kt create mode 100644 compiler/testData/diagnostics/tests/regressions/ea72837.txt diff --git a/compiler/testData/diagnostics/tests/regressions/ea72837.kt b/compiler/testData/diagnostics/tests/regressions/ea72837.kt new file mode 100644 index 00000000000..45ff901ec27 --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/ea72837.kt @@ -0,0 +1,9 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER +fun g(x: T) = 1 +fun h(x: () -> Unit) = 1 + +fun foo() { + f(::) + g(::) + h(::) +} diff --git a/compiler/testData/diagnostics/tests/regressions/ea72837.txt b/compiler/testData/diagnostics/tests/regressions/ea72837.txt new file mode 100644 index 00000000000..92c2cb3a8c5 --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/ea72837.txt @@ -0,0 +1,5 @@ +package + +public fun foo(): kotlin.Unit +public fun g(/*0*/ x: T): kotlin.Int +public fun h(/*0*/ x: () -> kotlin.Unit): kotlin.Int diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java index 78e33187ce3..503851af02d 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -11262,6 +11262,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("ea72837.kt") + public void testEa72837() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/regressions/ea72837.kt"); + doTest(fileName); + } + @TestMetadata("ErrorsOnIbjectExpressionsAsParameters.kt") public void testErrorsOnIbjectExpressionsAsParameters() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/regressions/ErrorsOnIbjectExpressionsAsParameters.kt"); diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/DecapitalizedAnnotationScope.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/DecapitalizedAnnotationScope.kt index 08896ebff39..43edc71d483 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/DecapitalizedAnnotationScope.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/scopes/DecapitalizedAnnotationScope.kt @@ -40,7 +40,7 @@ public class DecapitalizedAnnotationScope(override val workerScope: JetScope) : private fun findDecapitalizedAnnotation(name: Name, location: LookupLocation): ClassifierDescriptor? { val nameAsString = name.asString() - if (nameAsString[0].isUpperCase() || nameAsString !in DECAPITALIZED_SHORT_NAMES) return null + if (nameAsString.length() == 0 || nameAsString[0].isUpperCase() || nameAsString !in DECAPITALIZED_SHORT_NAMES) return null val capitalizedIdentifier = Name.identifier(nameAsString.capitalize()) val capitalizedClassifier = getClassifier(capitalizedIdentifier, location) ?: return null