@@ -932,7 +932,8 @@ export class Parser extends DiagnosticEmitter {
932932 if ( ( flags & CommonFlags . DEFINITE_ASSIGNMENT ) != 0 && initializer !== null ) {
933933 this . error (
934934 DiagnosticCode . A_definite_assignment_assertion_is_not_permitted_in_this_context ,
935- range ) ;
935+ range
936+ ) ;
936937 }
937938 return Node . createVariableDeclaration (
938939 identifier ,
@@ -1775,11 +1776,11 @@ export class Parser extends DiagnosticEmitter {
17751776 // ('get' | 'set')?
17761777 // Identifier ...
17771778
1778- var startPos = tn . pos ;
17791779 var isInterface = parent . kind == NodeKind . INTERFACEDECLARATION ;
1780-
1780+ var startPos = 0 ;
17811781 var decorators : DecoratorNode [ ] | null = null ;
17821782 if ( tn . skip ( Token . AT ) ) {
1783+ startPos = tn . tokenPos ;
17831784 do {
17841785 let decorator = this . parseDecorator ( tn ) ;
17851786 if ( ! decorator ) break ;
@@ -1812,6 +1813,7 @@ export class Parser extends DiagnosticEmitter {
18121813 flags |= CommonFlags . PUBLIC ;
18131814 accessStart = tn . tokenPos ;
18141815 accessEnd = tn . pos ;
1816+ if ( ! startPos ) startPos = accessStart ;
18151817 } else if ( tn . skip ( Token . PRIVATE ) ) {
18161818 if ( isInterface ) {
18171819 this . error (
@@ -1822,6 +1824,7 @@ export class Parser extends DiagnosticEmitter {
18221824 flags |= CommonFlags . PRIVATE ;
18231825 accessStart = tn . tokenPos ;
18241826 accessEnd = tn . pos ;
1827+ if ( ! startPos ) startPos = accessStart ;
18251828 } else if ( tn . skip ( Token . PROTECTED ) ) {
18261829 if ( isInterface ) {
18271830 this . error (
@@ -1832,6 +1835,7 @@ export class Parser extends DiagnosticEmitter {
18321835 flags |= CommonFlags . PROTECTED ;
18331836 accessStart = tn . tokenPos ;
18341837 accessEnd = tn . pos ;
1838+ if ( ! startPos ) startPos = accessStart ;
18351839 }
18361840
18371841 var staticStart = 0 ;
@@ -1848,6 +1852,7 @@ export class Parser extends DiagnosticEmitter {
18481852 flags |= CommonFlags . STATIC ;
18491853 staticStart = tn . tokenPos ;
18501854 staticEnd = tn . pos ;
1855+ if ( ! startPos ) startPos = staticStart ;
18511856 } else {
18521857 flags |= CommonFlags . INSTANCE ;
18531858 if ( tn . skip ( Token . ABSTRACT ) ) {
@@ -1860,6 +1865,7 @@ export class Parser extends DiagnosticEmitter {
18601865 flags |= CommonFlags . ABSTRACT ;
18611866 abstractStart = tn . tokenPos ;
18621867 abstractEnd = tn . pos ;
1868+ if ( ! startPos ) startPos = abstractStart ;
18631869 }
18641870 if ( parent . flags & CommonFlags . GENERIC ) flags |= CommonFlags . GENERIC_CONTEXT ;
18651871 }
@@ -1874,6 +1880,7 @@ export class Parser extends DiagnosticEmitter {
18741880 flags |= CommonFlags . READONLY ;
18751881 readonlyStart = tn . tokenPos ;
18761882 readonlyEnd = tn . pos ;
1883+ if ( ! startPos ) startPos = readonlyStart ;
18771884 } else { // identifier
18781885 tn . reset ( state ) ;
18791886 }
@@ -1893,8 +1900,9 @@ export class Parser extends DiagnosticEmitter {
18931900 if ( tn . peek ( true , IdentifierHandling . PREFER ) == Token . IDENTIFIER && ! tn . nextTokenOnNewLine ) {
18941901 flags |= CommonFlags . GET ;
18951902 isGetter = true ;
1896- setStart = tn . tokenPos ;
1897- setEnd = tn . pos ;
1903+ getStart = tn . tokenPos ;
1904+ getEnd = tn . pos ;
1905+ if ( ! startPos ) startPos = getStart ;
18981906 if ( flags & CommonFlags . READONLY ) {
18991907 this . error (
19001908 DiagnosticCode . _0_modifier_cannot_be_used_here ,
@@ -1910,6 +1918,7 @@ export class Parser extends DiagnosticEmitter {
19101918 isSetter = true ;
19111919 setStart = tn . tokenPos ;
19121920 setEnd = tn . pos ;
1921+ if ( ! startPos ) startPos = setStart ;
19131922 if ( flags & CommonFlags . READONLY ) {
19141923 this . error (
19151924 DiagnosticCode . _0_modifier_cannot_be_used_here ,
@@ -1922,6 +1931,7 @@ export class Parser extends DiagnosticEmitter {
19221931 } else if ( tn . skip ( Token . CONSTRUCTOR ) ) {
19231932 flags |= CommonFlags . CONSTRUCTOR ;
19241933 isConstructor = true ;
1934+ if ( ! startPos ) startPos = tn . tokenPos ;
19251935 if ( flags & CommonFlags . STATIC ) {
19261936 this . error (
19271937 DiagnosticCode . _0_modifier_cannot_be_used_here ,
@@ -1948,6 +1958,7 @@ export class Parser extends DiagnosticEmitter {
19481958 name = Node . createConstructorExpression ( tn . range ( ) ) ;
19491959 } else {
19501960 if ( ! ( isGetter || isSetter ) && tn . skip ( Token . OPENBRACKET ) ) {
1961+ if ( ! startPos ) startPos = tn . tokenPos ;
19511962 // TODO: also handle symbols, which might have some of these modifiers
19521963 if ( flags & CommonFlags . PUBLIC ) {
19531964 this . error (
@@ -1997,6 +2008,7 @@ export class Parser extends DiagnosticEmitter {
19972008 ) ;
19982009 return null ;
19992010 }
2011+ if ( ! startPos ) startPos = tn . tokenPos ;
20002012 name = Node . createIdentifierExpression ( tn . readIdentifier ( ) , tn . range ( ) ) ;
20012013 }
20022014 var typeParameters : TypeParameterNode [ ] | null = null ;
0 commit comments