| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Without this fix the duplicated classes and the original ones share the same reference to a scope,
instead of having each a separate one.
@alexsikia this should fix your problems
|
|\
| |
| | |
Fix #431: Options make 2 steps of decoding instead of one
|
| | |
|
|\ \
| | |
| | | |
Make tpd#applyOverloaded work with methods other than <init>
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
This way, tpd#applyOverloaded can safely be used after typer. This issue
was encoutered while working on value classes, step 3 of SIP-15 contains
the following peephole optimization:
new C(e) == new C(f) => e == f
Which requires us to do overloading resolution.
|
|\ \
| |/
|/| |
Fix isNullableClass to also work after Erasure
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Incidentally this means that:
val d = null.asInstanceOf[Double]
is now correctly transformed to:
val d = scala.Double.unbox(null)
Previously it was translated to:
val d = null: Double
Which is wrong and fails in the backend.
|
|\ \
| | |
| | | |
New phase: trait constructors
|
| | |
| | |
| | |
| | |
| | | |
Renames constructors in traits so that backend will call them with invokeInterface, instead of invokeSpecial
Also makes sure that renamed constructor bodies conforms to type of method
|
| | | |
|
| | | |
|
| |/ |
|
|\ \
| | |
| | | |
Fix #429
|
| |/
| |
| |
| | |
enclosingMethod should not crash on NoDenotation.
|
|/ |
|
|
|
|
| |
They are not lifted and they are allowed.
|
| |
|
|
|
|
|
|
| |
Fixes #412, by calling derivesFrom in isDerivedValueClass
at initial phase. Rewrite of 789dc0c070bde6ce8634aa89e73e31ec1233a6f8
by @smarter. Does the same thing in Symbol#isDerivedValueClass.
|
|
|
|
|
|
|
| |
RestoreScopes enters classes lifted by FlatMap into the
enclosing package scope. It should also invalidate any companions
because otherwise we risk linking up a new class with a previously
generated companion which exists only as a Java classfile.
|
| |
|
|\
| |
| | |
Add/unpickling
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
MODULE -> OBJECT, as suggested by Simon.
Header is 4 hex digits, not 8 chars.
|
| | |
|
| |
| |
| |
| |
| | |
1) Avoiud serializing redunant flags that come with modules
2) Drop DEFAULTinit flag - it's not used.
|
| |
| |
| |
| | |
It is always empty anyway. Side benefit: We can get rid of NOTYPE, too.
|
| |
| |
| |
| |
| | |
Remove 3rd argument of BIND types. It can be reconstructed
on unpickling.
|
| | |
|
| |
| |
| |
| |
| | |
1) Drop the length field of BYNAMEparam
2) Eliminate EMPTYTREE
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
1) DefDefs with implicit method types generate implicit parameters
2) Super accessors are inserted after class parameters.
With these changes files in core also print the same after pickling,
with the exception of Types and TypeOps which have some spurious differences:
Types are equal but appear in more simplified form after pickling.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The unpickled term in a package id is different from the original but the
type is the same.
In a literal prefer constants in the types over thsoe in the terms.
With this change, we get identical typed tree output also for core/pickled.
|
| |
| |
| |
| |
| | |
1) Prefixes in selections are widened if unstable
2) DefDefs get Method flag set
|
| |
| |
| |
| |
| | |
It's not used and is too low-level anyway. Expanded names should
be a semantic concept, the choice of separator is irrelevant.
|
| |
| |
| |
| |
| | |
Would like to do use more semantic names in pickled file, but it's hard without
having semantic names to start with.
|
| |
| |
| |
| |
| |
| |
| |
| | |
We got some spurious differences in the types in TemplateParents
because simplification was done in Typer but not in Unpickler.
With the change we get perfect matches for all files in pickleOK
also if we print their types.
|
| |
| |
| |
| | |
The type of a parameter alias is an ExprType, was the underlying type.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Shadowed names in types need to be pickled and treated on
unpickling.
We choose to make Shadowed a separate TastyName class, to avoid
the ad-hoc name-mangling in current dotc. When names are redone
Shadowed will also become a special class in the compiler proper.
|
| |
| |
| |
| | |
The new name is more consistent with the usage (e.g. NamedType#shadowed).
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Need to pickle the type, not the constant stored in the literal,
because constant folding might have adapted the type, but leaves
the constant value unchanged. An example is in pickleOK/unions.scala
where a float 1.0f was adapted to Double, so should be pickled as
a Double 1.0.
|
| |
| |
| |
| |
| | |
Need to enter all top-level symbols before reading any of them, in order
to avoid stale symbols.
|
| |
| |
| |
| |
| |
| |
| | |
We now unpickle all files first, and print afterwards.
This helps in avoiding stale symbols that happen otherwise
when we print a reference to a symbol that has not yet been unpickled.
But it's not yet enough.
|
| |
| |
| |
| |
| | |
Implicits get pickled only for terms. So implicit class
prints differently when unpickled.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Should get an () parameter list in both cases. (In fact, that's pretty annoying,
it woul be better if we did not have this restriction. But in any case it has to
be the same for Namer and Unpickler.)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Out-of scope references are evil but do arise. Dotc currently produces them
in two cases (t1957.scala and Typer.scala) because it does not correctly
hygenize dependent methods used as closurs. I beleive scalac wil generate them
in more instances.
The changes can produce dependent method types used in closures. Essentially the
problem was that the depndency was not recognized in Typers when the closure
was first created, because it badly interfered with type inference. But when unpickling
the same closure the dependency is recognized. It's too late to fail now, we better
deal with this gracefully. That's why there is now a mode bit "AllowDependentFunctions"
which should be turned on only for unpickling, which reconstitutes dependent functions
as closures without complaining.
|