Rare Commentaar

Issue #916 new
Roy S created an issue

Er is er iets raars aan de hand met lege "single-line" commentaar.

procedure main(){
--
    print("lua commentaar zonder tab")
    --
    print("lua commentaar met tab")
//
    print("idp commentaar zonder tab")
    //
    print("idp commentaar met tab")
}

Normaal gezien zou dit gewoon vier dingen uitprinten, en de (lege) commentaar die op de vorige lijnen staan zou geen invloed mogen hebben.

Maar als ik dit met de laatste nieuwe versie (3.5) uitvoer, krijg ik alleen dit te zien:

lua commentaar met tab

En als ik dit met de oudere versie (3.4) uitvoer, krijg ik dit te zien (wat ik zou verwachten):

lua commentaar zonder tab
lua commentaar met tab
idp commentaar zonder tab
idp commentaar met tab

En dan is er nog iets raar met multi-line commentaar in lua (dus met die vierkante haakjes):

procedure main(){
    --[[
    multi-line commentaar
    --]]
}

Dat werkt zonder problemen (en print ook niets uit, zoals verwacht), maar als ik in de commentaar een accolade haakje zet, dan werkt het niet meer (in 3.4 en 3.5):

procedure main(){
    --[[
    multi-line commentaar met een accolade haakje: }
    --]]
}

Dan krijg ik een error:

Error: [string "local function main()..."]:5: unfinished long comment near '<eof>' At test.idp:5:1
Error: syntax error, unexpected '}' At test.idp:5:1

Tenzij dat er een haakje open en een sluitend haakje is:

procedure main(){
    --[[
    multi-line commentaar met een accolade haakjes (werkt wel): {}
    --]]
}

edit1:En ten slotte: als je achter die single-line commentaar een /* zet (en een newline), dan krijg ik een error in 3.5. Terwijl het gewoon werkt in 3.4.

procedure main(){
///*
    print("a")
}

output in 3.5:

Error: syntax error, unexpected $end, expecting LUACHUNK At test.idp:4:1

output in 3.4:

a

edit2: er lijkt ook een probleem te zijn met accolade haakjes in strings, maar alleen als er ook een quote instaat die ge-escaped wordt met een backslash.

procedure main(){
    print("accolade haakjes kunnen afgeprint worden {")
    print("\"quotes\" kunnen afgeprint worden (met backslash) \"")
    print(" maar \"quotes\" en accolade haakjes? {")
    print("de vorige lijn in commentaar zetten geeft ook een error")
}

edit3: Ik hoop dat dit het laatste is, maar er is precies ook een probleem als er een accolade haakje in een string staat met single quotes '.

procedure main(){
    //geen probleem
    print('}')
    //wel een probleem
    print('a}')
}

Comments (7)

  1. Roy S reporter

    Ik ben nog iets vergeten, als je achter die single-line commentaar een /* zet (en een newline), dan krijg ik een error in 3.5. Terwijl het gewoon werkt in 3.4.

    procedure main(){
    ///*
        print("a")
    }
    

    output in 3.5:

    Error: syntax error, unexpected $end, expecting LUACHUNK At test.idp:4:1
    

    output in 3.4:

    a
    
  2. Log in to comment