GDScript: Improve evaluation of constant expressions with arrays/dictionaries

This commit is contained in:
Danil Alexeev 2025-11-27 13:36:52 +03:00
parent e9bb99a3bb
commit 6d06b3a7d6
No known key found for this signature in database
GPG key ID: 5A52F75A8679EC57
9 changed files with 446 additions and 115 deletions

View file

@ -10,19 +10,18 @@ static func check(condition: Variant) -> void:
return
printerr("Check failed. Backtrace (most recent call first):")
for stack: ScriptBacktrace in Engine.capture_script_backtraces():
if stack.get_language_name() == "GDScript":
var dir: String
for i: int in stack.get_frame_count():
if i == 0:
dir = stack.get_frame_file(i).trim_suffix("utils.notest.gd")
else:
printerr(" %s:%d @ %s()" % [
stack.get_frame_file(i).trim_prefix(dir),
stack.get_frame_line(i),
stack.get_frame_function(i),
])
break
var stack: Array = get_stack()
var dir: String
for i: int in stack.size():
var frame: Dictionary = stack[i]
if i == 0:
dir = str(frame.source).trim_suffix("utils.notest.gd")
else:
printerr(" %s:%d @ %s()" % [
str(frame.source).trim_prefix(dir),
frame.line,
frame.function,
])
static func get_type(property: Dictionary, is_return: bool = false) -> String: