| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
I discovered on erroneous code it could fall into a loop looking
for product selectors, because ErrorType always claims to have
whatever member you're asking about.
|
|\
| |
| | |
SI-8128 Fix regression in extractors returning existentials
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The advent of the named based pattern matcher brought with it
a change in the way we determine the type of the value in the
"match monad". We used to take the base type to `Option` or `Seq`
(guided by the method name in `unapply` vs `unapplySeq`), and
simply use the type argument.
Name-based patmat, instead, uses the result type of methods in the
type. For example, the element type of an Option-like extractor
result is given by the result type of the no-args `get` method.
This approach, however, swiftly runs aground when navigating the
existential atolls. Here's why:
scala> class F[_]
defined class F
scala> val tp = typeOf[Some[F[X]] forSome { type X }]
warning: there were 1 feature warning(s); re-run with -feature for details
tp: $r.intp.global.Type = scala.this.Some[F[X]] forSome { type X }
scala> tp.baseType(typeOf[Option[_]].typeSymbol).typeArgs.head
res10: $r.intp.global.Type = F[X] forSome { type X }
scala> tp.memberType(tp.member(nme.get)).finalResultType
res11: $r.intp.global.Type = F[X]
`res10` corresponds to 2.10.x approach in `matchMonadResult`.
`res11` corresponds to the new approach in `resultOfMatchingMethod`.
The last result is not wrapped by the existential type. This results
in errors like (shown under -Ydebug to turn un accurate printing of
skolems):
error: error during expansion of this match (this is a scalac bug).
The underlying error was: type mismatch;
found : _$1&0 where type _$1&0
required: _$1
(0: Any) match {
^
one error found
This commit addresses the regression in 2.10.x compatible extractors
by using the 2.10 approach for them.
The residual problem is shown in the enclosed pending test.
|
| |
|
| |
|
|
|
|
| |
Test case for SI-8045, fixed by the preceding commits.
|
|
|
|
|
|
|
|
| |
Name-based pattern matcher needed some hardening against
unapply methods with the right name but wrong types. Only
isEmpty methods which return Boolean are acceptable.
Catching it directly rather than indirectly also allowed
for better error messages.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This emerges from a recent attempt to eliminate pattern matcher
related duplication and to bake the scalac-independent logic
out of it. I had in mind something a lot cleaner, but it was
a whole lot of work to get it here and I can take it no further.
Key file to admire is PatternExpander.scala, which should
provide a basis for some separation of concerns.
The bugs addressed are a CCE involving Tuple1 and an imprecise
warning regarding multiple pattern crushing.
Editorial: auto-tupling unapply results was a terrible idea which
should never have escaped from the crib. It is tantamount to
purposely throwing type safety down the toilet in the very place
where people need type safety the most. See SI-6111 and SI-6675 for
some other comments.
|
|\
| |
| | |
Improvements to partest-ack, plus partest-paths.
|
|/
|
|
|
|
|
|
|
| |
I noticed partest-ack was not finding all matching tests, and
fixed that. Also cleaned up the ack options so they're understood
by the latest version of ack.
Along the way I broke the canonicalization functionality out into its
own script so it can easily be used from other places.
|
|\
| |
| | |
Fix osgi bundle name for continuations.
|
|/ |
|
|\
| |
| | |
Final library modularization for 2.11
|
| |
| |
| |
| |
| | |
The Scala Swing library will still ship with 2.11 (albeit unsupported).
It now resides at https://github.com/scala/scala-swing.
|
| |
| |
| |
| |
| | |
The continuations plugin and library will still ship with 2.11 (albeit unsupported).
They now reside at https://github.com/scala/scala-continuations.
|
|\ \
| |/
|/| |
SI-7546 Use likely monotonic clock source for durations
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
System.currentTimeMillis is affected by wall-clock time, which means
things can appear to jump back in time.
Use System.nanoTime which is more likely¹ to be monotonic instead.
¹ See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6458294
"nanoTime affected by system clock change on Linux (RH9) or in
general lacks monotonicity".
|
|\ \
| | |
| | | |
Fixup for #3265
|
|/ / |
|
|\ \
| | |
| | | |
Use Serialization Proxy Pattern in List
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Modify List to use the Serialization Proxy Pattern instead of
directly mutating its state during deserialization.
Use the proxy at the List level for both Nil and :: for simplicity.
Change one member variable (hd) to val from var as a result. The
other member variable (tl) cannot yet be changed to val because
it is mutated by ListBuffer in the library and Types in reflection.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
jrudolph/w/fix-typo-that-that-occurs-twice-in-error-messages
fix typo in error messages
|
| | |/
| |/| |
|
|\ \ \
| | | |
| | | | |
SI-7618 Remove octal number literals
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This also fixes a spurious detection of octal literals in floating
point literals: Literals like 01.23 are neither deprecated nor planned
for removal.
|
|\ \ \ \
| | | | |
| | | | | |
SI-8030 force symbols on presentation compiler initialization
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This commit forces a number of built-in symbols in presentation
compiler to prevent them from being entered during parsing.
The property “parsing doesn’t enter new symbols” is tested on
a rich source file that contains significant number of variations
of Scala syntax.
|
|\ \ \ \
| | | | |
| | | | | |
SI-8059 Override immutable.Queue#{+:,:+} for performance
|
| |/ / /
| | | |
| | | |
| | | | |
Without those overrides, all elements are unnecessarily copied.
|
|\ \ \ \
| | | | |
| | | | | |
Test case for recently improved unchecked warning
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Prior to https://github.com/scala/scala/pull/2848, the enclosed
test compiled without warning and printed:
true
false
Features interacting:
- implicit class tags to enable type patterns on abstract types
- type tests on compound types.
I think the unchecked warning is acceptable for now.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-8024 Fix inaccurate message on overloaded ambiguous ident
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
We were outputing a the unattractive `package package`;
now we opt for `package object pack`.
Under `-Ydebug`, we still go to the "accurate" mode of the
old `toString` implementation, which differentiates package objects
vs package object classes.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
`Symbol#owner` of an overloaded symbol doesn't necessarily correspond
to the owner of any of the alternatives, and as such it shouldn't
be used in error message.
neg/t8024.scala actually represents a progression since 2.10.3;
the ambiguity was not reported. I bisected the change to
https://github.com/scala/scala/pull/1554.
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The error is new in 2.11, but actually seems correct. It appeared
in 2.11.0-M4, more specifically, after
https://github.com/scala/scala/pull/1554
But, the error message itself is wrong, and suggests that a method
symbol has latched itself to an incorrect owner.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
SI-6780 Better handling of cycles in in-scope implicit search
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- split out a method for the part concernted with implicits from
the current context
- leaving the outer code to handle caching, cycle detection,
and recursion up the context chain.
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Implicit searches in the body of implicit members with inferred
types were leading to cycles. Before we used to resolve that
by saying there were no implicits in scope at all; now we just
skip the current context and still include the enclosing implicits.
Care is taken not to cache results under these circumstances.
This entails reworking `Context#implicitss` so that:
- the implicit info cache only contains implicits from the current
level. The List[List[_]] is now contructed on demand;
- we can detect cycles by setting `implicitsCacheRunId` to -1 during
the computation. The outer implicits when we encounter that.
- we avoid caching when we hit a cycle or when the owner is uninitialized.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Merge 2.10.x to master
|
| |\ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Conflicts:
build.examples.xml
build.xml
docs/examples/actors/pingpong.scala
docs/examples/fors.scala
docs/examples/iterators.scala
docs/examples/jolib/Ref.scala
docs/examples/jolib/parallelOr.scala
docs/examples/monads/callccInterpreter.scala
docs/examples/monads/directInterpreter.scala
docs/examples/monads/errorInterpreter.scala
docs/examples/monads/simpleInterpreter.scala
docs/examples/monads/stateInterpreter.scala
docs/examples/parsing/ArithmeticParser.scala
docs/examples/patterns.scala
docs/examples/pilib/elasticBuffer.scala
docs/examples/pilib/handover.scala
docs/examples/pilib/piNat.scala
docs/examples/typeinf.scala
src/build/pack.xml
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Forgot to run `ant distpack` to verify, only did `dist.done`.
Implemented the rename of `doc/scala-devel-docs` to `api`.
|
| | |\ \ \ \ \
| | | | | | | |
| | | | | | | | |
SI-7912 Be defensive calling `toString` in `MatchError#getMessage`
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Otherwise, objects with exception-throwing `toString` lead to a
cascading error far removed from the originally failed match.
|
| | |\ \ \ \ \ \
| | | | | | | | |
| | | | | | | | | |
SI-8060 Avoid infinite loop with higher kinded type alias
|
| | | |/ / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
The `dealiasLocals` map was assuming that:
tp.isAliasType implies (tp.dealias ne tp)
This isn't true if `!typeParamsMatchArgs`.
This commit avoids the infinite loop by checking whether or not
dealiasing progresses.
|
| | |\ \ \ \ \ \
| | | |/ / / / /
| | |/| | | | | |
Clean up Scala distribution a bit.
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
We forgot to copy the licenses directory to the dists/ directory,
so that they weren't included in the binary distribution.
I did some house cleaning while I was at it. We no longer distribute
ant as far as I can see (we used to for the sbt build,
but that was long since removed).
Added license for ASM, and Jansi (just to be sure).
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This was agreed on a while ago, but not yet implemented.
|
| | | | | | | | |
|
| | | | | | | | |
|