GDScript: Fix editor crash when writing @tool annotation

This commit is contained in:
George Marques 2020-08-17 21:02:49 -03:00
parent f374021d52
commit d06ce2f11e
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D

View file

@ -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.)");
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);
}
// @tool annotation has no specific target.
annotation->apply(this, nullptr);
} else {
annotation_stack.push_back(annotation);
}
}