소스 검색

Fix #8674, and rename a few things for clarity

Bojidar Marinov 8 년 전
부모
커밋
837a667225
3개의 변경된 파일16개의 추가작업 그리고 10개의 파일을 삭제
  1. 1 1
      modules/gdscript/gd_editor.cpp
  2. 14 8
      modules/gdscript/gd_parser.cpp
  3. 1 1
      modules/gdscript/gd_parser.h

+ 1 - 1
modules/gdscript/gd_editor.cpp

@@ -2395,7 +2395,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
 			}
 
 		} break;
-		case GDParser::COMPLETION_PRELOAD: {
+		case GDParser::COMPLETION_RESOURCE_PATH: {
 
 			if (EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths"))
 				get_directory_contents(EditorFileSystem::get_singleton()->get_filesystem(), options);

+ 14 - 8
modules/gdscript/gd_parser.cpp

@@ -387,15 +387,21 @@ GDParser::Node *GDParser::_parse_expression(Node *p_parent, bool p_static, bool
 				_set_error("Expected '(' after 'preload'");
 				return NULL;
 			}
-			completion_cursor = StringName();
-			completion_type = COMPLETION_PRELOAD;
-			completion_class = current_class;
-			completion_function = current_function;
-			completion_line = tokenizer->get_token_line();
-			completion_block = current_block;
-			completion_found = true;
 			tokenizer->advance();
 
+			if (tokenizer->get_token() == GDTokenizer::TK_CURSOR) {
+				completion_cursor = StringName();
+				completion_node = p_parent;
+				completion_type = COMPLETION_RESOURCE_PATH;
+				completion_class = current_class;
+				completion_function = current_function;
+				completion_line = tokenizer->get_token_line();
+				completion_block = current_block;
+				completion_argument = 0;
+				completion_found = true;
+				tokenizer->advance();
+			}
+
 			String path;
 			bool found_constant = false;
 			bool valid = false;
@@ -467,10 +473,10 @@ GDParser::Node *GDParser::_parse_expression(Node *p_parent, bool p_static, bool
 				_set_error("Expected ')' after 'preload' path");
 				return NULL;
 			}
+			tokenizer->advance();
 
 			ConstantNode *constant = alloc_node<ConstantNode>();
 			constant->value = res;
-			tokenizer->advance();
 
 			expr = constant;
 		} else if (tokenizer->get_token() == GDTokenizer::TK_PR_YIELD) {

+ 1 - 1
modules/gdscript/gd_parser.h

@@ -437,7 +437,7 @@ public:
 		COMPLETION_PARENT_FUNCTION,
 		COMPLETION_METHOD,
 		COMPLETION_CALL_ARGUMENTS,
-		COMPLETION_PRELOAD,
+		COMPLETION_RESOURCE_PATH,
 		COMPLETION_INDEX,
 		COMPLETION_VIRTUAL_FUNC,
 		COMPLETION_YIELD,