diff options
author | George Marques <george@gmarqu.es> | 2020-08-17 21:02:49 -0300 |
---|---|---|
committer | George Marques <george@gmarqu.es> | 2020-08-17 21:02:49 -0300 |
commit | d06ce2f11ec109f6568329438416a63fc09b96f2 (patch) | |
tree | a659a204cb333832df3675fa10fe95b6ffcd4626 /modules/gdscript/gdscript_parser.cpp | |
parent | f374021d52990189d41ca1c3f9353e381e4c5c4e (diff) | |
download | redot-engine-d06ce2f11ec109f6568329438416a63fc09b96f2.tar.gz |
GDScript: Fix editor crash when writing @tool annotation
Diffstat (limited to 'modules/gdscript/gdscript_parser.cpp')
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 0967f74285..d1ba8cd84d 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -494,16 +494,18 @@ void GDScriptParser::parse_program() { if (match(GDScriptTokenizer::Token::ANNOTATION)) { // Check for @tool annotation. AnnotationNode *annotation = parse_annotation(AnnotationInfo::SCRIPT | AnnotationInfo::CLASS_LEVEL); - if (annotation->name == "@tool") { - // TODO: don't allow @tool anywhere else. (Should all script annotations be the first thing?). - _is_tool = true; - if (previous.type != GDScriptTokenizer::Token::NEWLINE) { - push_error(R"(Expected newline after "@tool" annotation.)"); - } - // @tool annotation has no specific target. - annotation->apply(this, nullptr); - } else { - annotation_stack.push_back(annotation); + if (annotation != nullptr) { + if (annotation->name == "@tool") { + // TODO: don't allow @tool anywhere else. (Should all script annotations be the first thing?). + _is_tool = true; + if (previous.type != GDScriptTokenizer::Token::NEWLINE) { + push_error(R"(Expected newline after "@tool" annotation.)"); + } + // @tool annotation has no specific target. + annotation->apply(this, nullptr); + } else { + annotation_stack.push_back(annotation); + } } } |