diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/phase/DefaultSemanticAnalysisPhase.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/phase/DefaultSemanticAnalysisPhase.java index e387dba4cb2ff..61934ee741f35 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/phase/DefaultSemanticAnalysisPhase.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/phase/DefaultSemanticAnalysisPhase.java @@ -1769,7 +1769,7 @@ public void visitCallLocal(ECallLocal userCallLocalNode, SemanticScope semanticS if (instanceBinding == null) { throw userCallLocalNode.createError(new IllegalArgumentException( - "Unknown call [" + methodName + "] with [" + userArgumentNodes + "] arguments.")); + "Unknown call [" + methodName + "] with [" + userArgumentsSize + "] arguments.")); } } } diff --git a/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java b/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java index 1b528331ea22f..d0fb1d59431f8 100644 --- a/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java +++ b/modules/lang-painless/src/test/java/org/elasticsearch/painless/WhenThingsGoWrongTests.java @@ -850,4 +850,11 @@ public void testInvalidNullSafeBehavior() { exec("def test = ['hostname': 'somehostname']; test?.hostname && params.host.hostname != ''")); expectScriptThrows(NullPointerException.class, () -> exec("params?.host?.hostname && params.host?.hostname != ''")); } + + public void testInstanceMethodNotFound() { + IllegalArgumentException iae = expectScriptThrows(IllegalArgumentException.class, () -> exec("doesNotExist()")); + assertEquals(iae.getMessage(), "Unknown call [doesNotExist] with [0] arguments."); + iae = expectScriptThrows(IllegalArgumentException.class, () -> exec("doesNotExist(1, 'string', false)")); + assertEquals(iae.getMessage(), "Unknown call [doesNotExist] with [3] arguments."); + } }