Skip to content

Syntax Error on multilined class constant with comment #1151

@shufo

Description

@shufo
Contributor

/cc @genintho

Context

Problem

e.g.

<?php

$var = new class {
    public
    const
    CONSTANT
    // Comment 3
    =
    'string';
};

How to reproduce

  • create test file

vim test.js

const engine = require(".");

// initialize a new parser instance
const parser = new engine({
  // some options :
  parser: {
    extractDoc: true,
    phpVersion: "8.3",
  },
  ast: {
    withPositions: true,
    withSource: true,
  },
});

const target = `
<?php

$var = new class {
    public
    const
    CONSTANT
    // Comment 3
    =
    'string';
};
`;

// Retrieve the AST from the specified source
parser.parseCode(target);
  • execute
$ node test.js
/home/shuhei/develop/php-parser/src/parser.js:357
    throw err;
    ^

SyntaxError: Parse Error : syntax error, unexpected '=' on line 11
    at Parser.raiseError (/home/shuhei/develop/php-parser/src/parser.js:349:17)
    at Parser.error (/home/shuhei/develop/php-parser/src/parser.js:397:15)
    at Parser.expect (/home/shuhei/develop/php-parser/src/parser.js:577:10)
    at Parser.read_constant_declaration (/home/shuhei/develop/php-parser/src/parser/class.js:262:16)
    at Parser.read_list (/home/shuhei/develop/php-parser/src/parser/utils.js:76:33)
    at Parser.read_constant_list (/home/shuhei/develop/php-parser/src/parser/class.js:234:24)
    at Parser.read_class_body (/home/shuhei/develop/php-parser/src/parser/class.js:117:32)
    at Parser.read_new_expr (/home/shuhei/develop/php-parser/src/parser/expr.js:769:28)
    at Parser.read_expr_item (/home/shuhei/develop/php-parser/src/parser/expr.js:353:21)
    at Parser.read_expr (/home/shuhei/develop/php-parser/src/parser/expr.js:18:19) {
  lineNumber: 11,
  fileName: 'eval',
  columnNumber: 4
}

Node.js v20.12.2

Activity

added a commit that references this issue on Jan 13, 2025
8f1e626
added 2 commits that reference this issue on Jun 25, 2025
de0a239
c5e65d8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Participants

      @shufo@cseufert

      Issue actions

        Syntax Error on multilined class constant with comment · Issue #1151 · glayzzle/php-parser