Browse Source

Merge pull request #108979 from HolonProduction/completion-call-stack-lambda

Autocompletion: Push empty call for lambdas
Thaddeus Crews 1 month ago
parent
commit
d4f14aaa78

+ 4 - 0
modules/gdscript/gdscript_parser.cpp

@@ -3618,6 +3618,8 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_lambda(ExpressionNode *p_p
 
 	bool multiline_context = multiline_stack.back()->get();
 
+	push_completion_call(nullptr);
+
 	// Reset the multiline stack since we don't want the multiline mode one in the lambda body.
 	push_multiline(false);
 	if (multiline_context) {
@@ -3665,6 +3667,8 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_lambda(ExpressionNode *p_p
 
 	pop_multiline();
 
+	pop_completion_call();
+
 	if (multiline_context) {
 		// If we're in multiline mode, we want to skip the spurious DEDENT and NEWLINE tokens.
 		while (check(GDScriptTokenizer::Token::DEDENT) || check(GDScriptTokenizer::Token::INDENT) || check(GDScriptTokenizer::Token::NEWLINE)) {

+ 7 - 0
modules/gdscript/tests/scripts/completion/no_parenthesis_when_callable_is_expected/lambda_body.cfg

@@ -0,0 +1,7 @@
+[output]
+include=[
+	{"display": "print(…)", "insert_text": "print("},
+]
+exclude=[
+	{"insert_text": "print"},
+]

+ 5 - 0
modules/gdscript/tests/scripts/completion/no_parenthesis_when_callable_is_expected/lambda_body.gd

@@ -0,0 +1,5 @@
+signal test_signal
+
+func _init() -> void:
+	test_signal.connect(func(): p➡
+	pass

+ 7 - 0
modules/gdscript/tests/scripts/completion/no_parenthesis_when_callable_is_expected/lambda_parameter.cfg

@@ -0,0 +1,7 @@
+[output]
+include=[
+	{"display": "print(…)", "insert_text": "print("},
+]
+exclude=[
+	{"insert_text": "print"},
+]

+ 5 - 0
modules/gdscript/tests/scripts/completion/no_parenthesis_when_callable_is_expected/lambda_parameter.gd

@@ -0,0 +1,5 @@
+signal test_signal
+
+func _init() -> void:
+	test_signal.connect(func(a = p➡): pass
+	pass