summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* SI-1980 A lint warning for by-name parameters in right assoc methodsJason Zaugg2013-08-191-0/+14
| | | | | | | | | | | | | | | | | | The desugaring of right associative calls happens in the parser. This eagerly evaluates the arguments (to preserve left-to-right evaluation order the arguments are evaluated before the qualifier). This is pretty surprising if the method being called has a by-name parameter in the first parameter section. This commit adds a warning under -Xlint when defining such a method. The relevent spec snippets: > SLS 4.6.1 says that call-by-name argument "is not evaluated at the point of function application, but instead is evaluated at each use within the function". > > But 6.12.3 offers: > "If op is right- associative, the same operation is interpreted as { val x=e1; e2.op(x ) }, where x is a fresh name."
* SI-7704 Fix partest's test category selection (again)Simon Ochsenreither2013-08-161-1/+1
| | | | | Looks like multiple, different fixes for this issue managed to break it again.
* Merge pull request #2843 from xeno-by/topic/kill-introduce-top-levelAdriaan Moors2013-08-165-178/+3
|\ | | | | kills introduceTopLevel
| * kills introduceTopLevelEugene Burmako2013-08-165-178/+3
| | | | | | | | | | | | | | | | | | | | | | As we've figured out from the practice, introduceTopLevel is seductively useful but unfortunately not robust, potentially bringing compilation order problems. Therefore, as discussed, I'm removing it from the public macro API. Alternatives are either: 1) delving into internals, or 2) using macro paradise and experimenting with macro annotations: http://docs.scala-lang.org/overviews/macros/annotations.html.
* | Merge pull request #2841 from gourlaysama/wip/t6507Adriaan Moors2013-08-162-3/+5
|\ \ | | | | | | SI-6507 do not call .toString on REPL results when :silent is on.
| * | SI-6507 do not call .toString on REPL results when :silent is on.Antoine Gourlay2013-08-162-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Member handlers used to always call .toString on REPL results, even when :silent was on, which could force evaluation or cause unwanted side effects. This forwards the current value of `printResults` to the member handlers (through Request) for them to decide what to do when the results must not be printed. 2 handlers now do not return any extraction code when silent: - ValHandler, so that it doesn't call toString on the val - Assign, so that it doesn't call toString on the right-hand side of the assignement.
* | | Merge pull request #2777 from soc/SI-7681-dead-code-daemonthreadfactoryAdriaan Moors2013-08-163-77/+35
|\ \ \ | | | | | | | | SI-7681 Remove DaemonThreadFactory, clean up IMain
| * | | Clean up imports in s.t.n.interpreter.IMainSimon Ochsenreither2013-08-151-38/+33
| | | |
| * | | SI-7681 Remove scala.tools.nsc.io.DaemonThreadFactorySimon Ochsenreither2013-08-153-40/+3
| |/ /
* | | Merge pull request #2830 from densh/topic/stats-parsing-2Adriaan Moors2013-08-1613-133/+160
|\ \ \ | | | | | | | | updated SI-7331, SI-6843, SI-7731, parser entry point refactoring, assertThrows utility function
| * | | SI-6843 well-positioned syntax errors for quasiquotesDen Shabalin2013-08-144-50/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is achieved in a following way: 1. Similarly to toolbox quasiquotes can go away with wrapping for parsing purpose after introduction of `parseStats` and `parseRule` entry points. 2. In case of syntax error quasiquote computes equivalent corresponding position in the source code with the help of `corrrespondingPosition` mapper which relies on position data collected into `posMap` during code generation.
| * | | SI-7331 remove all the wrapping code from toolboxDen Shabalin2013-08-141-7/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change toolbox parsing to use `parseStats` parser entry point instead of current code-wrappign technique that makes positions much less useful to end users. There is also no need to create a compiler `Run` for parsing.
| * | | refactor repl to use new new parser entry pointDen Shabalin2013-08-146-42/+36
| | | | | | | | | | | | | | | | | | | | | | | | This commit refactors repl to use `parseStats` entry point and streamlines hacky error handling that was previously used to encode errors that happen during parsing.
| * | | refactor parser entry points and extract a few methods outDen Shabalin2013-08-143-32/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit contains three logical changes: 1. Split `templateStatSeq` into two methods as we need more reliable parsing of template body alone for new `parseStats` entry point. 2. Add new parser entry point called `parseStats` which is aimed towards use in tools that require parsing of Scala code that can be written inside of a template. Such functionality is required for parsing lines in repl, parsing code through toolbox, parsing and running scala scripts and lastly for quasiquotes. All of them are refactored to use this very method in the next commits. A new method called `templateStatsCompat` is also added to make this commit pass the tests but it's a temporary hack that will be removed in next commit in favor of `parseStats`. 3. Extract out a few methods like `isCaseDefStart`, `expectedMsgTemplate` and `parseRule`. These are needed to override parser behaviour in updated quasiquotes parser (see next commits).
| * | | SI-7731 make CannotHaveAttrs more consistentDen Shabalin2013-08-141-4/+6
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously setPos, pos_=, setType, tpe_= all behaved inconsistently between each other even though they all represent similar attributes that cannot be changed on CannotHaveAttrs trees. In order to simplify handling of such trees in compiler code each of these fields now supports assignment to its current default value: NoType for tpe and NoPosition for pos. Such assignments don't mutate underlying trees.
* | | Merge pull request #2823 from som-snytt/issue/7715Adriaan Moors2013-08-162-42/+67
|\ \ \ | | | | | | | | SI-7715 String inpatternation s"$_" for s"${_}"
| * | | SI-7715 String inpatternation s"$_" for s"${_}"Som Snytt2013-08-122-42/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a pattern, ``` scala> implicit class RX(val sc: StringContext) { | def rx = sc.parts.mkString("(.+)").r } defined class RX scala> "2 by 4" match { case rx"$a by $_" => a } res0: String = 2 scala> val rx"$_ by $b" = "2 by 4" b: String = 4 ```
* | | | Merge pull request #2821 from xeno-by/topic/fundep-materializationAdriaan Moors2013-08-161-12/+52
|\ \ \ \ | | | | | | | | | | SI-7470 implements fundep materialization
| * | | | SI-7470 implements fundep materializationEugene Burmako2013-08-131-12/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fix provides implicit macros with an ability to affect type inference in a more or less sane manner. That's crucial for materialization of multi-parametric type class instances (e.g. Iso's from shapeless). Details of the technique can be found in comments.
* | | | | Merge pull request #2803 from adriaanm/rebase-2728Adriaan Moors2013-08-161-18/+16
|\ \ \ \ \ | | | | | | | | | | | | SI-7658 Prevent StackOverflowError in ScalaRunTime.stringOf
| * | | | | Remove unused private[scala] def ScalaRunTime.checkZipSimon Ochsenreither2013-08-081-14/+0
| | | | | |
| * | | | | SI-7658 Prevent StackOverflowError in ScalaRunTime.stringOfSimon Ochsenreither2013-08-081-4/+16
| | |/ / / | |/| | |
* | | | | Merge pull request #2785 from soc/SI-7704Adriaan Moors2013-08-167-36/+30
|\ \ \ \ \ | | | | | | | | | | | | SI-7704 Fix partest's test category selection
| * | | | | Clean up ConsoleRunner, --> returns Boolean ...Simon Ochsenreither2013-07-303-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | ... not Unit now.
| * | | | | Add some explicit return types to s.t.c._Simon Ochsenreither2013-07-304-16/+15
| | | | | |
| * | | | | SI-7704 Fix partest's test category selectionSimon Ochsenreither2013-07-303-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | My recent changes to command line parsing in 6090709 broke partest's functionality of picking test categories (e. g. --pos or --run). The breakage was caused because scala.tools.cmd._ stored the command line options with the `--` prefix, but TestKinds.standardKinds did not.
* | | | | | Merge pull request #2798 from som-snytt/issue/7544-errmsgAdriaan Moors2013-08-162-2/+4
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | SI-7544 Interpolation message for %% literal
| * | | | | StringContext#checkLengths reports bad args countSom Snytt2013-08-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since interpolator args are of type Any, it's easy to write s(args) instead of s(args: _*). I wonder if Xlint would have warned me about that.
| * | | | | SI-7544 Interpolation message for %% literalSom Snytt2013-08-061-1/+2
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new error text: "conversions must follow a splice; use %% for literal %, %n for newline". The error is emitted when % is not at the start of a part; only the non-conversions %% and %n are allowed. It would be nice if it were convenient to parse the part to see what the user may have intended, but c'est l'erreur.
* | | | | Merge pull request #2831 from soc/SI-7624Grzegorz Kossakowski2013-08-1572-2557/+1293
|\ \ \ \ \ | | | | | | | | | | | | SI-7624 Fix -feature and some -Xlint warnings
| * | | | | Whitespace fixes in scala/tools/scalapSimon Ochsenreither2013-08-1511-242/+241
| | | | | |
| * | | | | SI-7624 Fix -feature warnings in scala/tools/scalapSimon Ochsenreither2013-08-1525-174/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and move scalap.scala.tools.scalap.scalax.rules to scalap.scala.tools.scalap.rules now that all the Monad/Functor/ Applicatve/... stuff has been removed.
| * | | | | SI-7624 Replace new{Term,Type}Name with {Term,Type}NameSimon Ochsenreither2013-08-153-11/+11
| | | | | |
| * | | | | SI-7624 Fix a few remaining -Xlint warnings ...Simon Ochsenreither2013-08-1525-70/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in various places. This includes actors, compiler (mostly some new macro parts) continuations, partest, scaladoc, scalap.
| * | | | | SI-7624 Fix -Xlint warnings in AnyVal-related codeSimon Ochsenreither2013-08-1511-1771/+629
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The changes are actually pretty small: scala.language.implicitConversions is moved around so that it is only emitted to the source file if there is an actual implicit conversion. The rest of the diff are mostly the new generated source files reflecting that change.
| * | | | | Formatting fixes for AnyValSimon Ochsenreither2013-08-151-59/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The files are not regenerated here, because additional fixes will follow in the next commit.
| * | | | | SI-7624 Fix -feature warnings and build with -featureSimon Ochsenreither2013-08-159-19/+23
| | |_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I added a language.existential import to LazyCombiner.scala which should not be necessary, but causes a spurious warning otherwise: scala/src/library/scala/collection/parallel/mutable/LazyCombiner.scala:33: warning: the existential type scala.collection.parallel.mutable.LazyCombiner[_$1,_$2,_$3] forSome { type _$1; type _$2; type _$3 <: scala.collection.generic.Growable[_$1] with scala.collection.generic.Sizing }, which cannot be expressed by wildcards, should be enabled by making the implicit value scala.language.existentials visible. if (other.isInstanceOf[LazyCombiner[_, _, _]]) { ^ I created ticket SI-7750 to track this issue.
* | | | | Merge pull request #2819 from som-snytt/issue/regextract-charAdriaan Moors2013-08-141-0/+38
|\ \ \ \ \ | | | | | | | | | | | | SI-7737 Regex matches Char
| * | | | | SI-7737 Regex matches CharSom Snytt2013-08-101-0/+38
| | |_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enables Char extraction by regex. ``` val r = """(\p{Lower})""".r "cat"(0) match { case r(x) => true } val nc = """\p{Lower}""".r "cat"(0) match { case nc() => true } ```
* | | | | Merge pull request #2791 from som-snytt/issue/7265-2.11Adriaan Moors2013-08-141-4/+3
|\ \ \ \ \ | | | | | | | | | | | | SI-7265 javaSpecVersion, adjust isJava... tests for 2.11
| * | | | | SI-7265 javaSpecVersion, adjust isJava... testsSom Snytt2013-08-011-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make this and related properties public, because they are useful. This change ought to have been committed at 2.11 and then backported with restrictions, rather than vice-versa. Note that they are defined in the order, version, vendor and name, which is the order from the underlying javadoc. It would be a neat feature of the PR validator, as previously imagined, to run a "pending" test and then, on success and merge, to move it automatically to the canonical suite.
* | | | | | Merge pull request #2780 from lcycon/lcycon-deprecate_lockAdriaan Moors2013-08-141-0/+1
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | Add deprecation warning to scala.concurrent.Lock class
| * | | | | Add deprecation warning to lock classLuke Cycon2013-07-291-0/+1
| | | | | |
* | | | | | Merge pull request #2804 from adriaanm/rebase-2763Adriaan Moors2013-08-122-3/+11
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-7690 ghost error message fails compile [Rebase of #2763]
| * | | | | | SI-7690 ghost error message fails compilePaul Phillips2013-08-112-3/+11
| | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | I won't even try to explain the error reporting code, because it would have no basis in reality. However this change appears to fix the symptom reported.
* | | | | | Merge pull request #2807 from som-snytt/issue/partest-dirAdriaan Moors2013-08-123-41/+38
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-7729 Does Par-Test work? Absolutely!
| * | | | | | Log file is zapped before test runSom Snytt2013-08-081-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not all test configurations handle an existing log file. In particular, kicking off javac will append to the log file and always fail the test. Don't even ask how I know that.
| * | | | | | SI-7729 Does Par-Test work? Absolutely!Som Snytt2013-08-083-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Testicolor just passed file arguments through; this commit does either toAbsolute or getAbsoluteFile (depending on the File API impedance mismatch) at ConsoleRunner (command line) and Runner (ant supplies absolute paths, but in case sbt runner doesn't, and who knows). It also sprinkles toAbsolute internally, where it may be redundant. Do I mean redundant or redolent? I noticed that my branch from last year relativized to test root always; so this is one of those choices one commits to. The point of breakage in this case was, if a path is not absolute, use test root / path, which only works (of course) if the relative path is relative to test root, which is no longer the case. Because all paths are now calculated with respect to the test file path, the "out" dir would change its relative path depending on the invocation.
| * | | | | | Par-Test split checks work againSom Snytt2013-08-081-37/+31
| | |_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Check files split into conditional blocks with partest flags have been broken since the new diff regime. For some reason, no one noticed. The clever scheme to "filter the diff" instead of just filtering the check file is abandoned as futile and unnecessary. Fix java6 checkfile for ifdiff fix.
* | | | | | Merge pull request #2764 from folone/masterGrzegorz Kossakowski2013-08-123-13/+40
|\ \ \ \ \ \ | | | | | | | | | | | | | | Making map2Conserve occupy constant stack space in spirit of SI-2411.