| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Overcomes cycles encountered during classfile parsing
in possibly sketchy fashion.
"illegal cyclic reference involving class Foo"
is the watchword. See SI-3809.
|
|
|
|
|
|
|
|
|
| |
It comes looking for an implicit from (A @foo) => B
and gives up, despite the fact that there is an implicit
from A => B. Maybe there is some good reason for this,
and/or I would fully believe there is a better way to fix
it, but I'll propose this and wait to hear about the
good reason and/or better way.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* origin/2.10.0-wip:
MethodSymbol.params => MethodSymbol.paramss
SI-6471 Update jquery from 1.4.2 to 1.8.2
undeprecates manifests for 2.10.0
SI-6451: Rename classes in `unchecked-abstract.scala` test.
Put more implementation restrictions on value classes.
Fixed problem in SI-6408
Revised restrictions for value classes and unversal traits
SI-6436 Handle ambiguous string processors
fixes a bug in a weak cache in runtime reflection
Conflicts:
test/files/neg/classmanifests_new_deprecations.check
test/files/neg/unchecked-abstract.check
|
| |
| |
| |
| |
| |
| |
| |
| | |
This matter was discussed at scala-internals:
http://groups.google.com/group/scala-internals/browse_thread/thread/6414d200cf31c357
And I am convinced with Paul's argument: consistency of the convention
is very important.
|
| |\
| | |
| | | |
undeprecates manifests for 2.10.0
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since scala-reflect.jar is going to be declared experimental for 2.10.0,
it doesn't make sense to deprecate manifests in favor of type tags.
Class manifests, however, ARE deprecated for class tags, because class tags
don't require scala-reflect.jar and are generated independently of type tags.
|
| |/
| |
| |
| |
| |
| |
| |
| | |
This reopens SI-6170 that was fixed by 1be1f760. I don't want to start
a revert war, but I see two reasons we should stick to newer jquerys:
- they provide better compatibility to new browsers
- having diagrams not working is much more annoying than having the
splitter not work
|
| |\
| | |
| | | |
AnyVal/value classes restrictions
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Nested objects, classes and lazy vals are disallowed at any
nesting level in value classes; e.g. lazy vals local to a
method defined in a value class. There are still allowed in
universal traits.
This is a temporary, implementation restriction that is planned
to be addressed in future releases of Scala. Error messages has
been updated to communicate that intent.
Moved tests for SI-5582 and SI-6408 to pending folder. They have
to stay there until implementation restrictions are addressed.
Closes SI-6408 and SI-6432.
Review by @odersky, @harrah and @adriaanm.
|
| | |
| | |
| | |
| | | |
Fixed problem reported in comment, where inner classes of value classe caused a compiler crash.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
and brought compiler in line with them. One thing we can accept IMO are nested
classes (nested objects are still a problem). In fact, it makes no sense to
exclude nested classes from value classes but not from universal traits. A class
nested in universal trait will becomes a class nested in a value class by
inheritance. Note that the reflection library already contains a universal trait
with a nested class (IndexedSeqLike), so we should accept them if we can.
|
| |\ \
| | | |
| | | | |
SI-6436 Handle ambiguous string processors
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Before, we got in an inifinite loop by chasing
the error typed result of adaptToMemberWithArgs.
One point of befuddlement remains: why did t6436 and t6436b
behave differently before this change?
|
| |\ \ \
| | |_|/
| |/| | |
fixes a bug in a weak cache in runtime reflection
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Entries in SynchronizedTypes.uniques could previously be garbage collected
in-between a successful call to contains and an actual cache lookup.
The patch could be a one-liner, but I don't want to use HOFs
in this function, whose prototype is a hotspot in the compiler.
Also the fix doesn't touch scalac in any way. It only applies to
reflective universes that provide runtime reflection functionality.
|
|\ \ \ \
| | | | |
| | | | | |
Defanged dummy type arguments.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Trying to make the code structure as hotspot friendly as
I can, which is no mean feat.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
These are the call sites which formerly could be seen to
call .tpe on a symbol with unapplied type parameters. Now
each such call site makes an explicit choice about what is
intended for the result type.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
All driven by the knowledge gained from logging all the
calls to tpe and appliedType and seeing what was coming
through there. Some needless type creation is avoided in
the maps, and appliedType will squawk to those who listen
when it sees something out of order.
|
| | | | |
| | | | |
| | | | |
| | | | | |
Using established facilities for doing established things.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Spending a few hours on yet another tpe vs. tpeHK bug drove me
to finally go after the dragon in his cave. I created a separate
method for when you want to receive an invalid type which will
cause mysterious crashes later if it is out of your sight for five
seconds.
def tpeHK : Type // unapplied type params stay unapplied
def tpe_* : Type // unapplied type params applied as dummy args
def tpe : Type // if there are unapplied type params, ABORT
Actually it doesn't really abort, but I had it print a stack trace
during development so I could track down every site which blindly
calls tpe and see why they were doing it. Now it only admonishes
you under -Ydebug.
This way is a big step forward: you have to make a choice, which
is good, because if you choose not to decide you still have made a
choice, only mostly what you have chosen is bugs.
|
| | | | |
| | | | |
| | | | |
| | | | | |
Arrays are not Seqs: a fact known by all and sundry.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6478 Fixing JavaTokenParser.ident
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
And fixed the test I broke at the last minute. Reworked
tupling logic to make it harder to break. Expanded test
coverage.
|
|\ \ \ \ \ \ |
|
| |\ \ \ \ \ \
| | |/ / / / /
| |/| | | | | |
Spurious warning elimination.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Eliminates spurious "catch block may intercept non-local return"
seen in recent builds of master. Unified some catch logic
in TreeInfo, and removed some which never worked.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Implicit extractor must be available to pattern match on
abstract type. Requires prior commit not to crash under
-Yrangepos.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
wrapClassTagUnapply was generating an unpositioned tree
which would crash under -Yrangepos. See SI-6338.
|
| |\ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Regex.unapplySeq should not take Any (Fixes SI-6406)
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This deprecates unapplySeq(Any) and adds overloaded
unapplySeq(CharSequence) and unapplySeq(Match), with the
putative advantage that you can't try to extract the unextractable.
Regex is massaged so that the underlying Pattern is primary,
rather than the String-valued expression. Regex and its
unanchored companion (I almost wrote unmoored) share a
Pattern object, so that unapplySeq(Match) can easily test
whether the Match was generated by this Regex; in that case,
the match result is used immediately, instead of reapplying
the regex to the matched string.
The documentation is massaged to reflect unanchored and also to
align with the underlying terminology, e.g., "subgroup" really
just means "group."
|
| |\ \ \ \ \ \ \
| | |_|/ / / / /
| |/| | | | | | |
Added utility function shortClass.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Pretty sick of names like
scala> typeOf[List[Int]].getClass.getName
res0: String = scala.reflect.internal.Types$TypeRef$$anon$1
I wrote this so I can see what the class of some arbitrary
thing is in a way which my little brain can understand. For
the example above we get
scala> shortClassOfInstance(typeOf[List[Int]])
res0: String = ArgsTypeRef with AliasTypeRef
Let's pimp a "shortClassName" onto AnyRef and be happy.
|
| |\ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
Renamed hasSymbol to hasSymbolField.
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
Suggestion by retronym that the obvious implementation of
"hasSymbol" be called "hasSymbol" reminded me we have a method
called "hasSymbol" which does not have that implementation, and
which has burned us already with subtle bugginess. I think that
"hasSymbolField" is self-documenting.
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
We shouldn't let these core methods become so complicated. They are
way harder to follow than is necessary. It is why nobody ever fixes
the bugs in them. This is only the beginning really. So many things
in the compiler would border on trivial to fix if one didn't have to
navigate so much cruft and indirection.
Here are some methods which no longer exist:
- hasExactlyNumParams. A dubious name for a method
containing the expression "len <= n + 1".
- resolveOverloadedMethod. A method which returns a list
of symbols can't be resolving all that much.
- isUnitForVarArgs. Take a guess as to what that method does.
Ha ha, you were not even close.
Still on my hit list:
- "very similar logic to doTypedApply in typechecker"
I find a good rule of thumb is never to write a comment
which paraphrases to "this is very similar to that."
This entire patch is the fault of a. moors for trying to
cherry-pick a comment of mine from github into trunk. This
patch hopefully makes the comment unnecessary.
|
|/ / / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | | |
With the far more readable not-html comments of modern times.
|
|\ \ \ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-6467: Zero element in aggregate now by-name
|
| | | | | | | | | |
|
|/ / / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
ClassfileParser had a bug which led to it thinking pretty
much anything might be a raw type, and thus creating extra
symbols for no good reason. When compiling scala.collection,
before this change it thought 1094 raw types had passed by;
afterward it thought 237.
|
|\ \ \ \ \ \ \ \
| |/ / / / / / /
|/| | | | | | | |
Fix scaladoc links in a couple of places.
|
| | | | | | | | |
|
|\ \ \ \ \ \ \ \
| |/ / / / / / /
|/| | | | / / /
| | |_|_|/ / /
| |/| | | | |
| | | | | | | |
Conflicts:
build.number
src/reflect/scala/reflect/internal/Types.scala
|
| |\ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Fixes deprecation annotations for 2.10.0
|
| | | |_|_|_|/
| | |/| | | | |
|
| |\ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Improved the `scala.language` documentation
|
| | | |_|_|_|/
| | |/| | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Also corrected the links in the library rootdoc.
**Note: We need to fast track this commit so it reaches master in the
next 12 hours, before we generate the next nightly docs.**
Review by @odersky
|
| |\ \ \ \ \ \
| | |/ / / / /
| |/| | | | | |
SI-6442 - Add ActorDSL object for actor migration kit
|
| | |/ / / /
| | | | | |
| | | | | |
| | | | | | |
Removes MigrationSystem, since ActorDSL replaces it.
|