Skip to content

Commit 9660945

Browse files
committed
fix error properties
1 parent 8972928 commit 9660945

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

src/parser.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ parser.prototype.raiseError = function(message, msgExpect, expect, token) {
189189
var err = new SyntaxError(
190190
message, this.filename, this.lexer.yylloc.first_line
191191
);
192+
err.lineNumber = this.lexer.yylloc.first_line;
193+
err.fileName = this.filename;
192194
err.columnNumber = this.lexer.yylloc.first_column
193195
throw err;
194196
}

test/astTests.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,23 @@ describe('Test AST structure', function() {
1111

1212

1313
it('test syntax error', function() {
14+
var err = null;
1415
(function(){
15-
var ast = parser.parseCode([
16-
'<?php',
17-
' $a = 1',
18-
' $b = 2' // <-- unexpected $b expecting a ';'
19-
].join('\n'));
16+
try {
17+
var ast = parser.parseCode([
18+
'<?php',
19+
' $a = 1',
20+
' $b = 2' // <-- unexpected $b expecting a ';'
21+
].join('\n'), 'foo.php');
22+
} catch(e) {
23+
err = e;
24+
throw e;
25+
}
2026
}).should.throw(/line\s3/);
27+
err.name.should.be.exactly('SyntaxError');
28+
err.lineNumber.should.be.exactly(3);
29+
err.fileName.should.be.exactly('foo.php');
30+
err.columnNumber.should.be.exactly(1);
2131
});
2232

2333
it('test inline', function() {

0 commit comments

Comments
 (0)