Skip to content

Commit

Permalink
[error] Check const is followed by an identifier.
Browse files Browse the repository at this point in the history
  • Loading branch information
pfusik committed Apr 20, 2024
1 parent 645186a commit 8de22ab
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 9 deletions.
4 changes: 2 additions & 2 deletions Parser.fu
Original file line number Diff line number Diff line change
Expand Up @@ -555,8 +555,8 @@ public class FuParser : FuLexer
FuConst# ParseConst!(FuVisibility visibility)
{
Expect(FuToken.Const);
FuConst# konst = new FuConst { Visibility = visibility, TypeExpr = ParseType(), Loc = this.TokenLoc, Name = this.StringValue, VisitStatus = FuVisitStatus.NotYet };
NextToken();
FuConst# konst = new FuConst { Visibility = visibility, TypeExpr = ParseType(), VisitStatus = FuVisitStatus.NotYet };
ParseName(konst);
Expect(FuToken.Assign);
konst.Value = ParseConstInitializer();
CloseMember(FuToken.Semicolon, konst);
Expand Down
4 changes: 1 addition & 3 deletions libfut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3704,10 +3704,8 @@ std::shared_ptr<FuConst> FuParser::parseConst(FuVisibility visibility)
std::shared_ptr<FuConst> konst = std::make_shared<FuConst>();
konst->visibility = visibility;
konst->typeExpr = parseType();
konst->loc = this->tokenLoc;
konst->name = this->stringValue;
konst->visitStatus = FuVisitStatus::notYet;
nextToken();
parseName(konst.get());
expect(FuToken::assign);
konst->value = parseConstInitializer();
closeMember(FuToken::semicolon, konst.get());
Expand Down
4 changes: 2 additions & 2 deletions libfut.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4030,8 +4030,8 @@ FuVar ParseVar(FuExpr type, bool initializer)
FuConst ParseConst(FuVisibility visibility)
{
Expect(FuToken.Const);
FuConst konst = new FuConst { Visibility = visibility, TypeExpr = ParseType(), Loc = this.TokenLoc, Name = this.StringValue, VisitStatus = FuVisitStatus.NotYet };
NextToken();
FuConst konst = new FuConst { Visibility = visibility, TypeExpr = ParseType(), VisitStatus = FuVisitStatus.NotYet };
ParseName(konst);
Expect(FuToken.Assign);
konst.Value = ParseConstInitializer();
CloseMember(FuToken.Semicolon, konst);
Expand Down
4 changes: 2 additions & 2 deletions libfut.js
Original file line number Diff line number Diff line change
Expand Up @@ -4232,8 +4232,8 @@ export class FuParser extends FuLexer
#parseConst(visibility)
{
this.expect(FuToken.CONST);
let konst = Object.assign(new FuConst(), { visibility: visibility, typeExpr: this.#parseType(), loc: this.tokenLoc, name: this.stringValue, visitStatus: FuVisitStatus.NOT_YET });
this.nextToken();
let konst = Object.assign(new FuConst(), { visibility: visibility, typeExpr: this.#parseType(), visitStatus: FuVisitStatus.NOT_YET });
this.#parseName(konst);
this.expect(FuToken.ASSIGN);
konst.value = this.#parseConstInitializer();
this.#closeMember(FuToken.SEMICOLON, konst);
Expand Down
8 changes: 8 additions & 0 deletions test/error/ConstNameNotId.fu
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
public static class Test
{
public static bool Run()
{
const bool "wtf" = true; //ERROR: Expected identifier, got string constant
return wtf;
}
}

0 comments on commit 8de22ab

Please sign in to comment.