summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gd_compiler.cpp
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2014-05-01 11:34:10 -0300
committerJuan Linietsky <reduzio@gmail.com>2014-05-01 11:34:10 -0300
commit6572d5128856b2ec55a2c417c92e584899f4906f (patch)
tree9e01d6efab14567bfff5dd7b8b3b858d83b1868e /modules/gdscript/gd_compiler.cpp
parent4dc4e96c8a4fb7e34ecae3a39ef0f3f3fb275e97 (diff)
downloadredot-engine-6572d5128856b2ec55a2c417c92e584899f4906f.tar.gz
-Fixes to OpenSSL compilation (more)
-Fix bug in GDScript, now static functions can call static functions.
Diffstat (limited to 'modules/gdscript/gd_compiler.cpp')
-rw-r--r--modules/gdscript/gd_compiler.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp
index dd2834bf34..90c83c201b 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;