Skip to content

Commit c9fa3e0

Browse files
committed
Added error for missing values in lists
1 parent 91b0dad commit c9fa3e0

4 files changed

Lines changed: 13 additions & 5 deletions

File tree

tpParser/shared/src/main/scala/tigerpython/parser/errormessages/EnglishMessages.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ object EnglishMessages extends ModifiableErrorMessages {
9797
case MISSING_COMMA => "There seems to be a comma missing."
9898
case MISSING_COMPARISON => "There is a comparison missing."
9999
case MISSING_DOT => "There seems to be a dot missing."
100+
case MISSING_EXPRESSION => "There is an expression or value missing here."
100101
case MISSING_LEFT_BRACKET => "There is a missing left bracket or parenthesis: '%s'."
101102
case MISSING_LEFT_PARENTHESIS => "There is a missing left parenthesis '('."
102103
case MISSING_LINE_BREAK => "You need to put '%s' on a new (indented) line."

tpParser/shared/src/main/scala/tigerpython/parser/parsing/ExpressionParser.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,12 @@ class ExpressionParser(val parser: Parser, val parserState: ParserState) {
760760

761761
protected def parseListMaker(tokens: TokenBuffer): Expression = {
762762
val startPos = tokens.head.pos
763-
val test = parseTest(tokens)
763+
val test =
764+
if (tokens.headType == TokenType.COMMA) {
765+
parserState.reportError(tokens, ErrorCode.MISSING_EXPRESSION)
766+
null
767+
} else
768+
parseTest(tokens)
764769
if (tokens.hasType(TokenType.FOR)) {
765770
val c = parseComprehension(tokens)
766771
AstNode.ListComp(startPos, tokens.endPosOfList, test, c)
@@ -792,7 +797,7 @@ class ExpressionParser(val parser: Parser, val parserState: ParserState) {
792797
} else
793798
if (tokens.matchType(TokenType.SEMICOLON))
794799
parserState.reportError(tokens.prevPos, ErrorCode.TYPO, ";", ",")
795-
if (!tokens.matchType(TokenType.COMMA))
800+
else if (!tokens.matchType(TokenType.COMMA))
796801
parserState.reportError(tokens, ErrorCode.MISSING_OPERATOR_OR_COMMA)
797802
if (firstOfTest(tokens))
798803
result += parseTest(tokens)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 1
2+
# MISSING_EXPRESSION
3+
empty_list = [,,,]

tpParser/shared/src/test/scala/DebugTester.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ class DebugTester extends FunSuite {
1414
}
1515

1616
private val PROGRAM: String =
17-
"""def foo(x);
18-
| pass
17+
"""my_list = [,,,]
1918
|
20-
|foo(12)
19+
|print(my_list)
2120
|""".stripMargin
2221

2322
{

0 commit comments

Comments
 (0)