miss_hit icon indicating copy to clipboard operation
miss_hit copied to clipboard

Enumeration with empty argument list results in parse error

Open pvogt09 opened this issue 3 months ago • 3 comments

MISS_HIT Component affected

  • Style checker

Your MATLAB/Octave environment

  • MATLAB
  • R2023B

Your operating system and Python version

  • Linux
  • Python 3.8.10

Describe the bug Applying the style checker to the file

classdef (Enumeration) Version < handle
    % VERSION class to represent a version of matlab

    enumeration
        % currently running version
        CURRENT()
        % R2023B
        R2023B('R2023B', 50, 23.2,  23.2)
        % R2023A
        R2023A('R2023A', 49, 9.14,  10.7)
    end

    properties (SetAccess = private)
        % name of matlab version
        name
        % number of matlab version
        number
        % version number of matlab version
        matlabversion
        % version number of simulink version
        simulinkversion
    end

    methods

        function [isgreateroreq] = ge(this, that)
            % GE return, if version is greater or equal than given version
            %   Input:
            %       this:           instance
            %       that:           version to compare to, if none is given, current version is used for comparison
            %   Output:
            %       isgreateroreq:  indicator, if version is greater than or equal the given version or current version, if no version to compare to is supplied
            if nargin <= 1
                that = matlab.Version.CURRENT();
            end
            isgreateroreq = ~this.less(that);
        end

    end

    methods (Access = private)

        function [this] = Version(name, number, matlabversion, simulinkversion)
            % VERSION create new version object
            %   Input:
            %       name:               name of matlab release
            %       number:             number of matlab release
            %       matlabversion:      version number of matlab release
            %       simulinkversion:    version number of simulink release
            if nargin == 0
                version = ver;
                names = {version.Name};
                matlab = strcmpi(names, 'MATLAB');
                simulink = strcmpi(names, 'SIMULINK');
                if ~any(matlab) || ~any(simulink)
                    error('matlab:version', 'Error in parsing version strings for current matlab version.');
                end
                this.name = upper(strrep(strrep(version(matlab).Release, '(', ''), ')', ''));
                this.number = 0;
                this.matlabversion = str2double(version(matlab).Version);
                this.simulinkversion = str2double(version(simulink).Version);
            else
                this.name = name;
                this.number = number;
                this.matlabversion = matlabversion;
                this.simulinkversion = simulinkversion;
            end
        end

    end
end

results in a parse error

In Version.m, line 6
|           CURRENT()
|                   ^ error: expected IDENTIFIER, found KET instead

that should not occur because it is valid to have the enumeration constructor called with an empty argument list.

pvogt09 avatar Apr 11 '24 15:04 pvogt09