Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
cb5daf3
SI-9665 Backquoted vbar in extractor pattern
som-snytt Feb 21, 2016
5fd8483
Added applyOrElse to MapLike
kilotaras Mar 20, 2016
9ec6278
SI-9760 Fix for higher-kinded GADT refinement
milessabin Apr 19, 2016
fa65623
Added missing result type to test.
milessabin Apr 20, 2016
5faad77
Added pos test with multiple cases; added neg tests.
milessabin May 6, 2016
b58634e
Improves the test cases for the scala-concurrent-tck
viktorklang Apr 5, 2016
45e607d
SI-9361 fixed assert allowing display of improved error message.
milessabin May 14, 2016
139f9a0
Make Range.Partial a value class
xuwei-k May 17, 2016
883fdd7
SI-5463 Check .jars before using them
May 10, 2016
214ea82
SI-9656 Range.toString distinguishes Numeric step
Feb 27, 2016
3cddeaa
SI-7916: ScriptEngine support
som-snytt Sep 14, 2015
80d996b
Include missing web assets in scaladoc
jodersky Apr 11, 2016
6be9fc6
SI-9781 Don't convert erroneous expression to assignment
liff May 19, 2016
481a390
Improvements to scala.concurrent.Future
viktorklang May 13, 2016
f7b575d
Merge pull request #5093 from jodersky/scaladoc-include-assets
szeiger May 20, 2016
72a59d9
Rename nsc.backend.jvm.CodeGenTools to testing.BytecodeTesting
lrytz May 19, 2016
5d5a6aa
Better abstraction for bytecode tests. Also organize some imports.
lrytz May 20, 2016
d9ce4dc
Better abstraction for JUnit run tests
lrytz May 20, 2016
ba510ab
Clean up bytecode testing methods.
lrytz May 20, 2016
0e7964a
Small cleanup in JUnit test
lrytz May 20, 2016
46d523b
Cleanup in BytecodeTest
lrytz May 20, 2016
2537027
Split RunTest and BytecodeTest into parts, put in matching packages.
lrytz May 20, 2016
64fdae8
All JUnit tests pass without bootstrap (when run in intellij, sbt)
lrytz May 20, 2016
e26835c
Adapt naming convention for collection.convert null safety test
lrytz May 20, 2016
1ea1916
Merge pull request #4819 from som-snytt/issue/7916-ScriptEngine-deferred
szeiger May 20, 2016
eeef260
SI-8044 Allow binding backquoted varid in patterns
som-snytt Jan 31, 2016
2eb1cc2
SI-8044 Test for quoted not-a-varid
som-snytt Jan 31, 2016
1e565d8
SI-8044 Allow any id in explicit pattern binding
som-snytt Mar 15, 2016
a79b9b7
Merge pull request #4988 from som-snytt/issue/backtick-bar
adriaanm May 21, 2016
2e40aa5
Merge pull request #5180 from lrytz/junit-pass
retronym May 23, 2016
093c934
SI-9776: Fix type of PriorityQueue.newBuilder and improve performance
chrisokasaki May 23, 2016
95f5760
Merge pull request #5168 from xuwei-k/range-value-class
lrytz May 23, 2016
03d2de2
SI-9121 test case (fixed in new optimizer), SI-9179 test case
lrytz Apr 25, 2016
8e92ba0
Merge pull request #5153 from petermz/ticket/5463
lrytz May 23, 2016
82d9551
Merge pull request #5162 from milessabin/t9361
lrytz May 23, 2016
7645c7f
Merge pull request #5122 from lrytz/t9121
szeiger May 23, 2016
90ca3fd
Group Console and AnsiColor entities and add usage examples
janekdb May 23, 2016
d169d48
Merge pull request #5173 from janekdb/topic/2.12.x-scaladoc-AnsiColour
lrytz May 23, 2016
095295a
Merge pull request #5164 from viktorklang/wip-future-docs-√
adriaanm May 23, 2016
755fff0
Merge pull request #5181 from chrisokasaki/issue/9776
adriaanm May 23, 2016
0659af2
Merge pull request #5106 from milessabin/topic/hkgadt
adriaanm May 24, 2016
207e32d
Merge pull request #5179 from liff/topic/SI-9781
adriaanm May 24, 2016
892a6d6
SI-2712 Add support for higher order unification
milessabin May 20, 2016
bf47808
-Xexperimental mode now only includes -Ypartial-unification
milessabin May 20, 2016
4d28084
Merge pull request #5175 from som-snytt/issue/9656-range-toString
szeiger May 24, 2016
60f28f9
SI-9522 release key reference when deleting from OpenHashMap
performantdata Apr 25, 2016
808f3d0
Merge pull request #4935 from som-snytt/issue/8044-tickvar
adriaanm May 24, 2016
dd3a90e
Fix Scaladoc link syntax on java.util.Formatter references
janekdb May 24, 2016
1db58b5
Debug flag to print a summary of the inliner's work
lrytz May 24, 2016
c17ef77
Merge pull request #5124 from performantdata/bug/SI-9522
lrytz May 25, 2016
eaefb10
Merge pull request #5185 from janekdb/topic/2.12.x-scaladoc-java-link…
lrytz May 25, 2016
734c5ad
Merge pull request #5052 from kilotaras/topic/map-applyOrElse
lrytz May 25, 2016
450df0e
Use full braces style in AnsiColor example
janekdb May 25, 2016
65642d9
Merge pull request #5188 from janekdb/topic/2.12.x-scaladoc-AnsiColour-2
lrytz May 25, 2016
b85c9a7
Rename -Yopt to -opt, -Yopt-warnings to -opt-warnings
lrytz May 25, 2016
54dff81
SI-9382 Privatize enhanced x in Tuple2Zipped.Ops
som-snytt May 25, 2016
3873fcf
Fully qualify types in REPL generated code
dwijnand May 24, 2016
edbf2c4
Merge pull request #5189 from lrytz/y-not
adriaanm May 26, 2016
0b79f4b
SI-9382 Zippy clean-up in aisle 2 & 3
som-snytt May 26, 2016
fd6386a
SI-9794 Error advice uses decoded method name
som-snytt May 27, 2016
a09ed48
Merge pull request #5192 from dwijnand/wip/scala-repl-no-imports
retronym May 27, 2016
79ec0f3
Merge pull request #5186 from lrytz/inlinerM5
retronym May 27, 2016
6b2037a
Merge pull request #5102 from milessabin/2.12.x
retronym May 27, 2016
981e3c5
SI-9483 Add `since` to `@deprecatedName`
soc Apr 2, 2016
673350e
SI-9084 Add `since` (if available) to deprecation warnings
soc Apr 2, 2016
5562e1a
Lower-case spelling of @deprecated messages
soc May 19, 2016
be38ebb
Add since arg to deprecationWarning and use it
soc Apr 2, 2016
85057d5
Add documentation to @deprecated
soc May 19, 2016
a45509c
Don't pass -opt to starr / locker build in the bootstrap script
lrytz May 30, 2016
6265eb8
Merge pull request #5200 from lrytz/bootstrap-opt-options
lrytz May 30, 2016
7d5a0b3
Merge pull request #5193 from som-snytt/issue/9794
lrytz May 30, 2016
9edbe3d
Merge pull request #5191 from som-snytt/issue/9382
lrytz May 30, 2016
8f567bc
Merge pull request #5076 from soc/topic/deprecations-since
lrytz May 30, 2016
7b132f3
Avoid tree sharing with substituteThis
retronym May 31, 2016
0533a3d
Lambda impl methods static and more stably named
retronym May 4, 2016
f01d061
Treat self parameter as non-null in the optimizer
lrytz May 13, 2016
7a589e0
Remove nonsensical body for trait getter
retronym May 19, 2016
b33e4a0
Better diagnostic for optimizer crashes
retronym May 9, 2016
f882d16
Remove stray .class file from version control
retronym May 31, 2016
c61795a
Don't minimize parents of java defined syms.
retronym May 31, 2016
4499c32
Revert pruning of redundant Java parents
retronym May 17, 2016
0cb67d1
clear all flags when resetting a symbol
lrytz May 25, 2016
e82e457
SI-9256 check companions in same compilation unit only if same run
lrytz May 25, 2016
e791790
Emit trait method bodies in statics
retronym May 4, 2016
3787426
Add impl restriction related to invokespecial to Java parents
retronym May 5, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
SI-8044 Allow binding backquoted varid in patterns
Previously, a varid could not be backquoted, so that it was not
possible to introduce variables with names such as `type` in a
match expression.

