Print warning when a tab is discovered where it shouldn't be

This commit is contained in:
Sasha Koshka 2022-08-10 01:22:53 -04:00
parent 0d2d10fe04
commit 245798f33d
3 changed files with 18 additions and 2 deletions

View File

@ -63,6 +63,7 @@ func (err Error) Error () (formattedMessage string) {
columnCountdown --
}
for err.width > 1 {
// TODO: for tabs, print out 8 of these instead.
formattedMessage += "-"
}
formattedMessage += "-\n"

View File

@ -59,8 +59,18 @@ func (lexer *LexingOperation) tokenizeSymbolBeginning () (err error) {
}
case '\t':
// indent level
// TODO: throw error if tab is not at line beginning, or after
// other tab
previousToken := lexer.tokens[len(lexer.tokens) - 1]
if !previousToken.Is(TokenKindNewline) ||
!previousToken.Is(TokenKindNewline) {
file.NewError (
lexer.file.Location(), 1,
"tab not used as indent",
file.ErrorKindWarn)
break
}
for lexer.char == '\t' {
lexer.addToken (Token {
kind: TokenKindIndent,

View File

@ -62,6 +62,11 @@ func (token Token) Kind () (kind TokenKind) {
return token.kind
}
// Is returns whether or not the token is of kind kind.
func (token Token) Is (kind TokenKind) (match bool) {
return token.kind == kind
}
// Value returns the value of the token. Depending on what kind of token it is,
// this value may be nil.
func (token Token) Value () (value any) {