summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* More principled unwrapping of types.Paul Phillips2012-04-012-32/+53
| | | | | | | Made generic type unwrapper for use by the many methods which need various types to be transparent with respect to the operation being performed. AnnotatedType, PolyType, NullaryMethodType, and ExistentialType all commonly match this description.
* Cleaned up "isTupleTypeOrSubtype".Paul Phillips2012-04-016-41/+53
| | | | | More principled logic for determining if a type is a particular type or a specialized subtype of that type.
* Merge remote-tracking branch 'adriaanm/topic/partialfun' into developPaul Phillips2012-03-3014-224/+339
|\
| * specialization: see outer contexts to fix symbolsAdriaan Moors2012-03-302-2/+16
| | | | | | | | | | | | | | | | | | this corner case in Duplicators is hit when compiling the new AbstractPartialFunction (which is specialized) under -Yvirtpatmat TODO: why do we need to guard against cx.scope eq null in typers? review by @vladureche
| * virtpatmat support for the new partialfunctionAdriaan Moors2012-03-301-13/+54
| | | | | | | | | | | | avoid casting default call in applyOrElse: the result type of the match is always B1, not the result type inferred from typing the cases
| * old patmat support for the applyOrElse partial funAdriaan Moors2012-03-303-117/+96
| | | | | | | | | | | | minimal fixes for typedMatchAnonFun so it compiles TODO: support for AbstractTotalFunction (when match is exhaustive)
| * a fast, functional PartialFunction implementationPavel Pavlov2012-03-3011-93/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | runtime.AbstractPartialFunction provides a default implementation for the new-style partial function. In principle this class is only subclassed by compiler-generated partial functions arising from matches. Either - the apply method (old-style partialfun) or - the applyOrElse method (current scheme) must be overridden, and the isDefinedAt method implemented. The applyOrElse method implementation is provided to ease the transition from the old scheme, since starr still generates old-style PartialFunctions, but locker's library has the new AbstractPartialFunction. Thus, this implementation is intended as a drop-in replacement for the old partial function, and does not require changes to the compiler. (compiler patches, both for old and new-style pattern matching, follow) - runtime.AbstractPartialFunction is based on PartialFunction.WithDefault Original version of FunctionWithDefault by Odersky (http://article.gmane.org/gmane.comp.lang.scala.internals/4032) - better performance for OrElse#applyOrElse, OrElse#lift, PF.cond - new combinator methods: PF#run, PF#runWith, PF.apply authored by @pavelpavlov, refactored by @adriaanm, review by @paulp
* | Fix for regression with inference at arity 21+.Paul Phillips2012-03-301-2/+2
| | | | | | | | A classic "off by two" error. Closes SI-4545, SI-5633.
* | Fix for string bug in genjvm.Paul Phillips2012-03-301-4/+16
| | | | | | | | It's -Ycheck:jvm, not -Ycheck:genjvm. There is no genjvm.
| |
| \
*-. \ Merge remote-tracking branches 'heathermiller/doc/linking' and ↵Paul Phillips2012-03-3019-241/+258
|\ \ \ | |_|/ |/| | | | | 'axel22/feature/future-compat' into develop
| | * Add methods in the Future companion object.Aleksandar Prokopec2012-03-291-2/+107
| | |
| | * Work on source compatibility between akka and scala futures.Aleksandar Prokopec2012-03-289-241/+135
| | | | | | | | | | | | | | | Removed some methods from execution contexts. Changed Awaitable interface.
| * | Adds links to parallel collections overview in API docsHeather Miller2012-03-2910-4/+22
| | | | | | | | | | | | Now that there's an extensive parallel collections overview on http://docs.scala-lang.org, API comments should link to it ("see also" field). This commit also fixes a couple of broken links on some sequential collection types.
* | | Cleaning up logging in specialization.Paul Phillips2012-03-293-68/+90
|/ /
* / Never write final fields outside of constructors.Paul Phillips2012-03-286-20/+42
|/ | | | | | Closes SI-3569, SI-3770. Also threw in experimental -Yoverride-vars. It's not robust.
* Merge remote-tracking branch 'jsuereth/remove-sbaz-update-man' into developPaul Phillips2012-03-2711-661/+11
|\
| * Remove sbaz and references from master repository.Josh Suereth2012-03-2711-661/+11
| |
* | Merge remote-tracking branch 'axel22/feature/collection-concurrent' into developPaul Phillips2012-03-279-98/+187
|\ \
| * | Rename ConcurrentTrieMap to concurrent.TrieMap.Aleksandar Prokopec2012-03-279-98/+187
| | | | | | | | | | | | | | | | | | | | | | | | Introduced the collection.concurrent package and introduced the concurrent.Map trait there. Deprecated the mutable.ConcurrentMap trait. Pending work - introduce the appropriate changes to JavaConversions and JavaConverters.
* | | Workaround for "package is not a value".Paul Phillips2012-03-271-24/+29
| | | | | | | | | | | | | | | | | | Not actually a fix, but when we see a package where a module is expected, it's not a great stretch to try the package object. References SI-5604.
| | |
| \ \
| \ \
| \ \
| \ \
| \ \
| \ \
| \ \
*-------. \ \ Merge remote-tracking branches 'manojo/issue/4488', 'leifwickland/patch-3', ↵Paul Phillips2012-03-2715-65/+220
|\ \ \ \ \ \ \ | |_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'non/si-5609', 'adriaanm/topic/virtpatmat' and 'VladUreche/issue/5373' into develop Conflicts: test/scaladoc/scala/model/CommentFactoryTest.scala
| | | | | * | Fixes SI-5373Vlad Ureche2012-03-274-8/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And adds basic support for scaladoc model tests (class partest.ScaladocModelTest)
| | | | * | | [vpm] smarter type inference on when virtPatmat is onAdriaan Moors2012-03-273-1/+3
| | | | | | |
| | | | * | | [vpm] suppress refchecks in matchesAdriaan Moors2012-03-271-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | didn't realize this was done for the old pattern matcher, so now we have "feature"-parity we still infer bad type arguments for type patterns -- see e.g., pos/t602.scala -- also, inference changes when you turn a case class into the corresponding class&companion object, with the same unapply as the synthetic one TODO: can we merge inferConstructorInstance & inferTypedPattern, or at least make them behave consistently?
| | | | * | | Merge remote-tracking branch 'main/master' into topic/virtpatmatAdriaan Moors2012-03-275-73/+49
| | | | |\ \ \
| | | | * | | | [vpm] error message on missing parameter typeAdriaan Moors2012-03-262-38/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for selector-less matches that should yield a function
| | | | * | | | [vpm] skolemize result type in translateMatchAdriaan Moors2012-03-262-10/+14
| | | | | |/ / | | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... but not before, to avoid having skolems in typedMatchAnonFun cast result of missingCase (avoid skolem mismatch) relevant test cases: pos/existentials-harmful.scala, pos/gadt-gilles.scala, pos/t2683.scala, pos/virtpatmat_exist4.scala
| | | * / | | Fix .empty and add .ofDim factory method.Erik Osheim2012-03-251-2/+9
| | | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit removes the (unused and unnecessary) elems* parameter from the 'empty' method. It also adds 'ofDim' which allows the user to allocate a FlatArray of a given size without providing actual elements. This fixes SI-5609.
| | * / / / Slight comment tweak for more colloquial English.Leif Wickland2012-03-251-1/+1
| | |/ / /
| * | | | Close issue #SI-4488Manohar Jonnalagedda2012-03-242-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The issue is closed as won't fix, but there are a few test cases with respect to the model relevant to the issue. Also, correct some typos.
* | | | | Removed git from source repo generation.Josh Suereth2012-03-271-0/+1
| | | | |
* | | | | Added latest link for sources so we can include them in distributions.Josh Suereth2012-03-271-1/+15
| |_|/ / |/| | |
* | | | Syntactic/organizational optimizations in Settings.Paul Phillips2012-03-265-73/+49
| |/ / |/| |
* | | Removing some foolishness.Paul Phillips2012-03-241-8/+4
| | | | | | | | | | | | I swear this change didn't work last time I was in this neighborhood.
* | | Scaladoc is now pointing to sources in githubVlad Ureche2012-03-252-2/+2
|/ / | | | | | | | | | | | | | | | | | | For snapshots, it points to the exact commit, for releases it points to the tag ("v" + maven version). The link now opens in a different tab, as opening in the same frame is not compatible with github (the page doesn't load for some reason). Left the repo url in test/review untouched because it points to the root of all LAMP repos. But... is anyone still using that script?!?
* | Broke up def bridgeDefs.Paul Phillips2012-03-241-85/+99
| | | | | | | | | | | | Possibly the ugliest function in the compiler. Unfortunately also effectively obscuring serious bugs like SI-3452. Still won't be winning homecoming queen, but might be able to leave the house.
* | Merge remote-tracking branch 'adriaanm/topic/virtpatmat' into developPaul Phillips2012-03-233-20/+29
|\ \
| * | [vpm] defend against null in erroneous type patsAdriaan Moors2012-03-231-4/+4
| | |
| * | further tweaking packing magicAdriaan Moors2012-03-231-4/+4
| | |
| * | splice in typed, dup'ed, trees for TRUE and FALSEAdriaan Moors2012-03-233-5/+10
| | | | | | | | | | | | | | | sharing trees is bad also, substing in untyped trees into typed outer trees is not good for your health
| * | less invasive packing of types in branches/casesAdriaan Moors2012-03-231-12/+13
| | | | | | | | | | | | | | | | | | we still do it in ifs when the packed types are equal, but packing types in cases breaks a lot of stuff (and I can't remember what it fixed -- we'll find out in the next test run)
| * | [vpm] need cast in one for GADT magicAdriaan Moors2012-03-231-3/+3
| | |
| * | typedMatchAnonFun's missingCase call use apply's argAdriaan Moors2012-03-231-1/+4
| | | | | | | | | | | | can't pass the scrutinee since its type has been widened
| * | [vpm] be more careful about swatchesAdriaan Moors2012-03-231-3/+5
| | | | | | | | | | | | | | | type-switch-based catches must not contain type tests on traits for some reason, so fall back to full-blown pattern match TODO: can we improve this? this simply mimics the old pattern matcher's behavior
| * | do nothing when closing closed block in ignoremodeAdriaan Moors2012-03-232-4/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this came to light with the virtual pattern matcher, which emits jumps like `matchEnd3(_test(Test.this, false))`, where _test is a tailcall the nested jumping caused double-closing (the second time in ignore mode) thus. when closing a closed block in ignore mode, simply do nothing from genLoad for label-jumps: note: when one of the args to genLoadLabelArguments is a jump to a label, it will call back into genLoad and arrive at this case, which will then set ctx1.bb.ignore to true, this is okay, since we're jumping unconditionally, so the loads and jumps emitted by the outer call to genLoad (by calling genLoadLabelArguments and emitOnly) can safely be ignored, however, as emitOnly will close the block, which reverses its instructions (when it's still open), we better not reverse when the block has already been closed but is in ignore mode (if it's not in ignore mode, double-closing is an error) @dragos figured it out, all I did was write the comment and the `if` test case to repro basic blocks crasher the tailcall in the forward jump `matchEnd3(_test(Test.this, false))` in the following program crashes the back-end (error below) @scala.annotation.tailrec final def test(meh: Boolean): Boolean = { <synthetic> val _$this: Test.type = Test.this; _test(_$this,meh){ case <synthetic> val x1: Some[String] = new Some[String]("a"); case3(){ matchEnd2({ case <synthetic> val x1: Some[String] = x1; case4(){ if (x1.ne(null)) matchEnd3(if (meh) _test(Test.this, false) else false) else case5() }; case5(){ matchEnd3(_test(Test.this, false)) }; matchEnd3(x){ x } }) }; matchEnd2(x){ x } } }; The last instruction (of basic block 11) is not a control flow instruction: CONSTANT(false) // methods def test(meh: Boolean (BOOL)): Boolean { locals: value meh, value _$this, value x1, value x, value x, value x1 startBlock: 1 blocks: [1,2,3,4,5,6,7,8,9,10,11,12,13] 1: 4 JUMP 2 2: 5 NEW REF(class Some) 5 DUP(REF(class Some)) 5 CONSTANT("a") 5 CALL_METHOD scala.Some.<init> (static-instance) 5 STORE_LOCAL(value x1) 5 SCOPE_ENTER value x1 5 JUMP 3 3: 5 LOAD_LOCAL(value x1) 7 STORE_LOCAL(value x1) 7 SCOPE_ENTER value x1 7 JUMP 4 4: 7 LOAD_LOCAL(value x1) 7 CZJUMP (REF(class Object))NE ? 5 : 6 5: 8 LOAD_LOCAL(value meh) 8 CZJUMP (BOOL)NE ? 8 : 9 6: ? JUMP 11 7: 7 DROP BOOL 7 JUMP 11 8: 8 CONSTANT(false) 8 STORE_LOCAL(value meh) 8 JUMP 2 9: 8 CONSTANT(false) 8 JUMP 10 10: 8 STORE_LOCAL(value x) 8 JUMP 12 11: 9 JUMP 2 9 STORE_LOCAL(value meh) 9 CONSTANT(false) 12: 7 LOAD_LOCAL(value x) 7 SCOPE_EXIT value x1 7 STORE_LOCAL(value x) 7 JUMP 13 13: 5 LOAD_LOCAL(value x) 5 SCOPE_EXIT value x1 5 RETURN(BOOL)
| * | [vpm] avoid verifyerror: leave jump to tail-pos labelAdriaan Moors2012-03-231-2/+7
| | | | | | | | | | | | | | | the following commit deals with the fall-out in basicblocks (double closing of blocks in ignore mode)
| * | don't throw error in setError when -YdebugAdriaan Moors2012-03-231-4/+6
| | |
| * | [vpm] typeMatchAnonFun improvementsAdriaan Moors2012-03-235-114/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | need to set up symbols with approximated info for the method and its owner before typing the method's body; when the body has been typed, we know what its result type will be, so update info of class and method to reflect that better detection of synthesized matches: annotate selector rather than relying on symbol info encapsulate CASE | SYNTHETIC flags (setting and querying)
* | | Merge remote-tracking branch 'adriaanm/topic/virtpatmat' into developPaul Phillips2012-03-238-127/+136
|\ \ \
| * | | [vpm] be more careful about swatchesAdriaan Moors2012-03-231-3/+5
| | | | | | | | | | | | | | | | | | | | type-switch-based catches must not contain type tests on traits for some reason, so fall back to full-blown pattern match TODO: can we improve this? this simply mimics the old pattern matcher's behavior