summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | | | | SI-10026 Fix endless cycle in runtime reflectionJason Zaugg2017-02-196-6/+38
| | |_|_|_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 56f23af introduced a call to `baseTypeSeq` of `scala.collection.mutable.ArrayOps.ofRef[?T]{}` in `findMember`. This exposed a latent bug in the synchronized wrapper of `BaseTypeSeq`, demonstrated below with an older version of Scala: ``` Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_112). Type in expressions for evaluation. Or try :help. scala> val symtab = reflect.runtime.universe.asInstanceOf[scala.reflect.internal.SymbolTable] symtab: scala.reflect.internal.SymbolTable = scala.reflect.runtime.JavaUniverse@458544e0 scala> import symtab._ import symtab._ scala> val ArrayOps_ofRef_Class = symtab.symbolOf[scala.collection.mutable.ArrayOps.ofRef[AnyRef]] ArrayOps_ofRef_Class: symtab.TypeSymbol = class ofRef scala> appliedType(symbolOf[Set[Any]], symbolOf[Set[Any]].typeParams.map(TypeVar(_))) res2: symtab.Type = Set[?A] scala> .narrow res3: symtab.Type = <none>.<refinement>.type scala> .baseTypeSeq java.lang.StackOverflowError at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:21) at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$class.map(SynchronizedOps.scala:27) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anon$2.map(SynchronizedOps.scala:34) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$class.lateMap(SynchronizedOps.scala:34) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anon$2.lateMap(SynchronizedOps.scala:34) at scala.reflect.internal.BaseTypeSeqs$MappedBaseTypeSeq.map(BaseTypeSeqs.scala:235) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anon$2.scala$reflect$runtime$SynchronizedOps$SynchronizedBaseTypeSeq$$super$map(SynchronizedOps.scala:34) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anonfun$map$1.apply(SynchronizedOps.scala:27) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anonfun$map$1.apply(SynchronizedOps.scala:27) at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19) at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$class.map(SynchronizedOps.scala:27) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anon$2.map(SynchronizedOps.scala:34) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$class.lateMap(SynchronizedOps.scala:34) at scala.reflect.runtime.SynchronizedOps$SynchronizedBaseTypeSeq$$anon$2.lateMap(SynchronizedOps.scala:34) at scala.reflect.internal.BaseTypeSeqs$MappedBaseTypeSeq.map(BaseTypeSeqs.scala:235) ``` The infinite cycle involves: ``` class MappedBaseTypeSeq(orig: BaseTypeSeq, f: Type => Type) extends BaseTypeSeq(orig.parents map f, orig.elems) { ... override def map(g: Type => Type) = lateMap(g) override def lateMap(g: Type => Type) = orig.lateMap(x => g(f(x))) } trait SynchronizedBaseTypeSeq extends BaseTypeSeq { ... override def map(f: Type => Type): BaseTypeSeq = gilSynchronized { super.map(f) } override def lateMap(f: Type => Type): BaseTypeSeq = // only need to synchronize BaseTypeSeqs if they contain refined types if (map(f).toList.exists(_.isInstanceOf[RefinedType])) new MappedBaseTypeSeq(this, f) with SynchronizedBaseTypeSeq else new MappedBaseTypeSeq(this, f) } ``` This commit creates a new factory method for `MappedBaseTypeSeq`-s to break the cycle. As an independent change, I have also removed the attempt to conditionally synchronize them, as the condition was eagerly applying the map function (and throwing away the result!). I've appeased MiMa with new whitelist entries, but I'm confident that this is deep enough in the bowels of our runtime reflection implementation that there is no way that user code will be calling these methods directly.
* | | | | | | | | | Merge pull request #5707 from retronym/topic/java9-prepareLukas Rytz2017-02-2016-3/+28
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | More groundwork for JDK 9 support
| * | | | | | | | | | Workaround bug in Scala runtime reflection on JDK 9Jason Zaugg2017-02-1613-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The underlying bug is tracked as https://github.com/scala/scala-dev/issues/304 and blocks our SBT starting on JDK 9. This commit avoids using the empty package in our build definition. After this change, I needed to manually clean the class files from the build definition as follows, which might indicate a bug in SBT. $ sbt ... /Users/jz/code/scala-java9-ci/build.sbt:0: warning: imported `BuildSettings' is permanently hidden by definition of object BuildSettings import ..., _root_.scala.build.BuildSettings, ... ^C % rm -rf project/target/scala-2.10/sbt-0.13/classes/ % sbt # okay second time
| * | | | | | | | | | Avoid ambiguous overload on JDK 9Jason Zaugg2017-02-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The addition of this method in `CharBuffer` CharBuffer position(int newPosition) renders an ambiguity in: ``` scala> (b: java.nio.CharBuffer) => b.position <console>:12: error: ambiguous reference to overloaded definition, both method position in class CharBuffer of type (x$1: Int)java.nio.CharBuffer and method position in class Buffer of type ()Int match expected type ? (b: java.nio.CharBuffer) => b.position ``` Manually applying the empty params avoids this.
| * | | | | | | | | | Adapt to change in ClassLoader in JDK 9Jason Zaugg2017-02-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A package protected method was added: Stream<Package> packages() The private accessor method for `val package` in our subclass now violates the "cannot tighten access" rule. Making it `private[this]` avoids creating an accessor.
| * | | | | | | | | | Bump scala-asm versionJason Zaugg2017-02-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The motivation is to support reading Classfile v53, for Java 9.
* | | | | | | | | | | Merge pull request #5709 from adriaanm/sam_wild_boundLukas Rytz2017-02-202-0/+16
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Ignore BoundedWildcardType in erasure type map
| * | | | | | | | | | | Ignore BoundedWildcardType in erasure type mapAdriaan Moors2017-02-192-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This case can be triggered as illustrated in the test.
* | | | | | | | | | | | Merge pull request #5711 from retronym/ticket/jrtLukas Rytz2017-02-203-30/+99
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Faster and simpler Java 9 classpath implementation
| * | | | | | | | | | | | Faster and simpler Java 9 classpath implementationJason Zaugg2017-02-173-30/+99
| | |/ / / / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Take advantage of the `/packages` index provided by the jrt file system to avoid (expensive) Files.exist for non-existent entries across the full list of modules. - Extends ClassPath directly which leads to a simpler implemnentation that using the base class. - Add a unit test that shows we can read classes and packages from the Java standard library. Fixes scala/scala-dev#306 With this change bootstrap time under Java 9 was comparable to Java 8. Before, it was about 40% slower.
* | | | | | | | | | | | Merge pull request #5713 from janekdb/issue/GH-644/sync-jekyll-README-to-GemfileLukas Rytz2017-02-201-1/+5
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | GH-644: Expand note regarding Jekyll versions
| * | | | | | | | | | | | GH-644: Expand note regarding Jekyll versionsJanek Bogucki2017-02-171-1/+5
| | |_|_|_|_|_|_|_|/ / / | |/| | | | | | | | | |
* | | | | | | | | | | | Merge pull request #5714 from dragos/issue/usage-sterr-SI-10178Lukas Rytz2017-02-201-2/+10
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / / / |/| | | | | | | | | | | SI-10178 Route reporter.echo to stdout
| * | | | | | | | | | | SI-10178 Route reporter.echo to stdoutIulian Dragos2017-02-181-2/+10
| |/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `echo` is currently used only for usage information, and that makes a lot more sense to go to stdout instead of stderr. This allows grepping through the extensive list of compiler options.
* | | | | | | | | | | Merge pull request #5717 from som-snytt/issue/10148-followupAdriaan Moors2017-02-192-5/+13
|\ \ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / / |/| | | | | | | | | | SI-10148 Accept verbose zero
| * | | | | | | | | | SI-10148 Accept verbose zeroSom Snytt2017-02-182-5/+13
| | |_|_|_|_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | The test for non-zero must recognize `-0e+00f` and variants.
* | | | | | | | | | Merge pull request #5716 from adriaanm/i296Jason Zaugg2017-02-191-1/+4
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | Ensure ordering for args to `choose` in DurationTest
| * | | | | | | | | Ensure ordering for args to `choose` in DurationTestAdriaan Moors2017-02-171-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix scala/scala-dev#296
* | | | | | | | | | Merge pull request #5710 from SethTisue/sd-303Adriaan Moors2017-02-171-3/+7
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | fix recent regression: macro paradise + Java sources = MatchError
| * | | | | | | | | fix recent regression: macro paradise + Java sources = MatchErrorSeth Tisue2017-02-171-3/+7
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fixes https://github.com/scala/scala-dev/issues/303 ; the regression was in https://github.com/scala/scala/pull/5585
* | | | | | | | | Merge pull request #5701 from SethTisue/merge-2.11.x-to-2.12.x-20170214Adriaan Moors2017-02-1737-133/+1710
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | [ci: last-only] merge 2.11.x onto 2.12.x (February 14, 2017)
| * | | | | | | | Merge branch '2.12.x' into merge-2.11.x-to-2.12.x-20170214Seth Tisue2017-02-1789-1757/+632
| |\ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | |
* | | | | | | | | Merge pull request #5693 from markusjura/lineStream-warningsSeth Tisue2017-02-171-2/+2
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Changing deprecation warning to lineStream
| * | | | | | | | | Changing deprecation warning to lineStreamMarkus Jura2017-02-131-2/+2
| | |/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The deprecation text of `ProcessBuilder.lines(log: ProcessLogger)` and `ProcessBuilder.lines_!(log: ProcessLogger) mentions to use the method `stream` and `stream_!` respectively. These methods do not exists. The text has been changed to use `lineStream` and `lineStream_!` respectively.
* | | | | | | | | Merge pull request #5697 from som-snytt/issue/10164Seth Tisue2017-02-172-11/+17
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-10164 BitSet.tail zigs where it zagged
| * | | | | | | | | SI-10164 BitSet.tail zigs where it zaggedSom Snytt2017-02-142-11/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A cut/paste issue, an increment was held over from head, which scans forward, to tail, which scans backward.
* | | | | | | | | | Merge pull request #5712 from SethTisue/mima-fixupLukas Rytz2017-02-171-0/+8
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | update MiMa whitelist for infix annotation
| * | | | | | | | | | update MiMa whitelist for infix annotationSeth Tisue2017-02-161-0/+8
|/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | little missing piece of https://github.com/scala/scala/pull/5589
* | | | | | | | | | Merge pull request #5684 from SethTisue/partest-sbt-only-plzSeth Tisue2017-02-164-311/+1
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | run partest from sbt always, command line never
| * | | | | | | | | | fix annoying extra space in tab completion of sbt `partest` commandJason Zaugg2017-02-141-1/+1
| | | | | | | | | | |
| * | | | | | | | | | run partest from sbt always, command line neverSeth Tisue2017-02-083-310/+0
| | |_|_|_|_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | these scripts are (I assume) unused these days and there's no reason to maintain them. and it's risky to have two different ways of running the same thing which could get out of sync with each other sbt forks a JVM to run partest, so it's not like we need these scripts in order to get a more isolated environment in that respect.
* | | | | | | | | | Merge pull request #5694 from ↵Seth Tisue2017-02-1642-65/+66
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | janekdb/topic/2.12.x-scaladoc-spelling-corrections-2 Fix typos in compiler and reflect
| * | | | | | | | | | Fix typos in compiler and reflectJanek Bogucki2017-02-1342-65/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Miscellania: Miscellania is a small island off the northernmost part of the Fremennik Isles - RunScape Wiki Miscellanea: A collection of miscellaneous objects or writings - Merriam-Webster
* | | | | | | | | | | Merge pull request #5648 from som-snytt/issue/10148Seth Tisue2017-02-165-10/+60
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | SI-10148 Follow Java for float literals
| * | | | | | | | | | | SI-10148 Follow Java for float literalsSom Snytt2017-01-185-10/+60
| | |_|_|_|_|_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use `Float.parseFloat` instead of converting from Double. Error when a value rounds to zero.
* | | | | | | | | | | Merge pull request #5688 from Philippus/fix-scaladoc-base-referencesAdriaan Moors2017-02-162-3/+4
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | fixed broken references after move from 'model' to 'base'
| * | | | | | | | | | | fixed broken references after move from 'model' to 'base'Philippus Baalman2017-02-102-3/+4
| | |_|_|_|/ / / / / / | |/| | | | | | | | |
* | | | | | | | | | | Merge pull request #5674 from Philippus/issue/9519Adriaan Moors2017-02-161-24/+0
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | SI-9519 removed the usecase section of the ++-method
| * | | | | | | | | | | SI-9519 removed the usecase section of the ++-methodPhilippus Baalman2017-02-041-24/+0
| | |_|_|/ / / / / / / | |/| | | | | | | | |
* | | | | | | | | | | Merge pull request #5687 from retronym/ticket/10177Adriaan Moors2017-02-162-0/+81
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | SI-10177 Override lazy operations to preserve TrieMap's semantics
| * | | | | | | | | | | SI-10177 Override lazy operations to preserve TrieMap's semanticsJason Zaugg2017-02-102-0/+81
| | |_|_|_|_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling .iterator on a TrieMap gives a read-only snapshot. This then extends to most inherited implementations written in terms of .iterator. However, some inherited methods, such as .values, either defer the call to .iterator or call it more than once. This results in subsequent mutations to the original map being visible I reviewed the inherited implementations from MapLike and found we needed overrides of `values`, `keySet`, `filterKeys`, and `mapValues`. Like `iterator`, these now create a read-only snapshot.
* | | | | | | | | | | Merge pull request #5589 from allisonhb/feature/si-4700Adriaan Moors2017-02-167-2/+129
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | SI-4700 The thrilling continuation to the infix type printing saga.
| * | | | | | | | | | | SI-4700 Make infix notation default for symbolic types.allisonhb2016-12-145-43/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add ability to disable this via the @showAsInfix annotation.
| * | | | | | | | | | | SI-4700 Show infix types with as few parentheses as needed.allisonhb2016-12-133-9/+41
| | | | | | | | | | | |
| * | | | | | | | | | | SI-4700 Add `@infix` annotation for type printingVlad Ureche2016-09-196-0/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` scala> import scala.annotation.infix import scala.annotation.infix scala> @infix class &&[T, U] defined class $amp$amp scala> def foo: Int && Boolean = ??? foo: Int && Boolean ```
* | | | | | | | | | | | Merge pull request #5546 from som-snytt/issue/9636Adriaan Moors2017-02-165-33/+49
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | SI-9636 More precise error pos on apply inference
| * | | | | | | | | | | | SI-9636 More precise error pos on apply inferenceSom Snytt2016-12-205-33/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a method type arg is inferred Any, warn about the function and not the innocent arg.
* | | | | | | | | | | | | Merge pull request #5662 from teldosas/SI-9675Adriaan Moors2017-02-164-1/+53
|\ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | SI-9675 warn about non-sensible equals in anonymous functions
| * | | | | | | | | | | | | Add warning about non-sensible equals in anonymous functionsteldosas2017-02-014-1/+53
| | |_|/ / / / / / / / / / | |/| | | | | | | | | | |
* | | | | | | | | | | | | Merge pull request #5679 from som-snytt/issue/sliding-docAdriaan Moors2017-02-162-30/+41
|\ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nuance doc for sliding