Don't allow class_name in built-in scripts
This commit is contained in:
parent
145a45fd3f
commit
2ad302cec4
5 changed files with 8 additions and 8 deletions
|
@ -264,7 +264,7 @@ public:
|
|||
int location;
|
||||
};
|
||||
|
||||
virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_base_path, Object *p_owner, LookupResult &r_result) { return ERR_UNAVAILABLE; }
|
||||
virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_path, Object *p_owner, LookupResult &r_result) { return ERR_UNAVAILABLE; }
|
||||
|
||||
virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const = 0;
|
||||
virtual void add_global_constant(const StringName &p_variable, const Variant &p_value) = 0;
|
||||
|
|
|
@ -634,7 +634,7 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
|
|||
EditorNode::get_singleton()->load_resource(p_symbol);
|
||||
}
|
||||
|
||||
} else if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), p_symbol, script->get_path().get_base_dir(), base, result) == OK) {
|
||||
} else if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK) {
|
||||
|
||||
_goto_line(p_row);
|
||||
|
||||
|
@ -1256,7 +1256,7 @@ void ScriptTextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
|
|||
base = _find_node_for_script(base, base, script);
|
||||
}
|
||||
ScriptLanguage::LookupResult result;
|
||||
if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), word_at_mouse, script->get_path().get_base_dir(), base, result) == OK) {
|
||||
if (script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), word_at_mouse, script->get_path(), base, result) == OK) {
|
||||
open_docs = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -458,7 +458,7 @@ public:
|
|||
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
|
||||
virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint);
|
||||
#ifdef TOOLS_ENABLED
|
||||
virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_base_path, Object *p_owner, LookupResult &r_result);
|
||||
virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_path, Object *p_owner, LookupResult &r_result);
|
||||
#endif
|
||||
virtual String _get_indentation() const;
|
||||
virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const;
|
||||
|
|
|
@ -3150,7 +3150,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
|
|||
return ERR_CANT_RESOLVE;
|
||||
}
|
||||
|
||||
Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol, const String &p_base_path, Object *p_owner, LookupResult &r_result) {
|
||||
Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol, const String &p_path, Object *p_owner, LookupResult &r_result) {
|
||||
|
||||
//before parsing, try the usual stuff
|
||||
if (ClassDB::class_exists(p_symbol)) {
|
||||
|
@ -3192,7 +3192,7 @@ Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol
|
|||
}
|
||||
|
||||
GDScriptParser parser;
|
||||
parser.parse(p_code, p_base_path, false, "", true);
|
||||
parser.parse(p_code, p_path.get_base_dir(), false, p_path, true);
|
||||
|
||||
if (parser.get_completion_type() == GDScriptParser::COMPLETION_NONE) {
|
||||
return ERR_CANT_RESOLVE;
|
||||
|
@ -3204,7 +3204,7 @@ Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol
|
|||
context.block = parser.get_completion_block();
|
||||
context.line = parser.get_completion_line();
|
||||
context.base = p_owner;
|
||||
context.base_path = p_base_path;
|
||||
context.base_path = p_path.get_base_dir();
|
||||
|
||||
if (context._class && context._class->extends_class.size() > 0) {
|
||||
bool success = false;
|
||||
|
|
|
@ -3500,7 +3500,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
_set_error("'class_name' is only valid for the main class namespace.");
|
||||
return;
|
||||
}
|
||||
if (self_path.empty()) {
|
||||
if (self_path.begins_with("res://") && self_path.find("::") != -1) {
|
||||
_set_error("'class_name' not allowed in built-in scripts.");
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue