From 044445bd1c23ae2848b4df7fa768b90b703e95dd Mon Sep 17 00:00:00 2001 From: dlilley Date: Fri, 13 Sep 2024 13:13:09 -0400 Subject: [PATCH] Fix grammar when there is a line continuation after class attributes --- Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage | 8 +++++--- test/t93ContinuationAfterClassAttributes.m | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 test/t93ContinuationAfterClassAttributes.m diff --git a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage index a116e88..143e386 100644 --- a/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage +++ b/Matlab.tmbundle/Syntaxes/MATLAB.tmLanguage @@ -789,12 +789,10 @@ name storage.modifier.section.class.matlab - comment - This breaks if there is a line continuation between end of attrs and name, but works for line continuations inside attrs. Line continuations are a mistake. begin \G\( end - \)(?=\s*\w+) + \) patterns @@ -961,6 +959,10 @@ include #comments + + include + #line_continuation + diff --git a/test/t93ContinuationAfterClassAttributes.m b/test/t93ContinuationAfterClassAttributes.m new file mode 100644 index 0000000..a6c90e6 --- /dev/null +++ b/test/t93ContinuationAfterClassAttributes.m @@ -0,0 +1,17 @@ +% SYNTAX TEST "source.matlab" "Line continuation after class attributes: https://github.com/mathworks/MATLAB-Language-grammar/issues/93" + +% Case 1: Line continuation without attributes +classdef ... +% ^^^ meta.class.declaration.matlab punctuation.separator.continuation.line.matlab + Class1 +% ^^^^^^ meta.class.declaration.matlab entity.name.type.class.matlab +end + +% Case 2: Line continuation with attributes +classdef (Abstract) ... +% ^^^^^^^^^^^^^^ meta.class.declaration.matlab +% ^^^^^^^^^^ storage.modifier.section.class.matlab +% ^^^ punctuation.separator.continuation.line.matlab + Class2 +% ^^^^^^ meta.class.declaration.matlab entity.name.type.class.matlab +end \ No newline at end of file