Merge pull request #70138 from anvilfolk/signals
Add MethodInfo to signal datatype
This commit is contained in:
commit
801ef6614d
3 changed files with 18 additions and 11 deletions
|
@ -901,18 +901,19 @@ void GDScriptAnalyzer::resolve_class_member(GDScriptParser::ClassNode *p_class,
|
||||||
|
|
||||||
member.signal->set_datatype(resolving_datatype);
|
member.signal->set_datatype(resolving_datatype);
|
||||||
|
|
||||||
for (int j = 0; j < member.signal->parameters.size(); j++) {
|
// This is the _only_ way to declare a signal. Therefore, we can generate its
|
||||||
GDScriptParser::DataType signal_type = resolve_datatype(member.signal->parameters[j]->datatype_specifier);
|
// MethodInfo inline so it's a tiny bit more efficient.
|
||||||
signal_type.is_meta_type = false;
|
MethodInfo mi = MethodInfo(member.signal->identifier->name);
|
||||||
member.signal->parameters[j]->set_datatype(signal_type);
|
|
||||||
}
|
|
||||||
// TODO: Make MethodInfo from signal.
|
|
||||||
GDScriptParser::DataType signal_type;
|
|
||||||
signal_type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
|
|
||||||
signal_type.kind = GDScriptParser::DataType::BUILTIN;
|
|
||||||
signal_type.builtin_type = Variant::SIGNAL;
|
|
||||||
|
|
||||||
member.signal->set_datatype(signal_type);
|
for (int j = 0; j < member.signal->parameters.size(); j++) {
|
||||||
|
GDScriptParser::ParameterNode *param = member.signal->parameters[j];
|
||||||
|
GDScriptParser::DataType param_type = resolve_datatype(param->datatype_specifier);
|
||||||
|
param_type.is_meta_type = false;
|
||||||
|
param->set_datatype(param_type);
|
||||||
|
mi.arguments.push_back(PropertyInfo(param_type.builtin_type, param->identifier->name));
|
||||||
|
// TODO: add signal parameter default values
|
||||||
|
}
|
||||||
|
member.signal->set_datatype(make_signal_type(mi));
|
||||||
|
|
||||||
// Apply annotations.
|
// Apply annotations.
|
||||||
for (GDScriptParser::AnnotationNode *&E : member.signal->annotations) {
|
for (GDScriptParser::AnnotationNode *&E : member.signal->annotations) {
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
signal your_base
|
||||||
|
signal my_base
|
||||||
|
func test():
|
||||||
|
your_base = my_base
|
|
@ -0,0 +1,2 @@
|
||||||
|
GDTEST_ANALYZER_ERROR
|
||||||
|
Cannot assign a new value to a constant.
|
Loading…
Add table
Reference in a new issue