| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Yin and yang would be pleased: A fix in two parts.
1. Use the name of the imported symbol, rather than the alias, in the generated `Select(qual, name)` tree.
2. Do the opposite in `isQualifyingImplicit`, which performs one part of the shadowing check.
But there is still work to do. The second part of the shadowing check, `nonImplicitSynonymInScope`,
fails to notice this case (irrespective of aliased imports).
// Expecting shadowing #2. Alas, none is cast!
object Test1 {
object A { implicit val x: Int = 1 }
import A.x
def x: Int = 0
implicitly[Int]
}
I'm hitching the residual problem to SI-4270's wagon.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added a clarification to DoubleDefError for when the previous symbol
was in the package object but current symbol is not.
This was actually supposed to be an opportunity to hack partest to
run the two-step failing compilation, but somebody beat me to it and my
rebase failed.
The next hacking opportunity might be to add .pt script files! The
possibilities are endless.
|
|\
| |
| | |
fix SI-5044: better error message on cyclic error and named/default args
|
| | |
|
|\ \
| | |
| | | |
Fix SI-2488: allow named arg, in original position, before positionals
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix SI-5801: error messages regression.
|
| | | | |
|
| |/ /
|/| |
| | |
| | | |
Type-check annotations in a context with a localDummy owner
|
|\ \ \
| | | |
| | | | |
Fix SI-4928
|
| | |/
| |/|
| | |
| | | |
better error message when a parameter is first defined positionally, then with a named argument.
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
Since ae5ff662, resetAttrs duplicates trees, which doesn't preserve ApplyConstructor.
My attempt to modify TreeCopier to do so proved trickier than expected.
In any case, ApplyConstructor is not long for this world, and is only used in tree printing
to distinguish `new X` from regular Apply trees, so this should suffice pending full surgery.
|
| |
| |
| |
| | |
And undeprecated Positional.
|
| |
| |
| |
| |
| |
| |
| | |
Prevents the wheels falling off during later compiler phases,
or, worse, during bytecode verification.
Closes SI-4098.
|
|/
|
|
| |
Catching typer errors in specialization.
|
|\ \
| | |
| | |
| | | |
'refs/pull/488/head'; commit 'refs/pull/489/head'; commit 'refs/pull/490/head' into develop
|
| |/ |
|
| | | |
| \ | |
| \ | |
| \ | |
|\ \ \ \
| | | |/
| | |/|
| | | | |
'refs/pull/481/head'; commit 'refs/pull/482/head'; commit 'refs/pull/483/head'; commit 'refs/pull/484/head'; commit 'refs/pull/485/head' into develop
|
| |/ /
| | |
| | |
| | | |
What's the opposite of regression? Progression!
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
They exercise both joint and separate compilation.
This resolves SI-750 (which was somewhat unfairly merged with another ticket).
The error message itself could do with refinement: in particular instance of the much beloved: found X, required X.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change should be transparent to anything using sourceFile,
unless it was drinking from the inheritance well too deeply. Rather
than squander the already allocated field for every ClassSymbol not
being compiled from source, I'm now populating it with the file
representing the class. This will make a broad range of things easier,
like debugging, issuing useful error messages, symbol invalidation,
signature verification, you name it.
def sourceFile - still returns only source code files
def binaryFile - returns only class files
def associatedFile - returns whatever is there, if anything
Performance: I may be mistaken, but I believe this is a zero-impact
change. No new fields are allocated; fields which were null now hold
a useful reference. The reference is to a file instance which was
already being allocated and already long-lived.
Compare error messages:
// Version 1
% scalac a.scala
error: type _$1 is defined twice
// Version 2
% scalac a.scala
error: type _$1 is defined twice
conflicting symbols both originated in file './foo/package.class'
Note: this may be due to a bug in the compiler involving wildcards in package objects
one error found
Bonus for people who read commit logs. Try this in the repl
after starting power mode.
ListClass.info.members groupBy (_.associatedFile) foreach {
case (k, vs) => println("%s\n %s\n".format(k, vs map (_.defString) mkString "\n "))
}
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Closes SI-963, since it was one of my random 30 it won the prize.
The trick after adding the stability check (which has been sitting
there commented out for 3+ years) was that implicit search depended
on the wrongness, because memberWildcardType would create scopes
with members of the form
?{ val name: tp }
And since a def shouldn't match that, fixing it broke everything
until I flipped it around: memberWildcardType should be seeking
?{ def name: tp }
It could also search for a mutable value: the relevant quality
is that it not be stable so it doesn't have a tighter type than
the members it hopes to match.
|
| |
|
|
|
|
|
|
|
|
| |
Most are pattern matcher bugs fixed by virtpatmat. A few are reifier,
package object, or miscellaneous. I threw in an original test for
SI-2337, to go with those for SI-1697, SI-3705, SI-4415, and SI-1357,
all of which (in the interests of making sure this basket has all the
eggs) I am closing.
|
|
|
|
| |
Closes SI-5728.
|
|
|
|
|
|
| |
Eventually "-Xlint would have told you not to do that" will
be a catchphrase, like "I love it when a plan comes together"
or "respect mah authoritah."
|
|
|
|
|
|
|
|
|
| |
to improve Array[T] java-interop with T[],
normalize Object with Object{} to Object
fix #SI-5688 by flattening refined types in parents
updated check files to reflect flattening of refined types and updated position for refined types
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sort field accessors, necessary after typers -- apparently...
don't throw TypeError, use issueTypeError
don't run patmat phase when -Xoldpatmat
only virtualize matches when -Xexperimental
recycle cps type of match for re-typechecking:
when one of the internal cps-type-state annotations is present, strip all CPS annotations
a cps-type-state-annotated type makes no sense as an expected type (matchX.tpe is used as pt in translateMatch)
don't synth FunctionN impls during typer, only do this for PartialFunction
updated check now function synth for match is deferred until uncurry
patmat-transform try/catch with match in cps
cleanup in selective anf
remove TODO: can there be cases that are not CaseDefs -- nope
|
|
|
|
|
|
| |
Closes SI-5666 again.
(I don't have the least clue how I'm supposed to issue the error.)
|
|
|
|
|
|
|
|
| |
ResetAttrs shouldn't be side-effecting on the original tree,
since it can lead to NPEs in erroneous trees (or maybe even for valid ones?).
Review by @odersky
(Patch by plocinic, applied without his complicity by extempore)
|
|
|
|
|
|
|
| |
All those wildcards in a default-scoped implicit are expensive,
they each lead to a typevar on every search. Restructured the
Tuple2/Tuple3 Zipped classes, they're better this way anyway.
This also gets all that Tuple[23] code out of genprod.
|
|
|
|
|
| |
The ones which remain I'm not removing on purpose, as I know
from experience it's more trouble than it's yet worth.
|
|
|
|
|
|
| |
This reverts commit 1d0372f84f9a7325a47beb55169cc454895ef74b.
I forgot about polymorphic dispatch. Have to seek another way.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In patterns, the parser halts when it sees stars.
This means it does not handle infix notation for a case class
named "*". This patch uses lookahead to decide whether to parse
'_' '*' as a sequence pattern or as the start of infix.
(For both normal and error cases, the tokens are always consumed
immediately.) Error messages are improved for _* (as a help to learners)
and slightly improved recovery helps the parse continue.
The entry point for XML patterns is now distinct; otherwise,
the change is local to pattern3-simplepattern; the entry point
for simplepattern() is unchanged because it is commented
"hook for IDE."
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Moved compose/andThen off Function1, curried/tupled off Function2.
Pushed Tuple2 zipped into auxiliary class. Created implicits to
plaster over the changes. This drops several hundred classfiles and
takes (unoptimized) scala-library.jar from 7.8 Mb to 7.4 Mb.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
* all usages of ClassManifest and Manifest are replaced with tags
* all manifest tests are replaced with tag tests
|
| |
| |
| |
| |
| | |
* introduces ArrayTag and ErasureTag
* all type tags now feature erasure
|
|/ |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
detect partialfunction in cpsannotationchecker
emit apply/isDefinedAt if PF has @cps targs (applyOrElse can't be typed)
further hacky improvements to selective anf
better try/catch support in selective cps using freshly minted anonfun match
make virtpatmat resilient to scaladoc (after uncurry, don't translate matches
TODO: factor out translation all together so presentation compiler/scaladoc can skip it)
|
| | |
|
|\ \
| |/
|/|
| | |
'refs/pull/403/head'; commit 'refs/pull/404/head'; commit 'refs/pull/405/head' into develop
|
| | |
|