This commit allows backquoted varids in `case x @ _` and
`case x: Int`. In neither position is a stable id accepted,
that is, an id with leading uppercase.

Therefore, this commit merely relaxes the backquoted varid to
be taken as a normal varid in these contexts.
  • Loading branch information
som-snytt committed May 20, 2016
commit eeef2602dc97f84c798713d7a2c924ea2b0d6012
2 changes: 2 additions & 0 deletions spec/01-lexical-syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ classes (Unicode general category given in parentheses):
```ebnf
op ::= opchar {opchar}
varid ::= lower idrest
boundvarid ::= varid
| ‘`’ varid ‘`’
plainid ::= upper idrest
| varid
| op
Expand Down
4 changes: 2 additions & 2 deletions spec/08-pattern-matching.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ chapter: 8

```ebnf
Pattern ::= Pattern1 { ‘|’ Pattern1 }
Pattern1 ::= varid ‘:’ TypePat
Pattern1 ::= boundvarid ‘:’ TypePat
| ‘_’ ‘:’ TypePat
| Pattern2
Pattern2 ::= varid [‘@’ Pattern3]
Pattern2 ::= boundvarid [‘@’ Pattern3]
| Pattern3
Pattern3 ::= SimplePattern
| SimplePattern {id [nl] SimplePattern}
Expand Down
15 changes: 8 additions & 7 deletions src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1901,29 +1901,30 @@ self =>
}

