diff --git a/CHANGELOG.md b/CHANGELOG.md index e46a4bbe..8cd91514 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,13 @@ Changelog structure reference: ## [Unreleased] +## [20.2.1] + +### Fixed + +- Zig + - Lexer error when a zig file has a comment or multiline string at the end of file without trailing newline + ## [20.2.0] ### Added diff --git a/core/src/main/grammar/Zig.flex b/core/src/main/grammar/Zig.flex index e2aa8a6d..3a4ce57e 100644 --- a/core/src/main/grammar/Zig.flex +++ b/core/src/main/grammar/Zig.flex @@ -59,7 +59,7 @@ string_char= \\ . | [^\"\n] all_nl_wrap=[^\n]* [ \n]* -all_nl_nowrap=[^\n]* \n +all_no_nl=[^\n]+ FLOAT= "0x" {hex_int} "." {hex_int} ([pP] [-+]? {dec_int})? @@ -92,15 +92,21 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* "//!" { yybegin(CDOC_CMT); } {all_nl_wrap} "//!" { } - {all_nl_nowrap} { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } + {all_no_nl} { } + \n { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } + <> { yybegin(YYINITIAL); return CONTAINER_DOC_COMMENT; } "///" { yybegin(DOC_CMT); } {all_nl_wrap} "///" { } - {all_nl_nowrap} { yybegin(YYINITIAL); return DOC_COMMENT; } + {all_no_nl} { } + \n { yybegin(YYINITIAL); return DOC_COMMENT; } + <> { yybegin(YYINITIAL); return DOC_COMMENT; } "//" { yybegin(LINE_CMT); } {all_nl_wrap} "//" { } - {all_nl_nowrap} { yybegin(YYINITIAL); return LINE_COMMENT; } + {all_no_nl} { } + \n { yybegin(YYINITIAL); return LINE_COMMENT; } + <> { yybegin(YYINITIAL); return LINE_COMMENT; } //Symbols "&" { return AMPERSAND; } @@ -234,7 +240,9 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* [^] { yypushback(1); yybegin(UNT_DQUOT); } "\\\\" { yybegin(STR_MULT_LINE); } {all_nl_wrap} "\\\\" { } - {all_nl_nowrap} { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } + {all_no_nl} { } + \n { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } + <> { yybegin(YYINITIAL); return STRING_LITERAL_MULTI; } {IDENTIFIER_PLAIN} { return IDENTIFIER; } "@\"" { yybegin(ID_QUOT); } @@ -246,10 +254,10 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* <> { yybegin(YYINITIAL); return BAD_SQUOT; } {CRLF} { yybegin(YYINITIAL); return BAD_SQUOT; } - [^\n]+ { } + {all_no_nl} { } <> { yybegin(YYINITIAL); return BAD_DQUOT; } {CRLF} { yybegin(YYINITIAL); return BAD_DQUOT; } - [^\n]+ { } + {all_no_nl} { } {WHITE_SPACE} { return WHITE_SPACE; } diff --git a/gradle.properties b/gradle.properties index 0d12899e..02d96cf3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ pluginName=ZigBrains pluginRepositoryUrl=https://github.com/FalsePattern/ZigBrains -pluginVersion=20.2.0 +pluginVersion=20.2.1 pluginSinceBuild=241 pluginUntilBuild=241.*