Fixed compiler warning in Scanner

main
oabrivard 2 years ago
parent 67985365df
commit d084a027c5

@ -23,7 +23,7 @@ class Lox {
print("> ")
val line = readlnOrNull() ?: break
run(line)
hadError = false;
hadError = false
}
}
@ -48,7 +48,7 @@ class Lox {
report(line, "", s)
}
private fun report(line: Int, where: String, message: String) {
fun report(line: Int, where: String, message: String) {
System.err.println("[line $line] Error$where: $message")
}
}

@ -13,17 +13,12 @@ import fr.celticinfo.lox.TokenType.*
* @property current The current index in the source code.
* @property line The current line number in the source code.
*/
class Scanner {
private val source: String
class Scanner(private val source: String) {
private val tokens: MutableList<Token> = mutableListOf()
private var start = 0
private var current = 0
private var line = 1
constructor(source: String) {
this.source = source
}
fun scanTokens(): List<Token> {
while (!isAtEnd()) {
// We are at the beginning of the next lexeme.
@ -31,7 +26,7 @@ class Scanner {
scanToken()
}
tokens.add(Token(TokenType.EOF, "", null, line))
tokens.add(Token(EOF, "", null, line))
return tokens
}
@ -113,7 +108,7 @@ class Scanner {
return
}
// The closing ".
// The closing '"'.
advance()
// Trim the surrounding quotes.

@ -2,15 +2,17 @@ package fr.celticinfo.lox
import org.junit.jupiter.api.Test
import kotlin.test.*
import fr.celticinfo.lox.TokenType.*
class TokenTest {
@Test
fun testToString() {
val token = Token(TokenType.IDENTIFIER, "foo", null, 1)
val token = Token(IDENTIFIER, "foo", null, 1)
assertEquals("IDENTIFIER foo null 1", token.toString())
val token2 = Token(TokenType.STRING, "bar", "baz", 2)
val token2 = Token(STRING, "bar", "baz", 2)
assertEquals("STRING bar baz 2", token2.toString())
}
}

@ -2,55 +2,57 @@ package fr.celticinfo.lox
import org.junit.jupiter.api.Test
import kotlin.test.*
import fr.celticinfo.lox.TokenType.*
class TokenTypeTest {
@Test
fun `TokenType contains expected values`() {
assertTrue(TokenType.values().contains(TokenType.LEFT_PAREN))
assertTrue(TokenType.values().contains(TokenType.RIGHT_PAREN))
assertTrue(TokenType.values().contains(TokenType.LEFT_BRACE))
assertTrue(TokenType.values().contains(TokenType.RIGHT_BRACE))
assertTrue(TokenType.values().contains(TokenType.COMMA))
assertTrue(TokenType.values().contains(TokenType.DOT))
assertTrue(TokenType.values().contains(TokenType.MINUS))
assertTrue(TokenType.values().contains(TokenType.PLUS))
assertTrue(TokenType.values().contains(TokenType.SEMICOLON))
assertTrue(TokenType.values().contains(TokenType.SLASH))
assertTrue(TokenType.values().contains(TokenType.STAR))
assertTrue(TokenType.values().contains(TokenType.BANG))
assertTrue(TokenType.values().contains(TokenType.BANG_EQUAL))
assertTrue(TokenType.values().contains(TokenType.EQUAL))
assertTrue(TokenType.values().contains(TokenType.EQUAL_EQUAL))
assertTrue(TokenType.values().contains(TokenType.GREATER))
assertTrue(TokenType.values().contains(TokenType.GREATER_EQUAL))
assertTrue(TokenType.values().contains(TokenType.LESS))
assertTrue(TokenType.values().contains(TokenType.LESS_EQUAL))
assertTrue(TokenType.values().contains(TokenType.IDENTIFIER))
assertTrue(TokenType.values().contains(TokenType.STRING))
assertTrue(TokenType.values().contains(TokenType.NUMBER))
assertTrue(TokenType.values().contains(TokenType.AND))
assertTrue(TokenType.values().contains(TokenType.CLASS))
assertTrue(TokenType.values().contains(TokenType.ELSE))
assertTrue(TokenType.values().contains(TokenType.FALSE))
assertTrue(TokenType.values().contains(TokenType.FUN))
assertTrue(TokenType.values().contains(TokenType.FOR))
assertTrue(TokenType.values().contains(TokenType.IF))
assertTrue(TokenType.values().contains(TokenType.NIL))
assertTrue(TokenType.values().contains(TokenType.OR))
assertTrue(TokenType.values().contains(TokenType.PRINT))
assertTrue(TokenType.values().contains(TokenType.RETURN))
assertTrue(TokenType.values().contains(TokenType.SUPER))
assertTrue(TokenType.values().contains(TokenType.THIS))
assertTrue(TokenType.values().contains(TokenType.TRUE))
assertTrue(TokenType.values().contains(TokenType.VAR))
assertTrue(TokenType.values().contains(TokenType.WHILE))
assertTrue(TokenType.values().contains(TokenType.EOF))
assertEquals(39, TokenType.values().size)
val tokenTypeEntries = TokenType.entries.toTypedArray()
assertTrue(tokenTypeEntries.contains(LEFT_PAREN))
assertTrue(tokenTypeEntries.contains(RIGHT_PAREN))
assertTrue(tokenTypeEntries.contains(LEFT_BRACE))
assertTrue(tokenTypeEntries.contains(RIGHT_BRACE))
assertTrue(tokenTypeEntries.contains(COMMA))
assertTrue(tokenTypeEntries.contains(DOT))
assertTrue(tokenTypeEntries.contains(MINUS))
assertTrue(tokenTypeEntries.contains(PLUS))
assertTrue(tokenTypeEntries.contains(SEMICOLON))
assertTrue(tokenTypeEntries.contains(SLASH))
assertTrue(tokenTypeEntries.contains(STAR))
assertTrue(tokenTypeEntries.contains(BANG))
assertTrue(tokenTypeEntries.contains(BANG_EQUAL))
assertTrue(tokenTypeEntries.contains(EQUAL))
assertTrue(tokenTypeEntries.contains(EQUAL_EQUAL))
assertTrue(tokenTypeEntries.contains(GREATER))
assertTrue(tokenTypeEntries.contains(GREATER_EQUAL))
assertTrue(tokenTypeEntries.contains(LESS))
assertTrue(tokenTypeEntries.contains(LESS_EQUAL))
assertTrue(tokenTypeEntries.contains(IDENTIFIER))
assertTrue(tokenTypeEntries.contains(STRING))
assertTrue(tokenTypeEntries.contains(NUMBER))
assertTrue(tokenTypeEntries.contains(AND))
assertTrue(tokenTypeEntries.contains(CLASS))
assertTrue(tokenTypeEntries.contains(ELSE))
assertTrue(tokenTypeEntries.contains(FALSE))
assertTrue(tokenTypeEntries.contains(FUN))
assertTrue(tokenTypeEntries.contains(FOR))
assertTrue(tokenTypeEntries.contains(IF))
assertTrue(tokenTypeEntries.contains(NIL))
assertTrue(tokenTypeEntries.contains(OR))
assertTrue(tokenTypeEntries.contains(PRINT))
assertTrue(tokenTypeEntries.contains(RETURN))
assertTrue(tokenTypeEntries.contains(SUPER))
assertTrue(tokenTypeEntries.contains(THIS))
assertTrue(tokenTypeEntries.contains(TRUE))
assertTrue(tokenTypeEntries.contains(VAR))
assertTrue(tokenTypeEntries.contains(WHILE))
assertTrue(tokenTypeEntries.contains(EOF))
assertEquals(39, tokenTypeEntries.size)
}
}
Loading…
Cancel
Save