Skip to content

Commit 9a478cf

Browse files
committed
Rewrite -> into → when RewriteArrowSymbols is on
1 parent bb81a57 commit 9a478cf

File tree

9 files changed

+16
-5
lines changed

9 files changed

+16
-5
lines changed

scalariform/src/main/scala/scalariform/formatter/ScalaFormatter.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ abstract class ScalaFormatter extends HasFormattingPreferences with TypeFormatte
268268
val actualReplacementOption = replacementOption orElse (condOpt(token.tokenType) {
269269
case ARROW if rewriteArrows ""
270270
case LARROW if rewriteArrows ""
271+
case RARROW if rewriteArrows ""
271272
case EOF ""
272273
})
273274
builder.append(actualReplacementOption getOrElse token.rawText)
@@ -444,7 +445,7 @@ object ScalaFormatter {
444445
RETURN, SEALED, /* SUPER, THIS, */
445446
THROW, TRAIT, TRY, /* TYPE ,*/
446447
VAL, VAR, WHILE, WITH, YIELD,
447-
/* USCORE, */ COLON, EQUALS, ARROW, LARROW, SUBTYPE, VIEWBOUND, SUPERTYPE, /* HASH, AT */
448+
/* USCORE, */ COLON, EQUALS, ARROW, LARROW, RARROW, SUBTYPE, VIEWBOUND, SUPERTYPE, /* HASH, AT */
448449
LBRACE, SEMI)
449450

450451
val ENSURE_SPACE_BEFORE = Set(
@@ -456,7 +457,7 @@ object ScalaFormatter {
456457
/* RETURN, */ SEALED, /* SUPER, THIS, */
457458
/* THROW, */ TRAIT, /* TRY, TYPE, */
458459
VAL, VAR, /* WHILE, */ WITH, YIELD,
459-
/* USCORE, COLON, */ EQUALS, /* ARROW, */ LARROW, SUBTYPE, VIEWBOUND, SUPERTYPE, /*, HASH, AT, */
460+
/* USCORE, COLON, */ EQUALS, /* ARROW, */ LARROW, RARROW, SUBTYPE, VIEWBOUND, SUPERTYPE, /*, HASH, AT, */
460461
RBRACE)
461462
// format: ON
462463

scalariform/src/main/scala/scalariform/lexer/Keywords.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ object Keywords {
5151
"=" -> EQUALS,
5252
"=>" -> ARROW,
5353
"<-" -> LARROW,
54+
"->" -> RARROW,
5455
"<:" -> SUBTYPE,
5556
"<%" -> VIEWBOUND,
5657
">:" -> SUPERTYPE,

scalariform/src/main/scala/scalariform/lexer/NewlineInferencer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ object NewlineInferencer {
139139

140140
private val TOKENS_WHICH_CANNOT_BEGIN_A_STATEMENT: Set[TokenType] = Set(
141141
CATCH, ELSE, EXTENDS, FINALLY, FORSOME, MATCH, WITH, YIELD, COMMA, DOT, SEMI, COLON, /* USCORE, */ EQUALS,
142-
ARROW, LARROW, SUBTYPE, VIEWBOUND, SUPERTYPE, HASH, LBRACKET, RPAREN, RBRACKET, RBRACE)
142+
ARROW, LARROW, RARROW, SUBTYPE, VIEWBOUND, SUPERTYPE, HASH, LBRACKET, RPAREN, RBRACKET, RBRACE)
143143

144144
private val BLANK_LINE_PATTERN = """(?s).*\n\s*\n.*"""
145145

scalariform/src/main/scala/scalariform/lexer/ScalaOnlyLexer.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ private[lexer] trait ScalaOnlyLexer { self: ScalaLexer ⇒
126126
} else if (ch == '\u2190') {
127127
nextChar()
128128
token(LARROW)
129+
} else if (ch == '\u2192') {
130+
nextChar()
131+
token(RARROW)
129132
} else if (Character.isUnicodeIdentifierStart(ch)) {
130133
nextChar()
131134
getIdentRest()

scalariform/src/main/scala/scalariform/lexer/Tokens.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ object Tokens {
5252
val LBRACE = TokenType("LBRACE")
5353
val FOR = TokenType("FOR")
5454
val LARROW = TokenType("LARROW")
55+
val RARROW = TokenType("RARROW")
5556
val ABSTRACT = TokenType("ABSTRACT")
5657
val LPAREN = TokenType("LPAREN")
5758
val IF = TokenType("IF")

scalariform/src/main/scala/scalariform/parser/ScalaParser.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class ScalaParser(tokens: Array[Token]) {
124124
private def isIdent: Boolean = isIdent(currentTokenType)
125125

126126
private def isIdent(tokenType: TokenType) = tokenType match {
127-
case VARID | OTHERID | PLUS | MINUS | STAR | PIPE | TILDE | EXCLAMATION true
127+
case VARID | OTHERID | PLUS | MINUS | RARROW | STAR | PIPE | TILDE | EXCLAMATION true
128128
case _ false
129129
}
130130

scalariform/src/test/scala/scalariform/formatter/MiscExpressionFormatterTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import scalariform.formatter.preferences._
77
// format: OFF
88
class MiscExpressionFormatterTest extends AbstractExpressionFormatterTest {
99

10-
"" ==> ""
10+
"a → b" ==> "a → b"
1111
"this" ==> "this"
1212
"super [ B ] . t" ==> "super[B].t"
1313
"E2 . super [ B ] . t" ==> "E2.super[B].t"

scalariform/src/test/scala/scalariform/formatter/RewriteArrowsTest.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class RewriteArrowsTest extends AbstractExpressionFormatterTest {
1212

1313
"(a: Int) => 3" ==> "(a: Int) ⇒ 3"
1414
"for (i <- 1 to 10) yield i" ==> "for (i ← 1 to 10) yield i"
15+
"cache += k -> f(k)" ==> "cache += k → f(k)"
1516
}
1617

1718
override val debug = false

scalariform/src/test/scala/scalariform/lexer/ScalaLexerTest.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ println("foo")""" producesTokens (VARID, LPAREN, STRING_LITERAL, RPAREN, WS, VAR
218218

219219
"for(<book/><-Nil)Nil" producesTokens (FOR, LPAREN, XML_START_OPEN, XML_NAME, XML_EMPTY_CLOSE, LARROW, VARID, RPAREN, VARID)
220220

221+
"a -> b" producesTokens(VARID, WS, RARROW, WS, VARID)
222+
223+
"a → b" producesTokens(VARID, WS, RARROW, WS, VARID)
224+
221225
"\"\\u001A\"" producesTokens (STRING_LITERAL)
222226

223227
"\"\"\"\\u001A\"\"\"" producesTokens (STRING_LITERAL)

0 commit comments

Comments
 (0)