From d084a027c5d6fee4a50c811864e454367f0e6b1e Mon Sep 17 00:00:00 2001 From: oabrivard Date: Sun, 23 Jun 2024 00:25:24 +0200 Subject: [PATCH] Fixed compiler warning in Scanner --- src/main/fr/celticinfo/lox/Lox.kt | 4 +- src/main/fr/celticinfo/lox/Scanner.kt | 11 +-- src/test/fr/celticinfo/lox/TokenTest.kt | 6 +- src/test/fr/celticinfo/lox/TokenTypeTest.kt | 92 +++++++++++---------- 4 files changed, 56 insertions(+), 57 deletions(-) diff --git a/src/main/fr/celticinfo/lox/Lox.kt b/src/main/fr/celticinfo/lox/Lox.kt index a62977e..dd2a1f6 100644 --- a/src/main/fr/celticinfo/lox/Lox.kt +++ b/src/main/fr/celticinfo/lox/Lox.kt @@ -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") } } diff --git a/src/main/fr/celticinfo/lox/Scanner.kt b/src/main/fr/celticinfo/lox/Scanner.kt index 508087d..e0fd62f 100644 --- a/src/main/fr/celticinfo/lox/Scanner.kt +++ b/src/main/fr/celticinfo/lox/Scanner.kt @@ -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 = mutableListOf() private var start = 0 private var current = 0 private var line = 1 - constructor(source: String) { - this.source = source - } - fun scanTokens(): List { 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. diff --git a/src/test/fr/celticinfo/lox/TokenTest.kt b/src/test/fr/celticinfo/lox/TokenTest.kt index e70420b..5dbbbe7 100644 --- a/src/test/fr/celticinfo/lox/TokenTest.kt +++ b/src/test/fr/celticinfo/lox/TokenTest.kt @@ -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()) } } \ No newline at end of file diff --git a/src/test/fr/celticinfo/lox/TokenTypeTest.kt b/src/test/fr/celticinfo/lox/TokenTypeTest.kt index ec35be8..4129f3f 100644 --- a/src/test/fr/celticinfo/lox/TokenTypeTest.kt +++ b/src/test/fr/celticinfo/lox/TokenTypeTest.kt @@ -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) } } \ No newline at end of file