diff options
| author | Juan Linietsky | 2014-05-01 11:34:10 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2014-05-01 11:34:10 -0300 |
| commit | 6572d5128856b2ec55a2c417c92e584899f4906f (patch) | |
| tree | 9e01d6efab14567bfff5dd7b8b3b858d83b1868e /modules/gdscript/gd_compiler.cpp | |
| parent | 4dc4e96c8a4fb7e34ecae3a39ef0f3f3fb275e97 (diff) | |
| download | godot-6572d5128856b2ec55a2c417c92e584899f4906f.tar.gz godot-6572d5128856b2ec55a2c417c92e584899f4906f.tar.zst godot-6572d5128856b2ec55a2c417c92e584899f4906f.zip | |
Diffstat (limited to 'modules/gdscript/gd_compiler.cpp')
| -rw-r--r-- | modules/gdscript/gd_compiler.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp index dd2834bf3..90c83c201 100644 --- a/modules/gdscript/gd_compiler.cpp +++ b/modules/gdscript/gd_compiler.cpp @@ -452,6 +452,7 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre const GDParser::Node *instance = on->arguments[0]; + bool in_static=false; if (instance->type==GDParser::Node::TYPE_SELF) { //room for optimization @@ -465,7 +466,10 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre int ret; - if (i==1) { + if (i==0 && on->arguments[i]->type==GDParser::Node::TYPE_SELF && codegen.function_node && codegen.function_node->_static) { + //static call to self + ret=(GDFunction::ADDR_TYPE_CLASS<<GDFunction::ADDR_BITS); + } else if (i==1) { if (on->arguments[i]->type!=GDParser::Node::TYPE_IDENTIFIER) { _set_error("Attempt to call a non-identifier.",on); @@ -475,6 +479,7 @@ int GDCompiler::_parse_expression(CodeGen& codegen,const GDParser::Node *p_expre ret=codegen.get_name_map_pos(id->name); } else { + ret = _parse_expression(codegen,on->arguments[i],slevel); if (ret<0) return ret; |
