| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Used a hardcoded string before, which caused test failures.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Names with internal $'s are entered in package scopes only if
- we look for a name with internal $'s.
- we want to know all the members of a package scope
This optimization seems to be fairly effective. The typical range
of package scopes that need $-names is between 0 and 20%. The optimization
seems to improve execution time of all unit tests by about 3%.
Also. drop the inheritance from Iterable to Scope. The reason
is that we now need a context parameter for toList and
other Iterable operations which makes them impossible to
fit into the Iterable framework.
|
|
|
|
|
|
|
|
|
| |
Once we start using unencoded operators internally, we will face the problem
that one cannot decode realiably a class file filename. We therefore turn
things around, keeping members of package scopes in mangled and encoded form.
This is compensated by (1) mangling names for lookup of such members and
(2) when unpickling from Scala 2 info or Tasty, comparing mangled names when
matching a read class or module object against a root.
|
| |
|
|
|
|
|
|
|
|
| |
Drop Seq implementation of name. This implementation
was always problematic because it entailed potentially
very costly conversions to toSimpleName. We now have
better control over when we convert a name to a simple
name.
|
|
|
|
|
| |
1. Fix problem in fullNameSeparated
2. Revise expandedName operations
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
We now handle only semantic names. Also, name extractor tags
and TASTY name tags are now aligned.
|
|
|
|
|
| |
Use a new scheme for creating and accessing semantic names which is
based on semantic name extractors with nested info classes.
|
| |
|
|
|
|
| |
Plus further bug fixes.
|
| |
|
| |
|
|
|
|
| |
nameddefaults.scala now compiles without crashing
|
| |
|
| |
|
|
|
|
|
|
| |
This is a temporary step. If semanticNames is true we construct
structured qualified names, but check they have the same string
representation as the unstructured names.
|
| |
|
|
|
|
|
|
|
|
| |
1. Invalidate packageObj cache when entering a package object
2. Prefer package object members over same-named package members
unless we are in the scala package
3. Exclude package objects from no-double-bindings checks, since
package objects may now be visited before indexing them.
|
|
|
|
|
|
|
|
|
| |
- split LambdaType.equals into two equals so that tests
are more specific (also avoids type testing against
a trait)
- re-order cases in some pattern matches with the aim to
(1) move common cases earlier, (2) move more expensive
trait type tests later.
|
|
|
|
|
|
| |
Two benefits: (1) less code. (2) finding subtle bugs about
parameter dependent method types. By merging with PolyTypes
we are forced to take parameter dependencies into account.
|
|
|
|
|
| |
- Use TypeLambda instead of PolyType.
- Further harmonize factory operations
|
|
|
|
|
|
| |
MethodTypes have paramTypes whereas PolyTypes have paramBounds.
We now harmonize by alling both paramInfos, and parameterizing
types that will become common to both.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Flags like Trait are in fact not always defined when a symbol
is created. For symbols loaded from class files, this flag, and
some other is defined only once the classfile has been loaded.
But this happens in general before the symbol is completed.
We model this distinction by separating from the `FromStartFlags` set
a new set `AfterLoadFlags` and distinguishing between the two sets
in `SymDenotations#is`.
Test case is enum-Option.scala. This erroneously complained before
that `Enum` was not a trait.
|
|\
| |
| | |
Tailrec for derivesFrom/lookupRefined/classSymbol/classSymbols
|
| | |
|
| |
| |
| |
| | |
... unless they would be accessible in the given context.
|
| |
| |
| |
| |
| |
| |
| | |
It's hard to predict for defKind all the desugarings that can be
applied to a definition. Better to do it once the desugarings have been
applied. NoInit and PureInterface are both tested only after Typer,
so it's OK to delay their initialization until regular Typer.
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Drop the [type T] syntax, and what's associated to make it work.
Motivation: It's an alternative way of doing things for which there seems
to be little need. The implementation was provisional and bitrotted during
the various iterations to introduce higher-kinded types. So in the end the
complxity-cost for language and compiler was not worth the added benefit
that [type T] parameters provide.
Noe that we still accept _named arguments_ [A = T] in expressions; these are useful
for specifying some parameters and letting others be inferred.
|
| |
|
|
|
|
|
|
|
|
|
| |
Typer#ensureReported's comment outlines an example where errors
could go unreported, resulting in error trees after typer without
any reported error messages. This commit makes sure that at least
one error is reported if a tree node has an error type.
Fixes #1802.
|
|
|
|
|
| |
Drop explicit types for local implicit vals of type Context
and Position. Exercises the functionality and shortens the code.
|
|
|