| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Followinf @szeiger's suggestion, equip IndexView with
optimized operations for map/drop/take.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoids missing member in tangledCompanion.scala, which is a minimization
of intermittent failures in CollectionStrawMan6. Intermittent, because it
depended on order of compilation. CollectionTests have to be compiled together with
but before CollectionStrawMan6 (this was _sometimes_ the case because partest did not
honor indicated compilation order so far). I.e.
dotc CollectionTests_2.scala CollectionStrawMan6_1.scala
would trigger the error. tangledCompanion.scala captures the dependencies
in a single file.
|
|
|
|
| |
This is achieved by putting it into a new trait, LinearSeqLike.
|
|
|
|
|
|
|
| |
- Add proper :: to lists
- Move some methods to IterableOps in order to keep Iterable clean
- Rename knownLength to knownSize
- Add some implentations for performance and completeness
|
|
|
|
| |
Following the other colltests, put each in a separate package.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test generated code before but fails with verify error at runtime.
Here's the message:
Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
D$.<init>()V @2: invokedynamic
Reason:
Type uninitializedThis (current frame, stack[1]) is not assignable to 'D$'
Current Frame:
bci: @2
flags: { flagThisUninit }
locals: { uninitializedThis }
stack: { uninitializedThis, uninitializedThis }
Bytecode:
0x0000000: 2a2a ba00 1f00 00b7 0022 2ab3 0024 b1
at Test$.main(t3048.scala:13)
at Test.main(t3048.scala)
With the fix in last commit, test causes backend to crash with
java.lang.AssertionError: assertion failed: val <none>
at scala.Predef$.assert(Predef.scala:165)
at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.assertClassNotArray(BCodeHelpers.scala:214)
at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.assertClassNotArrayNotPrimitive(BCodeHelpers.scala:219)
at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:238)
at scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.getClassBTypeAndRegisterInnerClass(BCodeSkelBuilder.scala:51)
at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.internalName(BCodeHelpers.scala:210)
|
|
|
|
|
|
|
|
|
|
|
| |
The closures generated by elimByName did not get the InSuperCall
flag set. This caused problems in lambda lift which led to a
verify error for the new version CollectionStrawMan6. That version
replaces explicit function parameters in class LazyList by
by-name parameters.
Also: Clarify logic for liftLocals in LambdaLift (liftLocals caused the immediate
problem but was in the end not to blame).
|
|
|
|
| |
Makes it clearer what it is. Also, fixed check file.
|
|
|
|
|
|
| |
substDealias did not follow aliases when the prefix of a typeref changed
under substitution. This was exhibited by a bug in extensionMethods which was
first discovered in CollectionStrawMan6 and was minimized in extmethods.
|
|
|
|
|
| |
By making LinearSeq an IterableLike, we can use tail-recursion
on drop.
|
|
|
|
|
| |
Demonstrates how to integrate lazy non-view collections
in the framework.
|
|
|
|
|
| |
This PR investigates what it takes to extend CollectionStrawMan5 to
arrays.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Faced with recursive dependencies through self types, we might have
to apply `normalizeToClassRefs` to a class P with a parent that is not
yet initialized (witnessed by P's parents being Nil). In that case
we should still execute forwardRefs on P, but we have to
wait in a suspension until P is initialized.
This avoids the problem raised in #1401. I am still not quite sure
why forwardRefs is needed, but it seems that asSeenFrom alone is not
enough to track the dependencies in this case.
|
|\
| |
| | |
Fix #1378: Propagate more knowledge of result type into applications
|
| |
| |
| |
| |
| |
| |
| |
| | |
If an application has functions with implicit parameter types we need to be
more aggressive about propagating knowledge of the expected result type into
the constraint.
Fixes #1378.
|
|\ \
| | |
| | | |
Fix wildcard protos
|
| | | |
|
|\ \ \
| |/ /
|/| | |
HK reduction: Remove special-case for typerefs
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The special case:
case stripped: TypeRef =>
stripped.symbol.is(BaseTypeArg)
is wrong because you might still want to reduce applications involving
TypeRefs which are not base class parameters, like in:
class Foo[A]
type Alias[X] = Foo[X]
val x: Alias[Int] = ???
`Alias` is a TypeRef so before this commit `Alias[Int]` was never reduced
to `Foo[Int]`. It should have been:
case stripped: TypeRef if stripped.symbol.is(BaseTypeArg) =>
true
But even this is incorrect: it assumes that we can always safely reduce HK
applications involving base class parameters, this is not the case when
the parameter kind is different from the rhs kind as illustrated by
`i1181c.scala`. We fix this by simply dropping the special case.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now that we implement partial higher-order unification (SI-2712 fix)
i1181.scala will compile even if `Alias[Int]` gets dealiased to
`(Int, Int)` because we can unify the latter with `M[_]` where
`M = [X] -> (Int, X)`.
The new test will only succeed if `Alias[Int, Int]` is not dealiased
because we will never unify `Foo[Int]` with `M[_,_]`.
|
|\ \
| | |
| | | |
Fix #1386: Reduce double def errors
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix typing of match expressions
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Also fix reviewers comments about `firstParent`
|
| | |/
| |/|
| | |
| | |
| | | |
Allow matches between unapply types and selector type where a possible
overlap might exist.
|
|\ \ \
| |/ /
|/| | |
Changes to overloading
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Adds the original test form #1381. t2660 looks similar.
Also adds some unrelated tests I had in the queue that now
compile.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Fix #1381: Overloading is now changed so that we first try without implicit searches.
Only if that leaves no applicable alternatives we try again with implicit search turned on.
This also fixes test case t2660, which got moved from neg to pos.
|
|\ \ \
| | | |
| | | | |
Fix 1365: Fix bindings in patterns
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We need to compare pattern types with expected types in order
to derive knowledge about pattern-bound variables. This is done
use the mechanism of gadt bounds.
|
|\ \ \ \
| | | | |
| | | | | |
Add scala.Dynamic support.
|
| | | | | |
|
| | | | | |
|
| |/ / / |
|
|\ \ \ \
| |_|/ /
|/| | | |
Implement -Yno-predef and -Yno-imports
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Implement flags -Yno-predef and -Yno-imports
* Add unit tests for both
|
|\ \ \ \
| | | | |
| | | | | |
Direct representation of higher-kinded types
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Enable checking of bounds when comparing type lambdas. This invalidates
a pattern used in t2994 and potentially other code, where a bound [X] -> Any
is used as a template that is a legal supertype of all other bounds. The old
behavior is still available under language:Scala2.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Previous logic could only handle classes as constructors.
Also, address other reviewers comments.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
This was fixed two commits ago.
|
| | | | |
| | | | |
| | | | |
| | | | | |
Allow hk type parameters to be higher kinded themselves.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When applying a type alias of a type lambda, keep the original
application instead of reducing. But reduce anyway if
- the reduced type is an application where the type
constructor has the same kind as the original type constructor, or
- some of the arguments are wildcards.
|