/** {{{
* Pattern1 ::= varid `:' TypePat
* Pattern1 ::= boundvarid `:' TypePat
* | `_' `:' TypePat
* | Pattern2
* SeqPattern1 ::= varid `:' TypePat
* SeqPattern1 ::= boundvarid `:' TypePat
* | `_' `:' TypePat
* | [SeqPattern2]
* }}}
*/
def pattern1(): Tree = pattern2() match {
case p @ Ident(name) if in.token == COLON =>
if (treeInfo.isVarPattern(p))
if (nme.isVariableName(name)) {
p.removeAttachment[BackquotedIdentifierAttachment.type]
atPos(p.pos.start, in.skipToken())(Typed(p, compoundType()))
else {
} else {
syntaxError(in.offset, "Pattern variables must start with a lower-case letter. (SLS 8.1.1.)")
p
}
case p => p
}

/** {{{
* Pattern2 ::= varid [ @ Pattern3 ]
* Pattern2 ::= boundvarid [ @ Pattern3 ]
* | Pattern3
* SeqPattern2 ::= varid [ @ SeqPattern3 ]
* SeqPattern2 ::= boundvarid [ @ SeqPattern3 ]
* | SeqPattern3
* }}}
*/
Expand All @@ -1935,7 +1936,7 @@ self =>
case Ident(nme.WILDCARD) =>
in.nextToken()
pattern3()
case Ident(name) if treeInfo.isVarPattern(p) =>
case Ident(name) if nme.isVariableName(name) =>
in.nextToken()
atPos(p.pos.start) { Bind(name, pattern3()) }
case _ => p
Expand Down
4 changes: 4 additions & 0 deletions test/files/neg/t8044.check
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
t8044.scala:3: error: not found: value _
def f = 42 match { case `_` : Int => `_` } // doesn't leak quoted underscore
^
one error found
4 changes: 4 additions & 0 deletions test/files/neg/t8044.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

trait T {
def f = 42 match { case `_` : Int => `_` } // doesn't leak quoted underscore
}
7 changes: 7 additions & 0 deletions test/files/pos/t8044.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

trait T {
def f = 42 match { case `x` @ _ => x }
def g = 42 match { case `type` @ _ => `type` }
def h = 42 match { case `type` : Int => `type` }
def i = (null: Any) match { case _: Int | _: String => 17 }
}