Skip to content

Syntax Error on multilined class constant with comment #1151

Open
@shufo

Description

@shufo

/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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions