| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
parameters in constructors.
|
|
|
|
| |
Will return NoDenotation for types that do not have decls, analogous to findMember.
|
|
|
|
| |
Need to special case WildcardTypes, so that they absorb the other alternative (And/Or types need to have value types as arguments; wildcard types are not allowed).
|
|
|
|
| |
Not sure why it was different before. We need it at least to add implicit parameters in typedAheadExpr.
|
| |
|
| |
|
| |
|
|
|
|
| |
arguments.
|
|
|
|
| |
The implicit scope of a ThisType is now always the implicit scope of the self type. This caused cycles which necessitated cycle detectors in namedParts and computeImplicitScope.
|
| |
|
|
|
|
| |
We now propagte the expected function result type (if it exists) into the function body even if it not fully defined.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, if S is the selector type and P is the type of the unapply argument, we demanded either
S <: P
or
P <: S
We now also admit P <: S' where S' can be obtained from S by dropping refinements. This lets some patterns in RefinedPrinters typecheck which did not typecheck before. It seems we can afford to be a little bit more liberal here, and thereby approximate the weaker "isPopulated" criterion of Scala2x.
|
|
|
|
| |
More generally, a refactoring of the Compatibility trait to use value passing instead of inheritance.
|
|
|
|
| |
Happened (albeit non-deterministally) when compiling parsing/*.scala
|
| |
|
| |
|
|
|
|
| |
Needed a special case for them.
|
|
|
|
| |
In this case its owner is the next outer class, not the currently defined one.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Previousely, compiling all of dotc/core caused a cyclic reference. The cyclic reference was caused by evaluating a module val, which caused it to evaluate its type, which caused the evaluation of all preceding imports, which led via some hops back to the same module val. We now break the cycle by computing the signature of a module val without going through its type.
|
|
|
|
| |
If one of the conflicting definitions is synthetic, it will now point to the code position of the other.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Three changes:
1) Named imports beat wildcard imports in same scope, no matter what the relative order is
2) Named/named imports and wildcard/wildcard imports in the same scope of the same name but different
symbols give an error
3) An error is not reported if two imported termRefs or typeRefs are equal wrt =:=.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Problem:
lhs = expr
where the lhs takes an implicit. An implicit argument might not be available at the assignment site, but the epxression should typecheck anyway. Test case in SymDenotations.NoDenotation.
|
|
|
|
| |
We now assume protoFormals and protoResultType as given in an expected function type, and check post-hoc that parameter lists have the right length.
|
| |
|
|
|
|
| |
If the refinement in a refined type refers to a local symbol, drop it and return only the parent.
|
|
|
|
| |
(might want to change this later, but that's how Scala2 does things)
|
| |
|
| |
|
|
|
|
| |
check that argument lists have same length.
|
| |
|
| |
|
|
|
|
| |
The new scheme is robust even when following freshky instantiated type variables. These did not show up in the old varianceMap scheme.
|
| |
|
|
|
|
| |
The example is the current dotctest. import Symbols._ comes well before the definition of Symbols. Without the fix, it caused a cyclic reference error. But it seems reasonable to wait with the import until the class is fully elaborated.
|
|
|
|
|
|
|
|
| |
A refined type P { refinement } is expanded to a class
class <refined> extends P { refinement }
for type-checking. The problem is that the parent P does not always have a constructor. So we need to leave the parent as a type and add a special case to classDefSig that handles it.
|
|
|
|
|
|
|
|
|
|
|
| |
Now legal:
def foo(implicit ...) = ...
def foo_=(x: T): Unit = ....
foo = ...
And it works even without the implicit (need to clarify the spec on this count).
|
|
|
|
| |
Used to be "cyclic reference involving val <import>". Now prints import statement that caused the error.
|
| |
|
|
|
|
| |
We assume that two types A.this.C and B.this.C where C is the same class symbol, yet A and B are unrelated, are equal (i.e. mutually subtypes of each other). Such types comes up in situations where the self type of a type is different from the enclosing class.
|
|
|
|
|
|
| |
needed a lot for implicit search.
We need to use a less common name for Predef.conforms!
|
|
|
|
| |
Needed for implicit search, because some implicits might be UniqueRefs, not SymDenotations
|