From 6572d5128856b2ec55a2c417c92e584899f4906f Mon Sep 17 00:00:00 2001
From: Juan Linietsky <reduzio@gmail.com>
Date: Thu, 1 May 2014 11:34:10 -0300
Subject: -Fixes to OpenSSL compilation (more) -Fix bug in GDScript, now static
 functions can call static functions.

---
 modules/gdscript/gd_compiler.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'modules/gdscript/gd_compiler.cpp')

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;
-- 
cgit v1.2.3