diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..77b30a2c --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,12 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.158.0/containers/ubuntu/.devcontainer/base.Dockerfile + +# [Choice] Ubuntu version: bionic, focal +ARG VARIANT="focal" +FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT} + +# [Optional] Uncomment this section to install additional OS packages. +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends default-jdk gradle maven golang-go \ + && go get github.com/sourcegraph/lsif-semanticdb/cmd/lsif-semanticdb + + diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..bd7fb169 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,27 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.158.0/containers/ubuntu +{ + "name": "Ubuntu", + "build": { + "dockerfile": "Dockerfile", + // Update 'VARIANT' to pick an Ubuntu version: focal, bionic + "args": { "VARIANT": "focal" } + }, + + // Set *default* container specific settings.json values on container create. + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "uname -a", + + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 92d9c7d3..697c167e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,14 +10,14 @@ jobs: steps: - uses: actions/checkout@v2 - uses: olafurpg/setup-scala@v10 + - uses: actions/setup-go@v2 with: - java-version: adopt@1.11 + go-version: '^1.13.1' + - run: go get github.com/sourcegraph/lsif-semanticdb/cmd/lsif-semanticdb - run: sbt test check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: olafurpg/setup-scala@v10 - with: - java-version: adopt@1.11 - run: sbt checkAll diff --git a/.github/workflows/native.yml b/.github/workflows/native.yml new file mode 100644 index 00000000..63e97dcf --- /dev/null +++ b/.github/workflows/native.yml @@ -0,0 +1,58 @@ +name: Native Image +on: + push: + branches: + - master + release: + types: [published] +jobs: + unix: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [macOS-latest, ubuntu-latest, windows-latest] + include: + - os: macOS-latest + uploaded_filename: lsif-java-x86_64-apple-darwin + local_path: lsif-java/target/native-image/lsif-java + - os: ubuntu-latest + uploaded_filename: lsif-java-x86_64-pc-linux + local_path: lsif-java/target/native-image/lsif-java + - os: windows-latest + uploaded_filename: lsif-java-x86_64-pc-win32.exe + local_path: lsif-java\target\native-image\lsif-java.exe + steps: + - uses: actions/checkout@v2 + - uses: olafurpg/setup-scala@v10 + - uses: actions/setup-go@v2 + with: + go-version: '^1.13.1' + - run: go get github.com/sourcegraph/lsif-semanticdb/cmd/lsif-semanticdb + - run: git fetch --tags || true + - name: sbt nativeImage + shell: bash + if: ${{ matrix.os != 'windows-latest' }} + run: | + sbt cli/nativeImage "cli/nativeImageRun --cwd tests/gradle-example" + - name: sbt nativeImage + shell: cmd + if: ${{ matrix.os == 'windows-latest' }} + run: >- + "C:\Program Files (x86)\Microsoft Visual + Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && sbt + cli/nativeImage + - uses: actions/upload-artifact@master + with: + path: ${{ matrix.local_path }} + name: ${{ matrix.uploaded_filename }} + - name: Upload release + if: github.event_name == 'release' + uses: actions/upload-release-asset@v1.0.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ matrix.local_path }} + asset_name: ${{ matrix.uploaded_filename }} + asset_content_type: application/zip diff --git a/README.md b/README.md index 659767a6..97336cfe 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,24 @@ Currently, only Java 8 with the build tool sbt is supported. We hope to increase compatibility with more Java language versions and build tools as the project evolves. -| Language version | Support | -| ---------------- | ------- | -| Java 7 | ❌ | -| Java 8 | ✅ | -| Java 11+ | ❌ | +| Language version | Support | +| ---------------- | --------------------------------- | +| Java 7 | ❌ | +| Java 8 | ✅ | +| Java 11 | ✅ | +| Java 12 | Not tested in CI, but should work | +| Java 13 | Not tested in CI, but should work | +| Java 14 | Not tested in CI, but should work | +| Java 15 | ✅ | +| Java 16 | Not tested in CI, but should work | +| Java 17 | Not tested in CI, but should work | | Build tool | Support | | ---------- | ------- | -| Gradle | ❌ | -| Maven | ❌ | +| Gradle | ✅ | +| Maven | ✅ | | Bazel | ❌ | +| Buck | ❌ | | sbt | ✅ | ## Overview @@ -82,6 +89,17 @@ using SemanticDB as an intermediary representation for LSIF: The following sections provide tips on how to contribute to this codebase. +### System dependencies + +- `java`: any version should work +- `git`: any version should work +- `lsif-semanticdb`: + `go get github.com/sourcegraph/lsif-semanticdb/cmd/lsif-semanticdb` +- `gradle`: `brew install gradle`, or see + [general installation guide](https://gradle.org/install/). +- `mvn`: `brew install maven`, or see + [general installation guide](https://www.baeldung.com/install-maven-on-windows-linux-mac). + ### Project structure These are the main components of the project. @@ -100,17 +118,19 @@ These are the main components of the project. ### Helpful commands -| Command | Where | Description | -| ------------------------------------------------------------------ | -------- | ----------------------------------------------------------------------------------- | -| `./sbt` | terminal | Start interactive sbt shell with Java 8. Takes a while to load on the first run. | -| `unit/test` | sbt | Run fast unit tests. | -| `~unit/test` | sbt | Start watch mode to run tests on file save, good for local edit-and-test workflows. | +| Command | Where | Description | +| ------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------- | +| `./sbt` | terminal | Start interactive sbt shell with Java 11. Takes a while to load on the first run. | +| `unit/test` | sbt | Run fast unit tests. | +| `~unit/test` | sbt | Start watch mode to run tests on file save, good for local edit-and-test workflows. | +| `buildTools/test` | sbt | Run slow build tool tests (Gradle, Maven). | | `snapshots/testOnly tests.MinimizedSnapshotSuite` | sbt | Runs fast snapshot tests. Indexes a small set of files under `tests/minimized`. | | `snapshots/testOnly tests.MinimizedSnapshotSuite -- *InnerClasses*` | sbt | Runs only individual tests cases matching the name "InnerClasses". | | `snapshots/testOnly tests.LibrarySnapshotSuite` | sbt | Runs slow snapshot tests. Indexes a corpus of external Java libraries. | | `snapshots/test` | sbt | Runs all snapshot tests. | | `snapshots/run` | sbt | Update snapshot tests. Use this command after you have fixed a bug. | -| `fixAll` | sbt | Run Scalafmt, Scalafix and Javafmt on all sources. Run this before opening a PR. | +| `cli/run --cwd DIRECTORY` | sbt | Run `lsif-java` command-line tool against a given Gradle/Maven build. | +| `fixAll` | sbt | Run Scalafmt, Scalafix and Javafmt on all sources. Run this before opening a PR. | ### Import the project into IntelliJ diff --git a/build.sbt b/build.sbt index ddc576d8..a1a8dc72 100644 --- a/build.sbt +++ b/build.sbt @@ -1,18 +1,31 @@ -def scala213 = "2.13.4" -def scalametaVersion = "4.4.8" +import java.io.File +import java.util.Properties +import scala.collection.mutable.ListBuffer + +lazy val V = + new { + val coursier = "2.0.8" + val bloop = "1.4.7" + val bsp = "2.0.0-M13" + val moped = "0.1.9" + def scala213 = "2.13.4" + def scala212 = "2.12.12" + def scalameta = "4.4.8" + } inThisBuild( List( - scalaVersion := scala213, - crossScalaVersions := List(scala213), + scalaVersion := V.scala213, + crossScalaVersions := List(V.scala213), scalafixDependencies += "com.github.liancheng" %% "organize-imports" % "0.5.0", scalafixCaching := true, scalacOptions ++= List("-Wunused:imports"), semanticdbEnabled := true, - semanticdbVersion := scalametaVersion, + semanticdbVersion := V.scalameta, organization := "com.sourcegraph", homepage := Some(url("https://github.com/sourcegraph/lsif-java")), + dynverSeparator := "-", licenses := List("Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0")), developers := @@ -49,51 +62,131 @@ commands += "javafmtCheckAll" :: "publishLocal" :: s } -lazy val testSettings = List( - skip.in(publish) := true, - autoScalaLibrary := true, - testFrameworks := List(new TestFramework("munit.Framework")), - libraryDependencies ++= - List( - "org.scalameta" %% "munit" % "0.7.10", - "org.scalameta" %% "scalameta" % scalametaVersion, - "org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.0", - "io.get-coursier" %% "coursier" % "2.0.8", - "com.lihaoyi" %% "pprint" % "0.6.1" - ) -) +lazy val agent = project + .in(file("semanticdb-agent")) + .settings( + fatjarPackageSettings, + autoScalaLibrary := false, + moduleName := "semanticdb-agent", + libraryDependencies ++= + List( + "org.javassist" % "javassist" % "3.27.0-GA", + "net.bytebuddy" % "byte-buddy" % "1.10.20", + "net.bytebuddy" % "byte-buddy-agent" % "1.10.20" + ), + incOptions ~= { old => + old.withEnabled(false) + }, + crossPaths := false, + Compile / packageBin / packageOptions += + Package.ManifestAttributes( + "Agent-Class" -> "com.sourcegraph.semanticdb_javac.SemanticdbAgent", + "Can-Redefine-Classes" -> "true", + "Can-Retransform-Classes" -> "true", + "Premain-Class" -> "com.sourcegraph.semanticdb_javac.SemanticdbAgent" + ) + ) lazy val plugin = project .in(file("semanticdb-javac")) .settings( moduleName := "semanticdb-javac", + javaToolchainVersion := "1.8", autoScalaLibrary := false, incOptions ~= { old => old.withEnabled(false) }, + fatjarPackageSettings, crossPaths := false, PB.targets.in(Compile) := Seq(PB.gens.java -> (Compile / sourceManaged).value) ) -lazy val minimized = project - .in(file("tests/minimized")) +lazy val cli = project + .in(file("cli")) .settings( - autoScalaLibrary := false, - skip.in(publish) := true, - javacOptions.in(Compile) ++= - List[String]( - s"-Arandomtimestamp=${System.nanoTime()}", - List( - s"-Xplugin:semanticdb", - s"-text:on", - s"-verbose", - s"-sourceroot:${baseDirectory.in(ThisBuild).value}", - s"-targetroot:${semanticdbTargetRoot.in(Compile).value}" - ).mkString(" ") - ) + moduleName := "lsif-java", + mainClass.in(Compile) := Some("com.sourcegraph.lsif_java.LsifJava"), + buildInfoKeys := + Seq[BuildInfoKey]( + version, + scalaVersion, + "bloopVersion" -> V.bloop, + "bspVersion" -> V.bsp + ), + buildInfoPackage := "com.sourcegraph.lsif_java", + libraryDependencies ++= List("org.scalameta" %% "moped" % V.moped), + resourceGenerators.in(Compile) += + Def + .task[Seq[File]] { + val outs = ListBuffer.empty[(File, File)] + val out = resourceManaged.in(Compile).value.toPath + IO.delete(out.toFile) + def addJar(jar: File, filename: String): Unit = { + outs += jar -> out.resolve(filename).toFile + } + + addJar( + Keys.`package`.in(plugin, Compile).value, + "semanticdb-plugin.jar" + ) + addJar( + Keys.`package`.in(agent, Compile).value, + "semanticdb-agent.jar" + ) + + IO.copy(outs) + val props = new Properties() + val propsFile = out.resolve("lsif-java.properties").toFile + val copiedJars = outs.collect { case (_, out) => + out + } + val names = copiedJars.map(_.getName).mkString(";") + props.put("jarNames", names) + IO.write(props, "lsif-java", propsFile) + + propsFile :: copiedJars.toList + } + .taskValue, + nativeImageOptions ++= List("-H:IncludeResources=^semanticdb-.*jar$"), + nativeImageOutput := target.in(NativeImage).value / "lsif-java" ) - .dependsOn(plugin) + .enablePlugins(NativeImagePlugin, BuildInfoPlugin) + +def minimizedSourceDirectory = + file("tests/minimized/src/main/java").getAbsoluteFile +lazy val minimizedSettings = List[Def.Setting[_]]( + autoScalaLibrary := false, + skip.in(publish) := true, + fork.in(run) := true, + unmanagedSourceDirectories.in(Compile) += minimizedSourceDirectory, + javacOptions.in(Compile) ++= + List[String]( + s"-Arandomtimestamp=${System.nanoTime()}", + List( + s"-Xplugin:semanticdb", + s"-text:on", + s"-verbose", + s"-sourceroot:${baseDirectory.in(ThisBuild).value}", + s"-targetroot:${semanticdbTargetRoot.in(Compile).value}" + ).mkString(" ") + ) +) + +lazy val minimized = project + .in(file("tests/minimized/.j11")) + .settings(minimizedSettings) + .dependsOn(agent, plugin) + +lazy val minimized8 = project + .in(file("tests/minimized/.j8")) + .settings(minimizedSettings, javaToolchainVersion := "8") + .dependsOn(agent, plugin) + +lazy val minimized15 = project + .in(file("tests/minimized/.j15")) + .settings(minimizedSettings, javaToolchainVersion := "15") + .dependsOn(agent, plugin) lazy val minimizedScala = project .in(file("tests/minimized-scala")) @@ -111,9 +204,9 @@ lazy val unit = project Seq[BuildInfoKey]( version, scalaVersion, + "temporaryDirectory" -> target.value / "tmpdir", "sourceroot" -> baseDirectory.in(ThisBuild).value, - "minimizedJavaSourceDirectory" -> - sourceDirectory.in(minimized, Compile).value / "java", + "minimizedJavaSourceDirectory" -> minimizedSourceDirectory, "minimizedJavaTargetroot" -> semanticdbTargetRoot.in(minimized, Compile).value, "minimizedScalaSourceDirectory" -> @@ -123,9 +216,23 @@ lazy val unit = project ), buildInfoPackage := "tests" ) - .dependsOn(plugin) + .dependsOn(plugin, cli) .enablePlugins(BuildInfoPlugin) +lazy val buildTools = project + .in(file("tests/buildTools")) + .settings( + testSettings, + javaOptions.in(Test) ++= + List( + s"-javaagent:${Keys.`package`.in(agent, Compile).value}", + s"-Dsemanticdb.pluginpath=${Keys.`package`.in(plugin, Compile).value}", + s"-Dsemanticdb.sourceroot=${baseDirectory.in(ThisBuild).value}", + s"-Dsemanticdb.targetroot=${target.in(agent, Compile).value / "semanticdb-targetroot"}" + ) + ) + .dependsOn(agent, unit) + lazy val snapshots = project .in(file("tests/snapshots")) .settings( @@ -148,3 +255,41 @@ lazy val bench = project ) .dependsOn(unit) .enablePlugins(JmhPlugin) + +lazy val testSettings = List( + skip.in(publish) := true, + autoScalaLibrary := true, + testFrameworks := List(new TestFramework("munit.Framework")), + libraryDependencies ++= + List( + "org.scalameta" %% "munit" % "0.7.10", + "org.scalameta" %% "moped-testkit" % V.moped, + "org.scalameta" %% "scalameta" % V.scalameta, + "org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.0", + "io.get-coursier" %% "coursier" % V.coursier, + "com.lihaoyi" %% "pprint" % "0.6.1" + ) +) + +lazy val fatjarPackageSettings = List[Def.Setting[_]]( + assemblyMergeStrategy in assembly := { + case PathList("javax", _ @_*) => + MergeStrategy.discard + case PathList("com", "sun", _ @_*) => + MergeStrategy.discard + case PathList("sun", _ @_*) => + MergeStrategy.discard + case PathList("META-INF", "versions", "9", "module-info.class") => + MergeStrategy.first + case x => + val oldStrategy = (assemblyMergeStrategy in assembly).value + oldStrategy(x) + }, + Keys.`package`.in(Compile) := { + val slimJar = Keys.`package`.in(Compile).value + val fatJar = crossTarget.value / assemblyJarName.in(assembly).value + val _ = assembly.value + IO.copyFile(fatJar, slimJar, CopyOptions().withOverwrite(true)) + slimJar + } +) diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/AbsolutePath.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/AbsolutePath.scala new file mode 100644 index 00000000..7bbfbd19 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/AbsolutePath.scala @@ -0,0 +1,16 @@ +package com.sourcegraph.lsif_java + +import java.nio.file.Path +import java.nio.file.Paths + +object AbsolutePath { + def systemWorkingDirectory: Path = Paths.get(".").toAbsolutePath.normalize() + def of(path: Path): Path = of(path, systemWorkingDirectory) + def of(path: Path, cwd: Path): Path = + if (path.isAbsolute) + path + else if (cwd.isAbsolute) + cwd.resolve(path) + else + systemWorkingDirectory.resolve(cwd).resolve(path) +} diff --git a/tests/unit/src/main/scala/tests/DeleteVisitor.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/DeleteVisitor.scala similarity index 96% rename from tests/unit/src/main/scala/tests/DeleteVisitor.scala rename to cli/src/main/scala/com/sourcegraph/lsif_java/DeleteVisitor.scala index 5cd52341..22ea0358 100644 --- a/tests/unit/src/main/scala/tests/DeleteVisitor.scala +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/DeleteVisitor.scala @@ -1,4 +1,4 @@ -package tests +package com.sourcegraph.lsif_java import java.io.IOException import java.nio.file.FileVisitResult diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/Embedded.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/Embedded.scala new file mode 100644 index 00000000..50559448 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/Embedded.scala @@ -0,0 +1,60 @@ +package com.sourcegraph.lsif_java +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.StandardCopyOption + +object Embedded { + + def semanticdbJar(tmpDir: Path): Path = + copyFile(tmpDir, "semanticdb-plugin.jar") + + def agentJar(tmpDir: Path): Path = copyFile(tmpDir, "semanticdb-agent.jar") + + def customJavac(sourceroot: Path, targetroot: Path, tmp: Path): Path = { + val javac = tmp.resolve("javac") + val pluginpath = Embedded.semanticdbJar(tmp) + val oldArguments = tmp.resolve("javac_oldarguments") + val newArguments = tmp.resolve("javac_newarguments") + val launcherArgs = tmp.resolve("javac_launcherarguments") + val injectSemanticdbArguments = List[String]( + "java", + s"-Dsemanticdb.pluginpath=$pluginpath", + s"-Dsemanticdb.sourceroot=$sourceroot", + s"-Dsemanticdb.targetroot=$targetroot", + s"-Dsemanticdb.output=$newArguments", + s"-Dsemanticdb.old-output=$oldArguments", + s"-classpath $pluginpath", + "com.sourcegraph.semanticdb_javac.InjectSemanticdbOptions", + """"$@"""" + ).mkString(" ") + val script = + s"""#!/usr/bin/env bash + |set -eu + |LAUNCHER_ARGS=() + |echo $$@ >> $launcherArgs + |for arg in "$$@"; do + | if [[ $$arg == -J* ]]; then + | LAUNCHER_ARGS+=("$$arg") + | fi + |done + |$injectSemanticdbArguments + |if [ $${#LAUNCHER_ARGS[@]} -eq 0 ]; then + | javac "@$newArguments" + |else + | javac "@$newArguments" "$${LAUNCHER_ARGS[@]}" + |fi + |""".stripMargin + Files.write(javac, script.getBytes(StandardCharsets.UTF_8)) + javac.toFile.setExecutable(true) + javac + } + + private def copyFile(tmpDir: Path, filename: String): Path = { + val in = this.getClass.getResourceAsStream(s"/$filename") + val out = tmpDir.resolve(filename) + try Files.copy(in, out, StandardCopyOption.REPLACE_EXISTING) + finally in.close() + out + } +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/IndexCommand.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/IndexCommand.scala new file mode 100644 index 00000000..cbc7d7ff --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/IndexCommand.scala @@ -0,0 +1,164 @@ +package com.sourcegraph.lsif_java + +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths + +import com.sourcegraph.lsif_java.buildtools.BuildTool +import moped.annotations.Description +import moped.annotations.ExampleValue +import moped.annotations.Inline +import moped.annotations.TrailingArguments +import moped.cli.Application +import moped.cli.Command +import moped.cli.CommandParser +import moped.internal.reporters.Levenshtein +import os.CommandResult +import os.Inherit +import os.Shellable + +@Description( + "Generates an LSIF index for the Java build of a provided workspace directory." +) +case class IndexCommand( + @Description("The path where to generate the LSIF index.") output: Path = + Paths.get("dump.lsif"), + @Description( + "The directory where to generate SemanticDB files. " + + "Defaults to a build-specific path. " + + "For example, the default value for Gradle is 'build/semanticdb-targetroot' and for Maven it's 'target/semanticdb-targetroot'" + ) targetroot: Option[Path] = None, + @Description( + "Whether to enable the -verbose flag in the SemanticDB compiler plugin." + ) verbose: Boolean = false, + @Description( + "Whether to enable the -text:on flag in the SemanticDB compiler plugin." + ) text: Boolean = false, + @Description( + "Explicitly specify which build tool to use. " + + "By default, the build tool is automatically detected. " + + "Use this flag if the automatic build tool detection is not working correctly." + ) + @ExampleValue("Gradle") buildTool: Option[String] = None, + @Description( + "Whether to enable remove generated temporary files on exit." + ) cleanup: Boolean = true, + @Description( + "The build command to use to compile all sources. " + + "Defaults to a build-specific command. For example, the default command for Maven command is 'clean verify -DskipTests'." + + "To override the default, pass in the build command after a double dash: 'lsif-java -- compile'" + ) + @TrailingArguments() buildCommand: List[String] = Nil, + @Inline + app: Application = Application.default +) extends Command { + + def process(shellable: String*): CommandResult = { + app.info(shellable.mkString(" ")) + app + .process(Shellable(shellable)) + .call( + check = false, + stdout = Inherit, + stderr = Inherit, + cwd = workingDirectory + ) + } + + def textFlag: String = + if (text) + "-text:on" + else + "" + def verboseFlag: String = + if (verbose) + "-verbose:on" + else + "" + + def workingDirectory: Path = AbsolutePath.of(app.env.workingDirectory) + def finalTargetroot(default: Path): Path = + AbsolutePath.of(targetroot.getOrElse(default), workingDirectory) + def finalBuildCommand(default: List[String]): List[String] = + if (buildCommand.isEmpty) + default + else + buildCommand + + override def run(): Int = { + val allBuildTools = BuildTool.all(this) + val usedBuildTools = allBuildTools.filter(_.usedInCurrentDirectory()) + val matchingBuildTools = usedBuildTools.filter(tool => + buildTool match { + case Some(explicitName) => + tool.name.compareToIgnoreCase(explicitName) == 0 + case None => + true + } + ) + + matchingBuildTools match { + case Nil => + buildTool match { + case Some(explicit) if usedBuildTools.nonEmpty => + val toFix = + Levenshtein + .closestCandidate(explicit, usedBuildTools.map(_.name)) match { + case Some(closest) => + s"Did you mean --build-tool=$closest?" + case None => + "To fix this problem, run again with the --build-tool flag set to one of the detected build tools." + } + val autoDetected = usedBuildTools.map(_.name).mkString(", ") + app.error( + s"Automatically detected the build tool(s) $autoDetected but none of them match the explicitly provided flag '--build-tool=$explicit'. " + + toFix + ) + case _ => + if (Files.isDirectory(workingDirectory)) { + val buildToolNames = allBuildTools.map(_.name).mkString(", ") + app.error( + s"No build tool detected in workspace '$workingDirectory'. " + + s"At the moment, the only supported build tools are: $buildToolNames." + ) + } else { + val cause = + if (Files.exists(workingDirectory)) { + s"Workspace '$workingDirectory' is not a directory" + } else { + s"The directory '$workingDirectory' does not exist" + } + app.error( + cause + + s". To fix this problem, make sure the working directory is an actual directory." + ) + } + } + 1 + case tool :: Nil => + val generateSemanticdbResult = tool.generateSemanticdb() + if (!Files.isDirectory(tool.targetroot)) { + generateSemanticdbResult.exitCode + } else { + val generateLsifResult = process( + "lsif-semanticdb", + s"--semanticdbDir=${tool.targetroot}" + ) + generateSemanticdbResult.exitCode + generateLsifResult.exitCode + } + case many => + val names = many.map(_.name).mkString(", ") + app.error( + s"Multiple build tools detected: $names. " + + s"To fix this problem, use the '--build-tools=BUILD_TOOL_NAME' flag to specify which build tool to run." + ) + 1 + } + } +} + +object IndexCommand { + val default: IndexCommand = IndexCommand() + implicit val parser: CommandParser[IndexCommand] = CommandParser + .derive(default) +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/LsifJava.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/LsifJava.scala new file mode 100644 index 00000000..c9d6e9cc --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/LsifJava.scala @@ -0,0 +1,23 @@ +package com.sourcegraph.lsif_java + +import moped.cli.Application +import moped.cli.CommandParser +import moped.commands.HelpCommand +import moped.commands.VersionCommand + +object LsifJava { + val app: Application = Application + .fromName( + binaryName = "lsif-java", + BuildInfo.version, + List( + CommandParser[HelpCommand], + CommandParser[VersionCommand], + CommandParser[IndexCommand] + ) + ) + .withIsSingleCommand(true) + def main(args: Array[String]): Unit = { + app.runAndExitIfNonZero(args.toList) + } +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/BuildTool.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/BuildTool.scala new file mode 100644 index 00000000..f4b11f39 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/BuildTool.scala @@ -0,0 +1,28 @@ +package com.sourcegraph.lsif_java.buildtools + +import java.nio.file.Path + +import com.sourcegraph.lsif_java.AbsolutePath +import com.sourcegraph.lsif_java.IndexCommand + +/** + * A build tool such as Gradle, Maven or Bazel. + */ +abstract class BuildTool(val name: String, index: IndexCommand) { + + protected def defaultTargetroot: Path + + final def targetroot: Path = + AbsolutePath + .of(index.targetroot.getOrElse(defaultTargetroot), index.workingDirectory) + + def usedInCurrentDirectory(): Boolean + + def generateSemanticdb(): os.CommandResult + +} + +object BuildTool { + def all(index: IndexCommand): List[BuildTool] = + List(new GradleBuildTool(index), new MavenBuildTool(index)) +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleBuildTool.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleBuildTool.scala new file mode 100644 index 00000000..836adc05 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleBuildTool.scala @@ -0,0 +1,103 @@ +package com.sourcegraph.lsif_java.buildtools + +import java.nio.charset.StandardCharsets +import java.nio.file._ + +import scala.collection.mutable.ListBuffer +import scala.util.Properties + +import com.sourcegraph.lsif_java.IndexCommand +import os.CommandResult + +class GradleBuildTool(index: IndexCommand) extends BuildTool("Gradle", index) { + + override def defaultTargetroot: Path = + Paths.get("build", "semanticdb-targetroot") + + override def usedInCurrentDirectory(): Boolean = { + Files.isRegularFile(index.workingDirectory.resolve("settings.gradle")) || + Files.isRegularFile(index.workingDirectory.resolve("gradlew")) || + Files.isRegularFile(index.workingDirectory.resolve("build.gradle")) || + Files.isRegularFile(index.workingDirectory.resolve("build.gradle.kts")) + } + + override def generateSemanticdb(): CommandResult = { + val gradleWrapper: Path = index + .workingDirectory + .resolve( + if (Properties.isWin) + "gradlew.bat" + else + "gradlew" + ) + val gradleCommand: String = + if (Files.isRegularFile(gradleWrapper)) + gradleWrapper.toString + else + "gradle" + + TemporaryFiles.withDirectory(index.cleanup) { tmp => + val toolchains = GradleJavaToolchains + .fromWorkspace(this, index, gradleCommand, tmp) + val script = initScript(toolchains, tmp).toString + + val buildCommand = ListBuffer.empty[String] + buildCommand ++= + List( + gradleCommand, + "--init-script", + script, + "-Porg.gradle.java.installations.auto-detect=false", + "-Porg.gradle.java.installations.auto-download=false", + s"-Porg.gradle.java.installations.paths=${toolchains.paths()}", + s"--no-daemon" + ) + buildCommand ++= index.finalBuildCommand(List("clean", "compileTestJava")) + + val result = index.process(buildCommand.toList: _*) + printDebugLogs(tmp) + result + } + } + + private def printDebugLogs(tmp: Path): Unit = { + val path = GradleJavaCompiler.debugPath(tmp) + if (index.verbose && Files.isRegularFile(path)) { + Files + .readAllLines(path) + .forEach { line => + index.app.info(line) + } + } + } + + private def initScript(toolchains: GradleJavaToolchains, tmp: Path): Path = { + val executable = + toolchains.executableJavacPath() match { + case Some(path) => + s"options.forkOptions.executable = '$path'" + case None => + "" + } + val script = + s"""|allprojects { + | gradle.projectsEvaluated { + | boolean isJavaEnabled = project.plugins.any { + | it.getClass().getName().endsWith("org.gradle.api.plugins.JavaPlugin") + | } + | if (!isJavaEnabled) return + | tasks.withType(JavaCompile) { + | options.fork = true + | options.incremental = false + | $executable + | } + | } + |} + """.stripMargin + Files.write( + tmp.resolve("init-script.gradle"), + script.getBytes(StandardCharsets.UTF_8) + ) + } + +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaCompiler.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaCompiler.scala new file mode 100644 index 00000000..b0a703b9 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaCompiler.scala @@ -0,0 +1,112 @@ +package com.sourcegraph.lsif_java.buildtools + +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths +import java.nio.file.StandardCopyOption + +import scala.collection.mutable.ListBuffer + +import com.sourcegraph.lsif_java.Embedded +import com.sourcegraph.lsif_java.IndexCommand + +/** + * Metadata about the Java compiler that is used by a Gradle build. + * + * @see + * https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JavaCompiler.html + */ +case class GradleJavaCompiler(languageVersion: String, javacPath: Path) { + + def createForwardingToolchain( + index: IndexCommand, + tmp: Path, + targetroot: Path, + pluginPath: Path + ): Path = { + val home = tmp.resolve(s"1.$languageVersion") + val javac = Embedded.customJavac(index.workingDirectory, targetroot, tmp) + val agent = Embedded.agentJar(tmp) + val debugPath = GradleJavaCompiler.debugPath(tmp) + + createBinaries(home, javac, agent, index, targetroot, pluginPath, debugPath) + createBinaries( + home.resolve("Contents").resolve("Home"), + javac, + agent, + index, + targetroot, + pluginPath, + debugPath + ) // for macOS + home + } + + private def createBinaries( + dir: Path, + javac: Path, + agent: Path, + index: IndexCommand, + targetroot: Path, + pluginPath: Path, + debugPath: Path + ): Unit = { + Files.createDirectories(dir.resolve("bin")) + val javaBinary = javacPath.resolveSibling("java") + val javaCommand = ListBuffer[String]( + javaBinary.toString, + s"-javaagent:$agent", + s"-Dsemanticdb.pluginpath=${pluginPath}", + s"-Dsemanticdb.targetroot=${targetroot}", + s"-Dsemanticdb.sourceroot=${index.workingDirectory}" + ) + if (index.verbose) { + javaCommand += s"-Dsemanticdb.debugpath=${debugPath}" + } + javaCommand += """"$@"""" + Files + .write( + dir.resolve("bin").resolve("java"), + s"""#!/usr/bin/env bash + |set -eu + |echo $$@ >> ${dir.resolve("java_arguments")} + |${javaCommand.mkString(" ")} + |""".stripMargin.getBytes(StandardCharsets.UTF_8) + ) + .toFile + .setExecutable(true) + Files + .copy( + javac, + dir.resolve("bin").resolve("javac"), + StandardCopyOption.REPLACE_EXISTING + ) + .toFile + .setExecutable(true) + } +} +object GradleJavaCompiler { + + /** + * Path to a file that is used to log debugging information from the + * SemanticDB Java Agent. + */ + def debugPath(tmp: Path): Path = tmp.resolve("debugpath.txt") + + /** + * Parses a single space-separated line into a GradleJavaCompiler instance. + * + * Example input: "8 /path/javac" + * + * Example output: `Some(GradleJavaCompiler("8", * /path/javac))` + */ + def fromLine(line: String): Option[GradleJavaCompiler] = + line.split(' ') match { + case Array(version, path) => + Some(GradleJavaCompiler(version, Paths.get(path))) + case _ => + None + } + +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaToolchains.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaToolchains.scala new file mode 100644 index 00000000..e0f46584 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaToolchains.scala @@ -0,0 +1,96 @@ +package com.sourcegraph.lsif_java.buildtools + +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Path + +import scala.jdk.CollectionConverters._ + +import com.sourcegraph.lsif_java.Embedded +import com.sourcegraph.lsif_java.IndexCommand + +case class GradleJavaToolchains( + toolchains: List[GradleJavaCompiler], + tool: GradleBuildTool, + index: IndexCommand, + tmp: Path +) { + + def isEmpty: Boolean = toolchains.isEmpty + + def executableJavacPath(): Option[Path] = { + if (toolchains.isEmpty) { + Some(Embedded.customJavac(index.workingDirectory, tool.targetroot, tmp)) + } else { + None + } + } + + def paths(): String = { + val processorPath = Embedded.semanticdbJar(tmp) + toolchains + .map( + _.createForwardingToolchain(index, tmp, tool.targetroot, processorPath) + ) + .mkString(",") + } + +} + +object GradleJavaToolchains { + + /** + * Extracts the "Java toolchains" that are used in this Gradle workspace. + * + * @see + * https://docs.gradle.org/6.7/userguide/toolchains.html + */ + def fromWorkspace( + tool: GradleBuildTool, + index: IndexCommand, + gradleCommand: String, + tmp: Path + ): GradleJavaToolchains = { + val scriptPath = tmp.resolve("java-toolchains.gradle") + val toolchainsPath = tmp.resolve("java-toolchains.txt") + val taskName = "lsifDetectJavaToolchains" + val script = + s"""|allprojects { + | task $taskName { + | def out = java.nio.file.Paths.get('$toolchainsPath') + | doLast { + | tasks.withType(JavaCompile) { + | try { + | def lines = new ArrayList() + | def path = javaCompiler.get().getExecutablePath() + | def version = javaCompiler.get().getMetadata().getLanguageVersion().asInt() + | def line = "$$version $$path" + | java.nio.file.Files.write( + | out, + | [line], + | java.nio.file.StandardOpenOption.APPEND, + | java.nio.file.StandardOpenOption.CREATE) + | } catch (Exception e) { + | // Ignore errors. + | } + | } + | } + | } + |} + |""".stripMargin + Files.write(scriptPath, script.getBytes(StandardCharsets.UTF_8)) + index.process(gradleCommand, "--init-script", scriptPath.toString, taskName) + val toolchains: List[GradleJavaCompiler] = + if (Files.isRegularFile(toolchainsPath)) { + Files + .readAllLines(toolchainsPath) + .asScala + .flatMap(GradleJavaCompiler.fromLine) + .toList + .distinct + } else { + Nil + } + GradleJavaToolchains(toolchains, tool, index, tmp) + } +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/MavenBuildTool.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/MavenBuildTool.scala new file mode 100644 index 00000000..ae028d22 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/MavenBuildTool.scala @@ -0,0 +1,59 @@ +package com.sourcegraph.lsif_java.buildtools + +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths + +import scala.collection.mutable.ListBuffer + +import com.sourcegraph.lsif_java.Embedded +import com.sourcegraph.lsif_java.IndexCommand +import os.CommandResult + +class MavenBuildTool(index: IndexCommand) extends BuildTool("Maven", index) { + override def defaultTargetroot: Path = + Paths.get("target", "semanticdb-targetroot") + override def usedInCurrentDirectory(): Boolean = + Files.isRegularFile(index.workingDirectory.resolve("pom.xml")) + + override def generateSemanticdb(): CommandResult = { + TemporaryFiles.withDirectory(index.cleanup) { tmp => + val mvnw = index.workingDirectory.resolve("mvnw") + val mavenScript = + if (Files.isRegularFile(mvnw)) + mvnw.toString + else { + "mvn" + } + val buildCommand = ListBuffer.empty[String] + val executable = Embedded.customJavac( + index.workingDirectory, + index.finalTargetroot(defaultTargetroot), + tmp + ) + buildCommand ++= + List( + mavenScript, + s"-Dmaven.compiler.useIncrementalCompilation=false", + // NOTE(olafur) the square/javapoet repo sets compilerId to 'javac-with-javac', which appears to + // override the '-Dmaven.compiler.executable' setting.. Forcing the compilerId to 'javac' fixes the + // issue for this repo. + s"-Dmaven.compiler.compilerId=javac", + s"-Dmaven.compiler.executable=$executable", + s"-Dmaven.compiler.fork=true" + ) + buildCommand ++= + index.finalBuildCommand( + List( + s"clean", + // Default to the "verify" command, as recommended by the official docs + // https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#usual-command-line-calls + "verify", + "-DskipTests" + ) + ) + + index.process(buildCommand.toList: _*) + } + } +} diff --git a/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/TemporaryFiles.scala b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/TemporaryFiles.scala new file mode 100644 index 00000000..55292678 --- /dev/null +++ b/cli/src/main/scala/com/sourcegraph/lsif_java/buildtools/TemporaryFiles.scala @@ -0,0 +1,18 @@ +package com.sourcegraph.lsif_java.buildtools + +import java.nio.file.Files +import java.nio.file.Path + +import com.sourcegraph.lsif_java.DeleteVisitor + +object TemporaryFiles { + def withDirectory[T](cleanup: Boolean)(fn: Path => T): T = { + val tmp = Files.createTempDirectory("lsif-java") + try fn(tmp) + finally { + if (cleanup) { + Files.walkFileTree(tmp, new DeleteVisitor()) + } + } + } +} diff --git a/project/JavaToolchainPlugin.scala b/project/JavaToolchainPlugin.scala new file mode 100644 index 00000000..02b4b73a --- /dev/null +++ b/project/JavaToolchainPlugin.scala @@ -0,0 +1,83 @@ +import sbt.{Compile, Def, File, _} +import sbt.Keys._ +import sbt.plugins.JvmPlugin + +import java.nio.file.Paths +import java.util +import java.util.Collections +import scala.util.Properties +import scala.sys.process.Process + +/** + * An sbt plugin that automatically adds the Java compiler to the boot classpath + * when necessary. + */ +object JavaToolchainPlugin extends AutoPlugin { + override def trigger = allRequirements + override def requires = JvmPlugin + + object autoImport { + lazy val javaToolchainVersion = settingKey[String]( + "The version of the Java" + ) + } + import autoImport._ + + lazy val configSettings = List( + javacOptions ++= + List( + "-target", + "1.8", + "-source", + "1.8", + "-bootclasspath", + java8Bootclasspath() + ), + javacOptions.in(doc) --= List("-target", "1.8"), + javacOptions.in(doc) --= bootclasspathSettings(javaToolchainVersion.value), + javaHome := Some(getJavaHome(javaToolchainVersion.value)), + javacOptions ++= bootclasspathSettings(javaToolchainVersion.value), + javaOptions ++= bootclasspathSettings(javaToolchainVersion.value) + ) + + override lazy val projectSettings: Seq[Def.Setting[_]] = + List(Compile, Test).flatMap(c => inConfig(c)(configSettings)) ++ + List(fork := true, javaToolchainVersion := "11") + + /** + * For Java 8, we need to manually add the Java compiler to the boot + * classpath. + * + * Newer Java versions include the compiler by default. + */ + private def bootclasspathSettings(version: String): List[String] = { + val home = getJavaHome(version) + val toolsJar: File = home / "lib" / "tools.jar" + // The tools.jar file includes the bytecode for the Java compiler in the com.sun.source package. + // The Java compiler is available by default in Java 9+, so we only need to add tools.jar to the + // bootclasspath for Java 8. + if (home.toString.contains("1.8") && toolsJar.isFile) { + List(s"-Xbootclasspath/p:$toolsJar") + } else { + List() + } + } + + private def java8Bootclasspath(): String = { + (getJavaHome("8") / "jre" / "lib" / "rt.jar").toString + } + + private val javaHomeCache: util.Map[String, File] = Collections + .synchronizedMap(new util.HashMap[String, File]()) + private def getJavaHome(version: String): File = { + javaHomeCache.computeIfAbsent( + version, + (v: String) => { + val coursier = Paths.get("bin", "coursier") + new File( + Process(List(coursier.toString, "java-home", "--jvm", v)).!!.trim + ) + } + ) + } +} diff --git a/project/JavacBootClasspathPlugin.scala b/project/JavacBootClasspathPlugin.scala deleted file mode 100644 index 717f1343..00000000 --- a/project/JavacBootClasspathPlugin.scala +++ /dev/null @@ -1,55 +0,0 @@ -import sbt.{Compile, Def, File, _} -import sbt.Keys._ -import sbt.plugins.JvmPlugin - -import scala.util.Properties - -/** - * An sbt plugin that automatically adds the Java compiler to the boot classpath - * when necessary. - */ -object JavacBootClasspathPlugin extends AutoPlugin { - override def trigger = allRequirements - override def requires = JvmPlugin - - lazy val configSettings = List( - javacOptions ++= List("-target", "1.8", "-source", "1.8"), - javacOptions.in(doc) --= List("-target", "1.8"), - javacOptions.in(doc) --= bootclasspathSettings, - javaHome := Some(javaHomeDirectory), - javacOptions ++= bootclasspathSettings, - javaOptions ++= bootclasspathSettings - ) - - override lazy val projectSettings: Seq[Def.Setting[_]] = - List(Compile, Test).flatMap(c => inConfig(c)(configSettings)) ++ - List(fork := true) - - /** - * Returns the local path to tools.jar, which contains the Java compiler - * implementation. - */ - private def toolsJar: File = javaHomeDirectory / "lib" / "tools.jar" - private def javaHomeDirectory: File = { - val home = file(System.getProperty("java.home")) - if (Properties.isJavaAtLeast("8") && !Properties.isJavaAtLeast("11")) - home.getParentFile - else - home - } - - private def bootclasspathSettings: List[String] = { - // The tools.jar file includes the bytecode for the Java compiler in the com.sun.source package. - // The Java compiler is available by default in Java 9+, so we only need to add tools.jar to the - // bootclasspath for Java 8. - if ( - !Properties.isJavaAtLeast("9") && Properties.isJavaAtLeast("8") && - toolsJar.isFile - ) { - List(s"-Xbootclasspath/p:$toolsJar") - } else { - List() - } - - } -} diff --git a/project/plugins.sbt b/project/plugins.sbt index 872beb38..ef3b25f0 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,4 @@ +addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.3.0") addSbtPlugin("com.geirsson" % "sbt-ci-release" % "1.5.5") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.3.4") @@ -7,6 +8,7 @@ addSbtPlugin("ch.epfl.scala" % "sbt-bloop" % "1.4.6-21-464e4ec4") addSbtPlugin("com.sourcegraph" % "sbt-sourcegraph" % "0.1.8") addSbtPlugin("com.lightbend.sbt" % "sbt-java-formatter" % "0.6.0") addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.0") +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.15.0") // sbt-jdi-tools appears to fix an error related to this message: // [error] (plugin / Compile / compileIncremental) java.lang.NoClassDefFoundError: com/sun/tools/javac/code/Symbol diff --git a/sbt b/sbt index 359e795f..0009c6e3 100755 --- a/sbt +++ b/sbt @@ -1,3 +1,3 @@ #!/usr/bin/env bash set -eu -./bin/coursier launch --jvm 8 sbt +./bin/coursier launch --jvm 11 sbt diff --git a/semanticdb-agent/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbAgent.java b/semanticdb-agent/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbAgent.java new file mode 100644 index 00000000..42c2ad23 --- /dev/null +++ b/semanticdb-agent/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbAgent.java @@ -0,0 +1,99 @@ +package com.sourcegraph.semanticdb_javac; + +import net.bytebuddy.agent.builder.AgentBuilder; +import net.bytebuddy.asm.Advice; + +import java.io.File; +import java.io.IOException; +import java.io.PrintStream; +import java.lang.instrument.Instrumentation; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; + +import static net.bytebuddy.implementation.bytecode.assign.Assigner.Typing.DYNAMIC; +import static net.bytebuddy.matcher.ElementMatchers.named; + +/** Java agent that injects SemanticDB into the Java compilation process. */ +public class SemanticdbAgent { + + public static void premain(String agentArgs, Instrumentation inst) { + new AgentBuilder.Default() + .type( + named("org.gradle.api.internal.tasks.compile.JavaCompilerArgumentsBuilder") + .or(named("tests.GradleOptionsBuilder"))) + .transform( + new AgentBuilder.Transformer.ForAdvice() + .advice(named("build"), GradleAdvice.class.getName())) + .installOn(inst); + } + + @SuppressWarnings("all") + public static class GradleAdvice { + + /** + * The bytecode of this method gets injected at the end of the following method in Gradle: + * + *

https://github.com/gradle/gradle/blob/2389365c6e0f29cb84b4727a793fe7a7008c9fc7/subprojects/language-java/src/main/java/org/gradle/api/internal/tasks/compile/JavaCompilerArgumentsBuilder.java#L78 + * + * @param arguments The Java compiler that Gradle intends to use. This method updates the + * options to include "-Xplugin:semanticdb". + */ + @Advice.OnMethodExit + public static void build( + @Advice.Return(readOnly = false, typing = DYNAMIC) List arguments) { + + String PLUGINPATH = System.getProperty("semanticdb.pluginpath"); + if (PLUGINPATH == null) throw new NoSuchElementException("-Dsemanticdb.pluginpath"); + String SOURCEROOT = System.getProperty("semanticdb.sourceroot"); + if (SOURCEROOT == null) throw new NoSuchElementException("-Dsemanticdb.sourceroot"); + String TARGETROOT = System.getProperty("semanticdb.targetroot"); + if (TARGETROOT == null) throw new NoSuchElementException("-Dsemanticdb.targetroot"); + + boolean isProcessorpathUpdated = false; + String previousOption = ""; + + ArrayList newOptions = new ArrayList<>(); + for (String option : arguments) { + switch (previousOption) { + case "-processorpath": + case "-processor-path": + case "-classpath": + case "-class-path": + isProcessorpathUpdated = true; + newOptions.add(PLUGINPATH + File.pathSeparator + option); + break; + default: + newOptions.add(option); + break; + } + previousOption = option; + } + if (!isProcessorpathUpdated) { + newOptions.add("-classpath"); + newOptions.add(PLUGINPATH); + } + newOptions.add( + String.format( + "-Xplugin:semanticdb -sourceroot:%s -targetroot:%s", SOURCEROOT, TARGETROOT)); + + String debugPath = System.getProperty("semanticdb.debugpath"); + if (debugPath != null) { + try (PrintStream fos = + new PrintStream( + Files.newOutputStream( + Paths.get(debugPath), StandardOpenOption.APPEND, StandardOpenOption.CREATE))) { + fos.println("Java Home: " + System.getProperty("java.home")); + fos.println("Old Options: " + arguments); + fos.println("New Options: " + newOptions); + } catch (IOException e) { + } + } + + arguments = newOptions; + } + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/GlobalSymbolsCache.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/GlobalSymbolsCache.java index 2b97c9df..a0dda438 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/GlobalSymbolsCache.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/GlobalSymbolsCache.java @@ -39,13 +39,12 @@ private String uncachedSemanticdbSymbol(Symbol sym, LocalSymbolsCache locals) { String owner = semanticdbSymbol(sym.owner, locals); if (owner.equals(SemanticdbSymbols.NONE)) { return SemanticdbSymbols.ROOT_PACKAGE; - } else if (sym instanceof Symbol.VarSymbol && sym.isLocal()) { + } else if (SemanticdbSymbols.isLocal(owner) || isAnonymousClass(sym) || isLocalVariable(sym)) { return locals.put(sym); } SemanticdbSymbols.Descriptor desc = semanticdbDescriptor(sym); if (options.verboseEnabled && desc.kind == SemanticdbSymbols.Descriptor.Kind.None) { - pprint(sym.name.toString()); - pprint(sym.kind); + pprint(sym.getQualifiedName().toString()); pprint( String.format( "sym: %s (%s - superclass %s)", sym, sym.getClass(), sym.getClass().getSuperclass())); @@ -53,6 +52,14 @@ private String uncachedSemanticdbSymbol(Symbol sym, LocalSymbolsCache locals) { return SemanticdbSymbols.global(owner, desc); } + private boolean isLocalVariable(Symbol sym) { + return sym instanceof Symbol.VarSymbol && sym.isLocal(); + } + + private boolean isAnonymousClass(Symbol sym) { + return sym instanceof Symbol.ClassSymbol && sym.name.isEmpty(); + } + private SemanticdbSymbols.Descriptor semanticdbDescriptor(Symbol sym) { if (sym instanceof Symbol.ClassSymbol) { return new SemanticdbSymbols.Descriptor( diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/InjectSemanticdbOptions.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/InjectSemanticdbOptions.java new file mode 100644 index 00000000..81f56179 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/InjectSemanticdbOptions.java @@ -0,0 +1,53 @@ +package com.sourcegraph.semanticdb_javac; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +public class InjectSemanticdbOptions { + /** + * Updates a list of Java compiler arguments to include -Xplugin:semanticdb. + * + * This main method should be used by a `javac` wrapper script like this: + * + *

+   *     NEW_OPTIONS_PATH=$(mktemp)
+   *     java -cp semanticdb.jar \
+   *         -Dsemanticdb.output=NEW_OPTIONS_PATH \
+   *         com.sourcegraph.semanticdb_javac.InjectSemanticdbOptions $@
+   *     javac @$NEW_OPTIONS_PATH
+   * 
+ * + * Requires the following system properties: + * + * + * + * @param args the Java compiler arguments to update. + */ + public static void main(String[] args) throws IOException { + SemanticdbOptionBuilder newArgs = new SemanticdbOptionBuilder(); + for (String arg : args) { + if (arg.startsWith("@")) { + String filepath = arg.substring(1); + Path path = Paths.get(filepath); + if (Files.isRegularFile(path)) { + List lines = Files.readAllLines(path); + for (String line : lines) { + newArgs.processArgument(line); + } + } + } else { + newArgs.processArgument(arg); + } + } + newArgs.write(); + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java new file mode 100644 index 00000000..6b306349 --- /dev/null +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptionBuilder.java @@ -0,0 +1,78 @@ +package com.sourcegraph.semanticdb_javac; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; + +public class SemanticdbOptionBuilder { + private String previousArg = ""; + private final ArrayList oldArgs = new ArrayList<>(); + private final ArrayList result = new ArrayList<>(); + private boolean isClasspathUpdated = false; + + private static final String PLUGINPATH = System.getProperty("semanticdb.pluginpath", ""); + private static final String SOURCEROOT = System.getProperty("semanticdb.sourceroot", ""); + private static final String TARGETROOT = System.getProperty("semanticdb.targetroot", ""); + private static final String OUTPUT = System.getProperty("semanticdb.output", ""); + private static final String OLD_OUTPUT = System.getProperty("semanticdb.old-output", ""); + + public void processArgument(String arg) { + oldArgs.add(arg); + arg = unwrapQuote(arg); + if ("-processorpath".equals(previousArg) || "-classpath".equals(previousArg)) { + isClasspathUpdated = true; + result.add(PLUGINPATH + File.pathSeparator + arg); + } else if (arg.startsWith("-J")) { + // Ignore Java launcher arguments. + } else if (arg.startsWith("-Xplugin:ErrorProne")) { + // Disable ErrorProne since it's not necessary. + } else if (arg.startsWith("-Xlint")) { + // Disable linting options since they may fail the build. + } else { + result.add(arg); + } + + previousArg = arg; + } + + private String unwrapQuote(String arg) { + if (arg.startsWith("\"") && arg.endsWith("\"")) { + return arg.substring(1, arg.length() - 1); + } else { + return arg; + } + } + + private String wrapQuote(String arg) { + if (arg.startsWith("\"") && arg.endsWith("\"")) { + return arg; + } else { + return "\"" + arg + "\""; + } + } + + private String xpluginOption() { + return String.format( + "\"-Xplugin:semanticdb -sourceroot:%s -targetroot:%s\"", SOURCEROOT, TARGETROOT); + } + + public ArrayList finalResult() { + if (!isClasspathUpdated) { + result.add("-classpath"); + result.add(PLUGINPATH); + } + result.add(xpluginOption()); + ArrayList finalResult = new ArrayList<>(); + for (String arg : result) { + finalResult.add(wrapQuote(arg)); + } + return finalResult; + } + + public void write() throws IOException { + Files.write(Paths.get(OUTPUT), finalResult()); + Files.write(Paths.get(OLD_OUTPUT), oldArgs); + } +} diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptions.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptions.java index a390f2f1..89d3d168 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptions.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbOptions.java @@ -32,7 +32,7 @@ public static SemanticdbOptions parse(String[] args) { if (arg.startsWith("-targetroot:")) { result.targetroot = Paths.get(arg.substring("-targetroot:".length())); } else if (arg.startsWith("-sourceroot:")) { - result.sourceroot = Paths.get(arg.substring("-sourceroot:".length())); + result.sourceroot = Paths.get(arg.substring("-sourceroot:".length())).normalize(); } else if (arg.equals("-text:on")) { result.includeText = true; } else if (arg.equals("-text:off")) { diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSymbols.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSymbols.java index cb82ad12..203505e9 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSymbols.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbSymbols.java @@ -26,8 +26,12 @@ public static String local(int suffix) { return "local" + suffix; } + public static boolean isLocal(String symbol) { + return symbol.startsWith("local"); + } + public static boolean isGlobal(String symbol) { - return !symbol.startsWith("local"); + return !isLocal(symbol); } /** diff --git a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java index 85a7bb1f..88eb7f00 100644 --- a/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java +++ b/semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/SemanticdbTaskListener.java @@ -70,7 +70,7 @@ private void writeSemanticdb(Path output, Semanticdb.TextDocument textDocument) } private Result semanticdbOutputPath(SemanticdbOptions options, TaskEvent e) { - Path absolutePath = Paths.get(e.getSourceFile().toUri()); + Path absolutePath = Paths.get(e.getSourceFile().toUri()).normalize(); if (absolutePath.startsWith(options.sourceroot)) { Path relativePath = options.sourceroot.relativize(absolutePath); String filename = relativePath.getFileName().toString() + ".semanticdb"; diff --git a/tests/benchmarks/src/main/scala/benchmarks/CompileBench.scala b/tests/benchmarks/src/main/scala/benchmarks/CompileBench.scala index 41e6e7c6..3d9b1ed4 100644 --- a/tests/benchmarks/src/main/scala/benchmarks/CompileBench.scala +++ b/tests/benchmarks/src/main/scala/benchmarks/CompileBench.scala @@ -10,8 +10,8 @@ import java.util.concurrent.TimeUnit import scala.meta.inputs.Input import scala.meta.internal.io.FileIO +import com.sourcegraph.lsif_java.DeleteVisitor import org.openjdk.jmh.annotations._ -import tests.DeleteVisitor import tests.Dependencies import tests.TestCompiler diff --git a/tests/buildTools/src/main/scala/tests/GradleOptionsBuilder.scala b/tests/buildTools/src/main/scala/tests/GradleOptionsBuilder.scala new file mode 100644 index 00000000..1fca3f06 --- /dev/null +++ b/tests/buildTools/src/main/scala/tests/GradleOptionsBuilder.scala @@ -0,0 +1,7 @@ +package tests + +import scala.jdk.CollectionConverters._ + +class GradleOptionsBuilder(base: List[String]) { + def build(): java.util.List[String] = base.asJava +} diff --git a/tests/buildTools/src/test/resources/example-maven-pom.xml b/tests/buildTools/src/test/resources/example-maven-pom.xml new file mode 100644 index 00000000..b3623534 --- /dev/null +++ b/tests/buildTools/src/test/resources/example-maven-pom.xml @@ -0,0 +1,75 @@ + + + + 4.0.0 + + com.sourcegraph + example + 1.0-SNAPSHOT + + example + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala new file mode 100644 index 00000000..9827770c --- /dev/null +++ b/tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala @@ -0,0 +1,58 @@ +package tests + +import java.nio.file.FileSystems +import java.nio.file.Path + +import scala.meta.internal.io.FileIO +import scala.meta.io.AbsolutePath + +import com.sourcegraph.lsif_java.LsifJava +import moped.testkit.DeleteVisitor +import moped.testkit.FileLayout +import moped.testkit.MopedSuite +import munit.TestOptions + +abstract class BaseBuildToolSuite extends MopedSuite(LsifJava.app) { + override def environmentVariables: Map[String, String] = sys.env + + // NOTE(olafur): workaround for https://github.com/scalameta/moped/issues/18 + override val temporaryDirectory: DirectoryFixture = + new DirectoryFixture { + private val path = BuildInfo.temporaryDirectory.toPath + override def apply(): Path = path + override def beforeAll(): Unit = {} + override def afterEach(context: AfterEach): Unit = { + DeleteVisitor.deleteRecursively(path) + } + } + + private val semanticdbPattern = FileSystems + .getDefault + .getPathMatcher("glob:**.semanticdb") + + def checkBuild( + options: TestOptions, + original: String, + expected: Int, + extraArguments: List[String] = Nil + ): Unit = { + test(options) { + FileLayout.fromString(original, root = workingDirectory) + val targetroot = workingDirectory.resolve("targetroot") + val arguments = + List("--targetroot", targetroot.toString) ++ extraArguments + val exit = app().run(arguments) + assertEquals(exit, 0, clues(app.capturedOutput)) + val semanticdbFiles = FileIO + .listAllFilesRecursively(AbsolutePath(targetroot)) + .filter(p => semanticdbPattern.matches(p.toNIO)) + if (semanticdbFiles.length != expected) { + fail( + s"Expected $expected SemanticDB file(s) to be generated.", + clues(semanticdbFiles) + ) + } + } + } + +} diff --git a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala new file mode 100644 index 00000000..5834092e --- /dev/null +++ b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala @@ -0,0 +1,61 @@ +package tests + +class GradleBuildToolSuite extends BaseBuildToolSuite { + + checkBuild( + "basic", + """|/build.gradle + |apply plugin: 'java' + |/src/main/java/Example.java + |public class Example {} + |/src/test/java/ExampleSuite.java + |public class ExampleSuite {} + |""".stripMargin, + 2 + ) + + checkBuild( + "toolchains", + """|/build.gradle + |apply plugin: 'java' + |java { + | toolchain { + | languageVersion = JavaLanguageVersion.of(8) + | } + |} + |/src/main/java/Example.java + |public class Example {} + |/src/test/java/ExampleSuite.java + |public class ExampleSuite {} + |""".stripMargin, + 2 + ) + + checkBuild( + "explicit", + """|/build.gradle + |apply plugin: 'java' + |/src/main/java/Example.java + |public class Example {} + |/src/test/java/ExampleSuite.java + |public class ExampleSuite {} + |/pom.xml + | + |""".stripMargin, + 2, + extraArguments = List("--build-tool", "gradle") + ) + + checkBuild( + "build-command", + """|/build.gradle + |apply plugin: 'java' + |/src/main/java/Example.java + |public class Example {} + |/src/test/java/ExampleSuite.java + |public class ExampleSuite {} + |""".stripMargin, + 1, + extraArguments = List("--", "compileJava") + ) +} diff --git a/tests/buildTools/src/test/scala/tests/GradleOptionsBuilderSuite.scala b/tests/buildTools/src/test/scala/tests/GradleOptionsBuilderSuite.scala new file mode 100644 index 00000000..fe57d264 --- /dev/null +++ b/tests/buildTools/src/test/scala/tests/GradleOptionsBuilderSuite.scala @@ -0,0 +1,65 @@ +package tests + +import java.io.File + +import scala.jdk.CollectionConverters._ + +import munit.FunSuite +import munit.TestOptions + +class GradleOptionsBuilderSuite extends FunSuite { + val targetroot = System.getProperty("semanticdb.targetroot") + val sourceroot = System.getProperty("semanticdb.sourceroot") + val pluginpath = System.getProperty("semanticdb.pluginpath") + val Xplugin = + s"-Xplugin:semanticdb -sourceroot:$sourceroot -targetroot:$targetroot" + def check( + options: TestOptions, + original: List[String], + expected: List[String] + ): Unit = { + test(options) { + val obtained = new GradleOptionsBuilder(original).build().asScala.toList + assertEquals(obtained, expected) + } + } + + check( + "basic", + List("-Arandom"), + List("-Arandom", "-classpath", pluginpath, Xplugin) + ) + + check( + "only-classpath", + List("-classpath", "a.jar"), + List( + "-classpath", + List(pluginpath, "a.jar").mkString(File.pathSeparator), + Xplugin + ) + ) + + check( + "only-processorpath", + List("-processorpath", "a.jar"), + List( + "-processorpath", + List(pluginpath, "a.jar").mkString(File.pathSeparator), + Xplugin + ) + ) + + check( + "classpath-and-processorpath", + List("-classpath", "a.jar", "-processorpath", "b.jar"), + List( + "-classpath", + List(pluginpath, "a.jar").mkString(File.pathSeparator), + "-processorpath", + List(pluginpath, "b.jar").mkString(File.pathSeparator), + Xplugin + ) + ) + +} diff --git a/tests/buildTools/src/test/scala/tests/MavenBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/MavenBuildToolSuite.scala new file mode 100644 index 00000000..9f139e8b --- /dev/null +++ b/tests/buildTools/src/test/scala/tests/MavenBuildToolSuite.scala @@ -0,0 +1,42 @@ +package tests + +import scala.meta.internal.io.InputStreamIO + +class MavenBuildToolSuite extends BaseBuildToolSuite { + + def pomXml = + new String( + InputStreamIO + .readBytes(this.getClass.getResourceAsStream("/example-maven-pom.xml")) + ) + + checkBuild( + "basic", + s"""|/pom.xml + |$pomXml + |/src/main/java/com/Example.java + |package com; + |public class Example {} + |/src/test/java/com/ExampleSuite.java + |package com; + |public class ExampleSuite {} + |""".stripMargin, + 2 + ) + + checkBuild( + "build-command", + s"""|/pom.xml + |$pomXml + |/src/main/java/com/Example.java + |package com; + |public class Example {} + |/src/test/java/com/ExampleSuite.java + |package com; + |public class ExampleSuite {} + |""".stripMargin, + 1, + extraArguments = List("--", "compile") + ) + +} diff --git a/tests/buildTools/src/test/scala/tests/MissingBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/MissingBuildToolSuite.scala new file mode 100644 index 00000000..1e25ab2f --- /dev/null +++ b/tests/buildTools/src/test/scala/tests/MissingBuildToolSuite.scala @@ -0,0 +1,50 @@ +package tests + +class MissingBuildToolSuite extends BaseBuildToolSuite { + checkErrorOutput( + "basic", + List(), + expectedOutput = + """|error: No build tool detected in workspace '/workingDirectory'. At the moment, the only supported build tools are: Gradle, Maven. + |""".stripMargin, + workingDirectoryLayout = "" + ) + + checkErrorOutput( + "ambiguous", + List(), + expectedOutput = + """|error: Multiple build tools detected: Gradle, Maven. To fix this problem, use the '--build-tools=BUILD_TOOL_NAME' flag to specify which build tool to run. + |""".stripMargin, + workingDirectoryLayout = + """|/pom.xml + | + |/build.gradle + |def foo= 42 + |""".stripMargin + ) + + checkErrorOutput( + "no-matching-explicit", + List("--build-tool", "Gradle"), + expectedOutput = + """|error: Automatically detected the build tool(s) Maven but none of them match the explicitly provided flag '--build-tool=Gradle'. To fix this problem, run again with the --build-tool flag set to one of the detected build tools. + |""".stripMargin, + workingDirectoryLayout = + """|/pom.xml + | + |""".stripMargin + ) + + checkErrorOutput( + "levenshtein", + List("--build-tool", "Mave"), + expectedOutput = + """|error: Automatically detected the build tool(s) Maven but none of them match the explicitly provided flag '--build-tool=Mave'. Did you mean --build-tool=Maven? + |""".stripMargin, + workingDirectoryLayout = + """|/pom.xml + | + |""".stripMargin + ) +} diff --git a/tests/gradle-example/.gitignore b/tests/gradle-example/.gitignore new file mode 100644 index 00000000..fccaf641 --- /dev/null +++ b/tests/gradle-example/.gitignore @@ -0,0 +1,35 @@ +dump.lsif +semanticdb-targetroot/ +.classpath +.project +.settings +.gradle +eclipsebin + +bin +gen +build +out +lib +generated + +target +pom.xml.* +release.properties +local.properties + +.idea +*.iml +*.ipr +*.iws +classes + +obj + +.DS_Store + +# Special Mkdocs files +docs/4.x +docs/changelog.md +docs/contributing.md +docs/index.md diff --git a/tests/gradle-example/build.gradle b/tests/gradle-example/build.gradle new file mode 100644 index 00000000..bbfeb03c --- /dev/null +++ b/tests/gradle-example/build.gradle @@ -0,0 +1 @@ +apply plugin: 'java' diff --git a/tests/gradle-example/src/main/java/example/Example.java b/tests/gradle-example/src/main/java/example/Example.java new file mode 100644 index 00000000..7f081614 --- /dev/null +++ b/tests/gradle-example/src/main/java/example/Example.java @@ -0,0 +1,3 @@ +package example; + +public class Example {} diff --git a/tests/gradle-example/src/test/java/example/ExampleTest.java b/tests/gradle-example/src/test/java/example/ExampleTest.java new file mode 100644 index 00000000..937cb7c4 --- /dev/null +++ b/tests/gradle-example/src/test/java/example/ExampleTest.java @@ -0,0 +1,3 @@ +package example; + +public class ExampleTest {} diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/AsyncEpoxyDiffer.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/AsyncEpoxyDiffer.java index 29cdd339..5ee6b539 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/AsyncEpoxyDiffer.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/AsyncEpoxyDiffer.java @@ -319,18 +319,18 @@ public void submitList(@Nullable final List> newList) { executor.execute(new Runnable() { // ^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#executor. // ^^^^^^^ reference java/util/concurrent/Executor#execute(). -// ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#submitList().``#``(). 6:5 +// ^^^^^^^^^^^^^^^^ reference local13 6:5 // ^^^^^^^^ reference java/lang/Runnable# // ^^^^^^^^ reference java/lang/Runnable# -// ^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#submitList().``#``(). 1:4 +// ^ definition local13 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void run() { -// ^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#submitList().``#run(). +// ^^^ definition local14 DiffUtil.DiffResult result = DiffUtil.calculateDiff(wrappedCallback); // ^^^^^^^^ reference DiffUtil/ // ^^^^^^^^^^ reference DiffUtil/DiffResult# -// ^^^^^^ definition local12 +// ^^^^^^ definition local15 // ^^^^^^^^ reference _root_/ // ^^^^^^^^^^^^^ reference calculateDiff# // ^^^^^^^^^^^^^^^ reference local11 @@ -342,7 +342,7 @@ public void run() { // ^^^^ reference com/airbnb/epoxy/DiffResult#diff(). // ^^^^^^^^^^^^ reference local9 // ^^^^^^^ reference local7 -// ^^^^^^ reference local12 +// ^^^^^^ reference local15 } }); } @@ -350,16 +350,16 @@ public void run() { private void onRunCompleted( // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#onRunCompleted(). final int runGeneration, -// ^^^^^^^^^^^^^ definition local13 +// ^^^^^^^^^^^^^ definition local16 @Nullable final List> newList, // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local14 +// ^^^^^^^ definition local17 @Nullable final DiffResult result // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^ reference com/airbnb/epoxy/DiffResult# -// ^^^^^^ definition local15 +// ^^^^^^ definition local18 ) { // We use an asynchronous handler so that the Runnable can be posted directly back to the main @@ -368,26 +368,26 @@ private void onRunCompleted( // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/MainThreadExecutor# // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/MainThreadExecutor#ASYNC_INSTANCE. // ^^^^^^^ reference com/airbnb/epoxy/HandlerExecutor#execute(). -// ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#onRunCompleted().``#``(). 8:5 +// ^^^^^^^^^^^^^^^^ reference local20 8:5 // ^^^^^^^^ reference java/lang/Runnable# // ^^^^^^^^ reference java/lang/Runnable# -// ^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#onRunCompleted().``#``(). 1:4 +// ^ definition local20 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void run() { -// ^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#onRunCompleted().``#run(). +// ^^^ definition local21 final boolean dispatchResult = tryLatchList(newList, runGeneration); -// ^^^^^^^^^^^^^^ definition local16 +// ^^^^^^^^^^^^^^ definition local22 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#tryLatchList(). -// ^^^^^^^ reference local14 -// ^^^^^^^^^^^^^ reference local13 +// ^^^^^^^ reference local17 +// ^^^^^^^^^^^^^ reference local16 if (result != null && dispatchResult) { -// ^^^^^^ reference local15 -// ^^^^^^^^^^^^^^ reference local16 +// ^^^^^^ reference local18 +// ^^^^^^^^^^^^^^ reference local22 resultCallback.onResult(result); // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#resultCallback. // ^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#ResultCallback#onResult(). -// ^^^^^^ reference local15 +// ^^^^^^ reference local18 } } }); @@ -406,19 +406,19 @@ private synchronized boolean tryLatchList(@Nullable List // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local17 +// ^^^^^^^ definition local23 int runGeneration) { -// ^^^^^^^^^^^^^ definition local18 +// ^^^^^^^^^^^^^ definition local24 if (generationTracker.finishGeneration(runGeneration)) { // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#generationTracker. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#finishGeneration(). -// ^^^^^^^^^^^^^ reference local18 +// ^^^^^^^^^^^^^ reference local24 list = newList; // ^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#list. -// ^^^^^^^ reference local17 +// ^^^^^^^ reference local23 if (newList == null) { -// ^^^^^^^ reference local17 +// ^^^^^^^ reference local23 readOnlyList = Collections.emptyList(); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#readOnlyList. // ^^^^^^^^^^^ reference java/util/Collections# @@ -428,7 +428,7 @@ private synchronized boolean tryLatchList(@Nullable List // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#readOnlyList. // ^^^^^^^^^^^ reference java/util/Collections# // ^^^^^^^^^^^^^^^^ reference java/util/Collections#unmodifiableList(). -// ^^^^^^^ reference local17 +// ^^^^^^^ reference local23 } return true; @@ -467,13 +467,13 @@ synchronized int incrementAndGetNextScheduled() { synchronized boolean finishMaxGeneration() { // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#finishMaxGeneration(). boolean isInterrupting = hasUnfinishedGeneration(); -// ^^^^^^^^^^^^^^ definition local19 +// ^^^^^^^^^^^^^^ definition local25 // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#hasUnfinishedGeneration(). maxFinishedGeneration = maxScheduledGeneration; // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#maxFinishedGeneration. // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#maxScheduledGeneration. return isInterrupting; -// ^^^^^^^^^^^^^^ reference local19 +// ^^^^^^^^^^^^^^ reference local25 } synchronized boolean hasUnfinishedGeneration() { @@ -485,24 +485,24 @@ synchronized boolean hasUnfinishedGeneration() { synchronized boolean finishGeneration(int runGeneration) { // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#finishGeneration(). -// ^^^^^^^^^^^^^ definition local20 +// ^^^^^^^^^^^^^ definition local26 boolean isLatestGeneration = -// ^^^^^^^^^^^^^^^^^^ definition local21 +// ^^^^^^^^^^^^^^^^^^ definition local27 maxScheduledGeneration == runGeneration && runGeneration > maxFinishedGeneration; // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#maxScheduledGeneration. -// ^^^^^^^^^^^^^ reference local20 -// ^^^^^^^^^^^^^ reference local20 +// ^^^^^^^^^^^^^ reference local26 +// ^^^^^^^^^^^^^ reference local26 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#maxFinishedGeneration. if (isLatestGeneration) { -// ^^^^^^^^^^^^^^^^^^ reference local21 +// ^^^^^^^^^^^^^^^^^^ reference local27 maxFinishedGeneration = runGeneration; // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#GenerationTracker#maxFinishedGeneration. -// ^^^^^^^^^^^^^ reference local20 +// ^^^^^^^^^^^^^ reference local26 } return isLatestGeneration; -// ^^^^^^^^^^^^^^^^^^ reference local21 +// ^^^^^^^^^^^^^^^^^^ reference local27 } } @@ -528,26 +528,26 @@ private static class DiffCallback extends DiffUtil.Callback { // ^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#``(). // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local22 +// ^^^^^^^ definition local28 // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local23 +// ^^^^^^^ definition local29 ItemCallback> diffCallback) { // ^^^^^^^^^^^^ reference _root_/ // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^ definition local24 +// ^^^^^^^^^^^^ definition local30 this.oldList = oldList; // ^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#this. // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#oldList. -// ^^^^^^^ reference local22 +// ^^^^^^^ reference local28 this.newList = newList; // ^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#this. // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#newList. -// ^^^^^^^ reference local23 +// ^^^^^^^ reference local29 this.diffCallback = diffCallback; // ^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#this. // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#diffCallback. -// ^^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^^^ reference local30 } @Override @@ -572,19 +572,19 @@ public int getNewListSize() { // ^^^^^^^^ reference java/lang/Override# public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#areItemsTheSame(). -// ^^^^^^^^^^^^^^^ definition local25 -// ^^^^^^^^^^^^^^^ definition local26 +// ^^^^^^^^^^^^^^^ definition local31 +// ^^^^^^^^^^^^^^^ definition local32 return diffCallback.areItemsTheSame( // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#diffCallback. // ^^^^^^^^^^^^^^^ reference ``#areItemsTheSame# oldList.get(oldItemPosition), // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#oldList. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local25 +// ^^^^^^^^^^^^^^^ reference local31 newList.get(newItemPosition) // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#newList. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local26 +// ^^^^^^^^^^^^^^^ reference local32 ); } @@ -592,19 +592,19 @@ public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) { // ^^^^^^^^ reference java/lang/Override# public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { // ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#areContentsTheSame(). -// ^^^^^^^^^^^^^^^ definition local27 -// ^^^^^^^^^^^^^^^ definition local28 +// ^^^^^^^^^^^^^^^ definition local33 +// ^^^^^^^^^^^^^^^ definition local34 return diffCallback.areContentsTheSame( // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#diffCallback. // ^^^^^^^^^^^^^^^^^^ reference ``#areContentsTheSame# oldList.get(oldItemPosition), // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#oldList. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^^ reference local33 newList.get(newItemPosition) // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#newList. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local28 +// ^^^^^^^^^^^^^^^ reference local34 ); } @@ -615,19 +615,19 @@ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) { public Object getChangePayload(int oldItemPosition, int newItemPosition) { // ^^^^^^ reference java/lang/Object# // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#getChangePayload(). -// ^^^^^^^^^^^^^^^ definition local29 -// ^^^^^^^^^^^^^^^ definition local30 +// ^^^^^^^^^^^^^^^ definition local35 +// ^^^^^^^^^^^^^^^ definition local36 return diffCallback.getChangePayload( // ^^^^^^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#diffCallback. // ^^^^^^^^^^^^^^^^ reference ``#getChangePayload# oldList.get(oldItemPosition), // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#oldList. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local29 +// ^^^^^^^^^^^^^^^ reference local35 newList.get(newItemPosition) // ^^^^^^^ reference com/airbnb/epoxy/AsyncEpoxyDiffer#DiffCallback#newList. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local30 +// ^^^^^^^^^^^^^^^ reference local36 ); } } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyAdapter.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyAdapter.java index db379404..802fe8d2 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyAdapter.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyAdapter.java @@ -105,20 +105,20 @@ public abstract class BaseEpoxyAdapter @Override // ^^^^^^^^ reference java/lang/Override# public int getSpanSize(int position) { -// ^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#spanSizeLookup.``#getSpanSize(). -// ^^^^^^^^ definition local0 +// ^^^^^^^^^^^ definition local1 +// ^^^^^^^^ definition local2 try { return getModelForPosition(position) // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getModelForPosition(). -// ^^^^^^^^ reference local0 +// ^^^^^^^^ reference local2 .spanSize(spanCount, position, getItemCount()); // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#spanSize(). // ^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#spanCount. -// ^^^^^^^^ reference local0 +// ^^^^^^^^ reference local2 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getItemCount(). } catch (IndexOutOfBoundsException e) { // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IndexOutOfBoundsException# -// ^ definition local1 +// ^ definition local3 // There seems to be a GridLayoutManager bug where when the user is in accessibility mode // it incorrectly uses an outdated view position // when calling this method. This crashes when a view is animating out, when it is @@ -128,7 +128,7 @@ public int getSpanSize(int position) { // TODO: (eli_hart 8/23/16) Figure out if this has been fixed in new support library onExceptionSwallowed(e); // ^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onExceptionSwallowed(). -// ^ reference local1 +// ^ reference local3 return 1; } } @@ -152,7 +152,7 @@ public BaseEpoxyAdapter() { protected void onExceptionSwallowed(RuntimeException exception) { // ^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onExceptionSwallowed(). // ^^^^^^^^^^^^^^^^ reference java/lang/RuntimeException# -// ^^^^^^^^^ definition local2 +// ^^^^^^^^^ definition local4 } @@ -182,14 +182,14 @@ public boolean isEmpty() { ^^^^^^^^ reference java/lang/Override# public long getItemId(int position) { // ^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#getItemId(). -// ^^^^^^^^ definition local3 +// ^^^^^^^^ definition local5 // This does not call getModelForPosition so that we don't use the id of the empty model when // hidden, // so that the id stays constant when gone vs shown return getCurrentModels().get(position).id(); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^ reference java/util/List#get(). -// ^^^^^^^^ reference local3 +// ^^^^^^^^ reference local5 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). } @@ -197,12 +197,12 @@ public long getItemId(int position) { ^^^^^^^^ reference java/lang/Override# public int getItemViewType(int position) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#getItemViewType(). -// ^^^^^^^^ definition local4 +// ^^^^^^^^ definition local6 return viewTypeManager.getViewTypeAndRememberModel(getModelForPosition(position)); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewTypeManager. // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewTypeManager#getViewTypeAndRememberModel(). // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getModelForPosition(). -// ^^^^^^^^ reference local4 +// ^^^^^^^^ reference local6 } @Override @@ -211,27 +211,27 @@ public EpoxyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# // ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onCreateViewHolder(). // ^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local5 -// ^^^^^^^^ definition local6 +// ^^^^^^ definition local7 +// ^^^^^^^^ definition local8 EpoxyModel model = viewTypeManager.getModelForViewType(this, viewType); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local7 +// ^^^^^ definition local9 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewTypeManager. // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewTypeManager#getModelForViewType(). // ^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#this. -// ^^^^^^^^ reference local6 +// ^^^^^^^^ reference local8 View view = model.buildView(parent); // ^^^^ reference _root_/ -// ^^^^ definition local8 -// ^^^^^ reference local7 +// ^^^^ definition local10 +// ^^^^^ reference local9 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#buildView(). -// ^^^^^^ reference local5 +// ^^^^^^ reference local7 return new EpoxyViewHolder(parent, view, model.shouldSaveViewState()); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#``(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ reference local5 -// ^^^^ reference local8 -// ^^^^^ reference local7 +// ^^^^^^ reference local7 +// ^^^^ reference local10 +// ^^^^^ reference local9 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#shouldSaveViewState(). } @@ -240,12 +240,12 @@ public EpoxyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(EpoxyViewHolder holder, int position) { // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onBindViewHolder(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local9 -// ^^^^^^^^ definition local10 +// ^^^^^^ definition local11 +// ^^^^^^^^ definition local12 onBindViewHolder(holder, position, Collections.emptyList()); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onBindViewHolder(+1). -// ^^^^^^ reference local9 -// ^^^^^^^^ reference local10 +// ^^^^^^ reference local11 +// ^^^^^^^^ reference local12 // ^^^^^^^^^^^ reference java/util/Collections# // ^^^^^^^^^ reference java/util/Collections#emptyList(). } @@ -255,41 +255,41 @@ public void onBindViewHolder(EpoxyViewHolder holder, int position) { public void onBindViewHolder(EpoxyViewHolder holder, int position, List payloads) { // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onBindViewHolder(+1). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local11 -// ^^^^^^^^ definition local12 +// ^^^^^^ definition local13 +// ^^^^^^^^ definition local14 // ^^^^ reference java/util/List# // ^^^^^^ reference java/lang/Object# -// ^^^^^^^^ definition local13 +// ^^^^^^^^ definition local15 EpoxyModel modelToShow = getModelForPosition(position); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^ definition local14 +// ^^^^^^^^^^^ definition local16 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getModelForPosition(). -// ^^^^^^^^ reference local12 +// ^^^^^^^^ reference local14 EpoxyModel previouslyBoundModel = null; // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^^^^^^^ definition local15 +// ^^^^^^^^^^^^^^^^^^^^ definition local17 if (diffPayloadsEnabled()) { // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#diffPayloadsEnabled(). previouslyBoundModel = DiffPayload.getModelFromPayload(payloads, getItemId(position)); -// ^^^^^^^^^^^^^^^^^^^^ reference local15 +// ^^^^^^^^^^^^^^^^^^^^ reference local17 // ^^^^^^^^^^^ reference com/airbnb/epoxy/DiffPayload# // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffPayload#getModelFromPayload(). -// ^^^^^^^^ reference local13 +// ^^^^^^^^ reference local15 // ^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getItemId(). -// ^^^^^^^^ reference local12 +// ^^^^^^^^ reference local14 } holder.bind(modelToShow, previouslyBoundModel, payloads, position); -// ^^^^^^ reference local11 +// ^^^^^^ reference local13 // ^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#bind(). -// ^^^^^^^^^^^ reference local14 -// ^^^^^^^^^^^^^^^^^^^^ reference local15 -// ^^^^^^^^ reference local13 -// ^^^^^^^^ reference local12 +// ^^^^^^^^^^^ reference local16 +// ^^^^^^^^^^^^^^^^^^^^ reference local17 +// ^^^^^^^^ reference local15 +// ^^^^^^^^ reference local14 if (payloads.isEmpty()) { -// ^^^^^^^^ reference local13 +// ^^^^^^^^ reference local15 // ^^^^^^^ reference java/util/List#isEmpty(). // We only apply saved state to the view on initial bind, not on model updates. // Since view state should be independent of model props, we should not need to apply state @@ -297,29 +297,29 @@ public void onBindViewHolder(EpoxyViewHolder holder, int position, List viewHolderState.restore(holder); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewHolderState. // ^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#restore(). -// ^^^^^^ reference local11 +// ^^^^^^ reference local13 } boundViewHolders.put(holder); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#boundViewHolders. // ^^^ reference com/airbnb/epoxy/BoundViewHolders#put(). -// ^^^^^^ reference local11 +// ^^^^^^ reference local13 if (diffPayloadsEnabled()) { // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#diffPayloadsEnabled(). onModelBound(holder, modelToShow, position, previouslyBoundModel); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(+1). -// ^^^^^^ reference local11 -// ^^^^^^^^^^^ reference local14 -// ^^^^^^^^ reference local12 -// ^^^^^^^^^^^^^^^^^^^^ reference local15 +// ^^^^^^ reference local13 +// ^^^^^^^^^^^ reference local16 +// ^^^^^^^^ reference local14 +// ^^^^^^^^^^^^^^^^^^^^ reference local17 } else { onModelBound(holder, modelToShow, position, payloads); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(). -// ^^^^^^ reference local11 -// ^^^^^^^^^^^ reference local14 -// ^^^^^^^^ reference local12 -// ^^^^^^^^ reference local13 +// ^^^^^^ reference local13 +// ^^^^^^^^^^^ reference local16 +// ^^^^^^^^ reference local14 +// ^^^^^^^^ reference local15 } } @@ -335,38 +335,38 @@ boolean diffPayloadsEnabled() { protected void onModelBound(EpoxyViewHolder holder, EpoxyModel model, int position, // ^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local16 +// ^^^^^^ definition local18 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local17 -// ^^^^^^^^ definition local18 +// ^^^^^ definition local19 +// ^^^^^^^^ definition local20 @Nullable List payloads) { // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^ reference java/util/List# // ^^^^^^ reference java/lang/Object# -// ^^^^^^^^ definition local19 +// ^^^^^^^^ definition local21 onModelBound(holder, model, position); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(+2). -// ^^^^^^ reference local16 -// ^^^^^ reference local17 -// ^^^^^^^^ reference local18 +// ^^^^^^ reference local18 +// ^^^^^ reference local19 +// ^^^^^^^^ reference local20 } void onModelBound(EpoxyViewHolder holder, EpoxyModel model, int position, // ^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(+1). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local20 +// ^^^^^^ definition local22 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local21 -// ^^^^^^^^ definition local22 +// ^^^^^ definition local23 +// ^^^^^^^^ definition local24 @Nullable EpoxyModel previouslyBoundModel) { // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^^^^^^^ definition local23 +// ^^^^^^^^^^^^^^^^^^^^ definition local25 onModelBound(holder, model, position); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(+2). -// ^^^^^^ reference local20 -// ^^^^^ reference local21 -// ^^^^^^^^ reference local22 +// ^^^^^^ reference local22 +// ^^^^^ reference local23 +// ^^^^^^^^ reference local24 } /** @@ -376,10 +376,10 @@ void onModelBound(EpoxyViewHolder holder, EpoxyModel model, int position, protected void onModelBound(EpoxyViewHolder holder, EpoxyModel model, int position) { // ^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onModelBound(+2). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local24 +// ^^^^^^ definition local26 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local25 -// ^^^^^^^^ definition local26 +// ^^^^^ definition local27 +// ^^^^^^^^ definition local28 } @@ -398,11 +398,11 @@ protected BoundViewHolders getBoundViewHolders() { EpoxyModel getModelForPosition(int position) { ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#getModelForPosition(). -// ^^^^^^^^ definition local27 +// ^^^^^^^^ definition local29 return getCurrentModels().get(position); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^ reference java/util/List#get(). -// ^^^^^^^^ reference local27 +// ^^^^^^^^ reference local29 } @Override @@ -410,28 +410,28 @@ EpoxyModel getModelForPosition(int position) { public void onViewRecycled(EpoxyViewHolder holder) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onViewRecycled(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local28 +// ^^^^^^ definition local30 viewHolderState.save(holder); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewHolderState. // ^^^^ reference com/airbnb/epoxy/ViewHolderState#save(+1). -// ^^^^^^ reference local28 +// ^^^^^^ reference local30 boundViewHolders.remove(holder); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#boundViewHolders. // ^^^^^^ reference com/airbnb/epoxy/BoundViewHolders#remove(). -// ^^^^^^ reference local28 +// ^^^^^^ reference local30 EpoxyModel model = holder.getModel(); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local29 -// ^^^^^^ reference local28 +// ^^^^^ definition local31 +// ^^^^^^ reference local30 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). holder.unbind(); -// ^^^^^^ reference local28 +// ^^^^^^ reference local30 // ^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#unbind(). onModelUnbound(holder, model); // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onModelUnbound(). -// ^^^^^^ reference local28 -// ^^^^^ reference local29 +// ^^^^^^ reference local30 +// ^^^^^ reference local31 } @CallSuper @@ -442,7 +442,7 @@ public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onDetachedFromRecyclerView(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local30 +// ^^^^^^^^^^^^ definition local32 // The last model is saved for optimization, but holding onto it can leak anything saved inside // the model (like a click listener that references a Fragment). This is only needed during // the viewholder creation phase, so it is safe to clear now. @@ -458,9 +458,9 @@ public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { protected void onModelUnbound(EpoxyViewHolder holder, EpoxyModel model) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onModelUnbound(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local31 +// ^^^^^^ definition local33 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local32 +// ^^^^^ definition local34 } @@ -471,14 +471,14 @@ protected void onModelUnbound(EpoxyViewHolder holder, EpoxyModel model) { public boolean onFailedToRecycleView(EpoxyViewHolder holder) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onFailedToRecycleView(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local33 +// ^^^^^^ definition local35 //noinspection unchecked,rawtypes return ((EpoxyModel) holder.getModel()).onFailedToRecycleView(holder.objectToBind()); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ reference local33 +// ^^^^^^ reference local35 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onFailedToRecycleView(). -// ^^^^^^ reference local33 +// ^^^^^^ reference local35 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#objectToBind(). } @@ -489,14 +489,14 @@ public boolean onFailedToRecycleView(EpoxyViewHolder holder) { public void onViewAttachedToWindow(EpoxyViewHolder holder) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onViewAttachedToWindow(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local34 +// ^^^^^^ definition local36 //noinspection unchecked,rawtypes ((EpoxyModel) holder.getModel()).onViewAttachedToWindow(holder.objectToBind()); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ reference local34 +// ^^^^^^ reference local36 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onViewAttachedToWindow(). -// ^^^^^^ reference local34 +// ^^^^^^ reference local36 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#objectToBind(). } @@ -507,32 +507,32 @@ public void onViewAttachedToWindow(EpoxyViewHolder holder) { public void onViewDetachedFromWindow(EpoxyViewHolder holder) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onViewDetachedFromWindow(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local35 +// ^^^^^^ definition local37 //noinspection unchecked,rawtypes ((EpoxyModel) holder.getModel()).onViewDetachedFromWindow(holder.objectToBind()); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ reference local35 +// ^^^^^^ reference local37 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onViewDetachedFromWindow(). -// ^^^^^^ reference local35 +// ^^^^^^ reference local37 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#objectToBind(). } public void onSaveInstanceState(Bundle outState) { // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onSaveInstanceState(). // ^^^^^^ reference _root_/ -// ^^^^^^^^ definition local36 +// ^^^^^^^^ definition local38 // Save the state of currently bound views first so they are included. Views that were // scrolled off and unbound will already have had // their state saved. for (EpoxyViewHolder holder : boundViewHolders) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local37 +// ^^^^^^ definition local39 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#boundViewHolders. viewHolderState.save(holder); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewHolderState. // ^^^^ reference com/airbnb/epoxy/ViewHolderState#save(+1). -// ^^^^^^ reference local37 +// ^^^^^^ reference local39 } if (viewHolderState.size() > 0 && !hasStableIds()) { @@ -545,7 +545,7 @@ public void onSaveInstanceState(Bundle outState) { } outState.putParcelable(SAVED_STATE_ARG_VIEW_HOLDERS, viewHolderState); -// ^^^^^^^^ reference local36 +// ^^^^^^^^ reference local38 // ^^^^^^^^^^^^^ reference putParcelable# // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#SAVED_STATE_ARG_VIEW_HOLDERS. // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewHolderState. @@ -555,7 +555,7 @@ public void onRestoreInstanceState(@Nullable Bundle inState) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#onRestoreInstanceState(). // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^ reference _root_/ -// ^^^^^^^ definition local38 +// ^^^^^^^ definition local40 // To simplify things we enforce that state is restored before views are bound, otherwise it // is more difficult to update view state once they are bound if (boundViewHolders.size() > 0) { @@ -569,10 +569,10 @@ public void onRestoreInstanceState(@Nullable Bundle inState) { } if (inState != null) { -// ^^^^^^^ reference local38 +// ^^^^^^^ reference local40 viewHolderState = inState.getParcelable(SAVED_STATE_ARG_VIEW_HOLDERS); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#viewHolderState. -// ^^^^^^^ reference local38 +// ^^^^^^^ reference local40 // ^^^^^^^^^^^^^ reference getParcelable# // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#SAVED_STATE_ARG_VIEW_HOLDERS. if (viewHolderState == null) { @@ -595,23 +595,23 @@ public void onRestoreInstanceState(@Nullable Bundle inState) { protected int getModelPosition(EpoxyModel model) { // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#getModelPosition(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local39 +// ^^^^^ definition local41 int size = getCurrentModels().size(); -// ^^^^ definition local40 +// ^^^^ definition local42 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^^ reference java/util/List#size(). for (int i = 0; i < size; i++) { -// ^ definition local41 -// ^ reference local41 -// ^^^^ reference local40 -// ^ reference local41 +// ^ definition local43 +// ^ reference local43 +// ^^^^ reference local42 +// ^ reference local43 if (model == getCurrentModels().get(i)) { -// ^^^^^ reference local39 +// ^^^^^ reference local41 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^ reference java/util/List#get(). -// ^ reference local41 +// ^ reference local43 return i; -// ^ reference local41 +// ^ reference local43 } } @@ -640,11 +640,11 @@ public SpanSizeLookup getSpanSizeLookup() { */ public void setSpanCount(int spanCount) { // ^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#setSpanCount(). -// ^^^^^^^^^ definition local42 +// ^^^^^^^^^ definition local44 this.spanCount = spanCount; // ^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#this. // ^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#spanCount. -// ^^^^^^^^^ reference local42 +// ^^^^^^^^^ reference local44 } public int getSpanCount() { @@ -674,7 +674,7 @@ public void setupStickyHeaderView(@NotNull View stickyHeader) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#setupStickyHeaderView(). // ^^^^^^^ reference org/jetbrains/annotations/NotNull# // ^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local43 +// ^^^^^^^^^^^^ definition local45 // no-op } @@ -691,7 +691,7 @@ public void teardownStickyHeaderView(@NotNull View stickyHeader) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#teardownStickyHeaderView(). // ^^^^^^^ reference org/jetbrains/annotations/NotNull# // ^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local44 +// ^^^^^^^^^^^^ definition local46 // no-op } @@ -706,7 +706,7 @@ public void teardownStickyHeaderView(@NotNull View stickyHeader) { ^^^^^^^^ reference java/lang/Override# public boolean isStickyHeader(int position) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/BaseEpoxyAdapter#isStickyHeader(). -// ^^^^^^^^ definition local45 +// ^^^^^^^^ definition local47 return false; } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/Carousel.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/Carousel.java index f611ae2d..73c87cdb 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/Carousel.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/Carousel.java @@ -119,10 +119,10 @@ public class Carousel extends EpoxyRecyclerView { // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#SnapHelperFactory# // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#defaultGlobalSnapHelperFactory. new SnapHelperFactory() { -// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#defaultGlobalSnapHelperFactory.``#``(). 7:7 +// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local1 7:7 // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#SnapHelperFactory# // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#SnapHelperFactory# -// ^ definition com/airbnb/epoxy/Carousel#defaultGlobalSnapHelperFactory.``#``(). 2:3 +// ^ definition local1 2:3 @Override // ^^^^^^^^ reference java/lang/Override# @@ -130,9 +130,9 @@ public class Carousel extends EpoxyRecyclerView { // ^^^^^^^ reference androidx/annotation/NonNull# public SnapHelper buildSnapHelper(Context context) { // ^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#defaultGlobalSnapHelperFactory.``#buildSnapHelper(). +// ^^^^^^^^^^^^^^^ definition local2 // ^^^^^^^ reference _root_/ -// ^^^^^^^ definition local0 +// ^^^^^^^ definition local3 return new LinearSnapHelper(); // ^^^^^^^^^^^^^^^^^^^^^^ reference ``# // ^^^^^^^^^^^^^^^^ reference _root_/ @@ -153,35 +153,35 @@ public SnapHelper buildSnapHelper(Context context) { public Carousel(Context context) { // ^^^^^^ definition com/airbnb/epoxy/Carousel#``(). // ^^^^^^^ reference _root_/ -// ^^^^^^^ definition local1 +// ^^^^^^^ definition local4 super(context); -// ^^^^^^^ reference local1 +// ^^^^^^^ reference local4 } public Carousel(Context context, @Nullable AttributeSet attrs) { // ^^^^^^ definition com/airbnb/epoxy/Carousel#``(+1). // ^^^^^^^ reference _root_/ -// ^^^^^^^ definition local2 +// ^^^^^^^ definition local5 // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^ definition local3 +// ^^^^^ definition local6 super(context, attrs); -// ^^^^^^^ reference local2 -// ^^^^^ reference local3 +// ^^^^^^^ reference local5 +// ^^^^^ reference local6 } public Carousel(Context context, @Nullable AttributeSet attrs, int defStyle) { // ^^^^^^ definition com/airbnb/epoxy/Carousel#``(+2). // ^^^^^^^ reference _root_/ -// ^^^^^^^ definition local4 +// ^^^^^^^ definition local7 // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^ definition local5 -// ^^^^^^^^ definition local6 +// ^^^^^ definition local8 +// ^^^^^^^^ definition local9 super(context, attrs, defStyle); -// ^^^^^^^ reference local4 -// ^^^^^ reference local5 -// ^^^^^^^^ reference local6 +// ^^^^^^^ reference local7 +// ^^^^^ reference local8 +// ^^^^^^^^ reference local9 } @Override @@ -193,14 +193,14 @@ protected void init() { // ^^^^ reference init# // When used as a model the padding can't be set via xml so we set it programmatically int defaultSpacingDp = getDefaultSpacingBetweenItemsDp(); -// ^^^^^^^^^^^^^^^^ definition local7 +// ^^^^^^^^^^^^^^^^ definition local10 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getDefaultSpacingBetweenItemsDp(). if (defaultSpacingDp >= 0) { -// ^^^^^^^^^^^^^^^^ reference local7 +// ^^^^^^^^^^^^^^^^ reference local10 setItemSpacingDp(defaultSpacingDp); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setItemSpacingDp# -// ^^^^^^^^^^^^^^^^ reference local7 +// ^^^^^^^^^^^^^^^^ reference local10 if (getPaddingLeft() == 0 // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getPaddingLeft# @@ -213,18 +213,18 @@ && getPaddingBottom() == 0) { // Use the item spacing as the default padding if no other padding has been set setPaddingDp(defaultSpacingDp); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPaddingDp(). -// ^^^^^^^^^^^^^^^^ reference local7 +// ^^^^^^^^^^^^^^^^ reference local10 } } SnapHelperFactory snapHelperFactory = getSnapHelperFactory(); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#SnapHelperFactory# -// ^^^^^^^^^^^^^^^^^ definition local8 +// ^^^^^^^^^^^^^^^^^ definition local11 // ^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getSnapHelperFactory(). if (snapHelperFactory != null) { -// ^^^^^^^^^^^^^^^^^ reference local8 +// ^^^^^^^^^^^^^^^^^ reference local11 snapHelperFactory.buildSnapHelper(getContext()).attachToRecyclerView(this); -// ^^^^^^^^^^^^^^^^^ reference local8 +// ^^^^^^^^^^^^^^^^^ reference local11 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#SnapHelperFactory#buildSnapHelper(). // ^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getContext# // ^^^^^^^^^^^^^^^^^^^^ reference ``#attachToRecyclerView# @@ -262,10 +262,10 @@ public static void setDefaultGlobalSnapHelperFactory(@Nullable SnapHelperFactory // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#setDefaultGlobalSnapHelperFactory(). // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#SnapHelperFactory# -// ^^^^^^^ definition local9 +// ^^^^^^^ definition local12 defaultGlobalSnapHelperFactory = factory; // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#defaultGlobalSnapHelperFactory. -// ^^^^^^^ reference local9 +// ^^^^^^^ reference local12 } @ModelProp @@ -274,11 +274,11 @@ public static void setDefaultGlobalSnapHelperFactory(@Nullable SnapHelperFactory ^^^^^^^^ reference java/lang/Override# public void setHasFixedSize(boolean hasFixedSize) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#setHasFixedSize(). -// ^^^^^^^^^^^^ definition local10 +// ^^^^^^^^^^^^ definition local13 super.setHasFixedSize(hasFixedSize); // ^^^^^ reference _root_/ // ^^^^^^^^^^^^^^^ reference setHasFixedSize# -// ^^^^^^^^^^^^ reference local10 +// ^^^^^^^^^^^^ reference local13 } /** @@ -304,15 +304,15 @@ public void setHasFixedSize(boolean hasFixedSize) { // ^^^^^ reference com/airbnb/epoxy/ModelProp#group(). public void setNumViewsToShowOnScreen(float viewCount) { // ^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#setNumViewsToShowOnScreen(). -// ^^^^^^^^^ definition local11 +// ^^^^^^^^^ definition local14 numViewsToShowOnScreen = viewCount; // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#numViewsToShowOnScreen. -// ^^^^^^^^^ reference local11 +// ^^^^^^^^^ reference local14 setInitialPrefetchItemCount((int) Math.ceil(viewCount)); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setInitialPrefetchItemCount(). // ^^^^ reference java/lang/Math# // ^^^^ reference java/lang/Math#ceil(). -// ^^^^^^^^^ reference local11 +// ^^^^^^^^^ reference local14 } /** @@ -336,9 +336,9 @@ public float getNumViewsToShowOnScreen() { // ^^^^^ reference com/airbnb/epoxy/ModelProp#group(). public void setInitialPrefetchItemCount(int numItemsToPrefetch) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#setInitialPrefetchItemCount(). -// ^^^^^^^^^^^^^^^^^^ definition local12 +// ^^^^^^^^^^^^^^^^^^ definition local15 if (numItemsToPrefetch < 0) { -// ^^^^^^^^^^^^^^^^^^ reference local12 +// ^^^^^^^^^^^^^^^^^^ reference local15 throw new IllegalStateException("numItemsToPrefetch must be greater than 0"); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#``(+1). // ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException# @@ -346,22 +346,22 @@ public void setInitialPrefetchItemCount(int numItemsToPrefetch) { // Use the linearlayoutmanager default of 2 if the user did not specify one int prefetchCount = numItemsToPrefetch == 0 ? 2 : numItemsToPrefetch; -// ^^^^^^^^^^^^^ definition local13 -// ^^^^^^^^^^^^^^^^^^ reference local12 -// ^^^^^^^^^^^^^^^^^^ reference local12 +// ^^^^^^^^^^^^^ definition local16 +// ^^^^^^^^^^^^^^^^^^ reference local15 +// ^^^^^^^^^^^^^^^^^^ reference local15 LayoutManager layoutManager = getLayoutManager(); // ^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^^ definition local14 +// ^^^^^^^^^^^^^ definition local17 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getLayoutManager# if (layoutManager instanceof LinearLayoutManager) { -// ^^^^^^^^^^^^^ reference local14 +// ^^^^^^^^^^^^^ reference local17 // ^^^^^^^^^^^^^^^^^^^ reference _root_/ ((LinearLayoutManager) layoutManager).setInitialPrefetchItemCount(prefetchCount); // ^^^^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^^ reference local14 +// ^^^^^^^^^^^^^ reference local17 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference setInitialPrefetchItemCount# -// ^^^^^^^^^^^^^ reference local13 +// ^^^^^^^^^^^^^ reference local16 } } @@ -370,64 +370,64 @@ public void setInitialPrefetchItemCount(int numItemsToPrefetch) { public void onChildAttachedToWindow(View child) { // ^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#onChildAttachedToWindow(). // ^^^^ reference _root_/ -// ^^^^^ definition local15 +// ^^^^^ definition local18 if (numViewsToShowOnScreen > 0) { // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#numViewsToShowOnScreen. ViewGroup.LayoutParams childLayoutParams = child.getLayoutParams(); // ^^^^^^^^^ reference ViewGroup/ // ^^^^^^^^^^^^ reference ViewGroup/LayoutParams# -// ^^^^^^^^^^^^^^^^^ definition local16 -// ^^^^^ reference local15 +// ^^^^^^^^^^^^^^^^^ definition local19 +// ^^^^^ reference local18 // ^^^^^^^^^^^^^^^ reference getLayoutParams# child.setTag(R.id.epoxy_recycler_view_child_initial_size_id, childLayoutParams.width); -// ^^^^^ reference local15 +// ^^^^^ reference local18 // ^^^^^^ reference setTag# // ^ reference R/ // ^^ reference R/id# // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference R/id#epoxy_recycler_view_child_initial_size_id# -// ^^^^^^^^^^^^^^^^^ reference local16 +// ^^^^^^^^^^^^^^^^^ reference local19 // ^^^^^ reference ViewGroup/LayoutParams#width# int itemSpacingPx = getSpacingDecorator().getPxBetweenItems(); -// ^^^^^^^^^^^^^ definition local17 +// ^^^^^^^^^^^^^ definition local20 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getSpacingDecorator# // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getSpacingDecorator#getPxBetweenItems# int spaceBetweenItems = 0; -// ^^^^^^^^^^^^^^^^^ definition local18 +// ^^^^^^^^^^^^^^^^^ definition local21 if (itemSpacingPx > 0) { -// ^^^^^^^^^^^^^ reference local17 +// ^^^^^^^^^^^^^ reference local20 // The item decoration space is not counted in the width of the view spaceBetweenItems = (int) (itemSpacingPx * numViewsToShowOnScreen); -// ^^^^^^^^^^^^^^^^^ reference local18 -// ^^^^^^^^^^^^^ reference local17 +// ^^^^^^^^^^^^^^^^^ reference local21 +// ^^^^^^^^^^^^^ reference local20 // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#numViewsToShowOnScreen. } boolean isScrollingHorizontally = getLayoutManager().canScrollHorizontally(); -// ^^^^^^^^^^^^^^^^^^^^^^^ definition local19 +// ^^^^^^^^^^^^^^^^^^^^^^^ definition local22 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getLayoutManager# // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getLayoutManager#canScrollHorizontally# int itemSizeInScrollingDirection = -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition local20 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition local23 (int) ((getSpaceForChildren(isScrollingHorizontally) - spaceBetweenItems) // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getSpaceForChildren(). -// ^^^^^^^^^^^^^^^^^^^^^^^ reference local19 -// ^^^^^^^^^^^^^^^^^ reference local18 +// ^^^^^^^^^^^^^^^^^^^^^^^ reference local22 +// ^^^^^^^^^^^^^^^^^ reference local21 / numViewsToShowOnScreen); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#numViewsToShowOnScreen. if (isScrollingHorizontally) { -// ^^^^^^^^^^^^^^^^^^^^^^^ reference local19 +// ^^^^^^^^^^^^^^^^^^^^^^^ reference local22 childLayoutParams.width = itemSizeInScrollingDirection; -// ^^^^^^^^^^^^^^^^^ reference local16 +// ^^^^^^^^^^^^^^^^^ reference local19 // ^^^^^ reference ViewGroup/LayoutParams#width# -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local20 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local23 } else { childLayoutParams.height = itemSizeInScrollingDirection; -// ^^^^^^^^^^^^^^^^^ reference local16 +// ^^^^^^^^^^^^^^^^^ reference local19 // ^^^^^^ reference ViewGroup/LayoutParams#height# -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local20 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local23 } // We don't need to request layout because the layout manager will do that for us next @@ -436,9 +436,9 @@ public void onChildAttachedToWindow(View child) { private int getSpaceForChildren(boolean horizontal) { // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#getSpaceForChildren(). -// ^^^^^^^^^^ definition local21 +// ^^^^^^^^^^ definition local24 if (horizontal) { -// ^^^^^^^^^^ reference local21 +// ^^^^^^^^^^ reference local24 return getTotalWidthPx(this) // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getTotalWidthPx(). // ^^^^ reference com/airbnb/epoxy/Carousel#this. @@ -467,34 +467,34 @@ private int getSpaceForChildren(boolean horizontal) { private static int getTotalWidthPx(View view) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#getTotalWidthPx(). // ^^^^ reference _root_/ -// ^^^^ definition local22 +// ^^^^ definition local25 if (view.getWidth() > 0) { -// ^^^^ reference local22 +// ^^^^ reference local25 // ^^^^^^^^ reference getWidth# // Can only get a width if we are laid out return view.getWidth(); -// ^^^^ reference local22 +// ^^^^ reference local25 // ^^^^^^^^ reference getWidth# } if (view.getMeasuredWidth() > 0) { -// ^^^^ reference local22 +// ^^^^ reference local25 // ^^^^^^^^^^^^^^^^ reference getMeasuredWidth# return view.getMeasuredWidth(); -// ^^^^ reference local22 +// ^^^^ reference local25 // ^^^^^^^^^^^^^^^^ reference getMeasuredWidth# } // Fall back to assuming we want the full screen width DisplayMetrics metrics = view.getContext().getResources().getDisplayMetrics(); // ^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^ definition local23 -// ^^^^ reference local22 +// ^^^^^^^ definition local26 +// ^^^^ reference local25 // ^^^^^^^^^^ reference getContext# // ^^^^^^^^^^^^ reference getContext#getResources# // ^^^^^^^^^^^^^^^^^ reference getContext#getResources#getDisplayMetrics# return metrics.widthPixels; -// ^^^^^^^ reference local23 +// ^^^^^^^ reference local26 // ^^^^^^^^^^^ reference widthPixels# } @@ -503,33 +503,33 @@ private static int getTotalWidthPx(View view) { private static int getTotalHeightPx(View view) { // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#getTotalHeightPx(). // ^^^^ reference _root_/ -// ^^^^ definition local24 +// ^^^^ definition local27 if (view.getHeight() > 0) { -// ^^^^ reference local24 +// ^^^^ reference local27 // ^^^^^^^^^ reference getHeight# return view.getHeight(); -// ^^^^ reference local24 +// ^^^^ reference local27 // ^^^^^^^^^ reference getHeight# } if (view.getMeasuredHeight() > 0) { -// ^^^^ reference local24 +// ^^^^ reference local27 // ^^^^^^^^^^^^^^^^^ reference getMeasuredHeight# return view.getMeasuredHeight(); -// ^^^^ reference local24 +// ^^^^ reference local27 // ^^^^^^^^^^^^^^^^^ reference getMeasuredHeight# } // Fall back to assuming we want the full screen width DisplayMetrics metrics = view.getContext().getResources().getDisplayMetrics(); // ^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^ definition local25 -// ^^^^ reference local24 +// ^^^^^^^ definition local28 +// ^^^^ reference local27 // ^^^^^^^^^^ reference getContext# // ^^^^^^^^^^^^ reference getContext#getResources# // ^^^^^^^^^^^^^^^^^ reference getContext#getResources#getDisplayMetrics# return metrics.heightPixels; -// ^^^^^^^ reference local25 +// ^^^^^^^ reference local28 // ^^^^^^^^^^^^ reference heightPixels# } @@ -538,32 +538,32 @@ private static int getTotalHeightPx(View view) { public void onChildDetachedFromWindow(View child) { // ^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#onChildDetachedFromWindow(). // ^^^^ reference _root_/ -// ^^^^^ definition local26 +// ^^^^^ definition local29 // Restore the view width that existed before we modified it Object initialWidth = child.getTag(R.id.epoxy_recycler_view_child_initial_size_id); // ^^^^^^ reference java/lang/Object# -// ^^^^^^^^^^^^ definition local27 -// ^^^^^ reference local26 +// ^^^^^^^^^^^^ definition local30 +// ^^^^^ reference local29 // ^^^^^^ reference getTag# // ^ reference R/ // ^^ reference R/id# // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference R/id#epoxy_recycler_view_child_initial_size_id# if (initialWidth instanceof Integer) { -// ^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^ reference local30 // ^^^^^^^ reference java/lang/Integer# ViewGroup.LayoutParams params = child.getLayoutParams(); // ^^^^^^^^^ reference ViewGroup/ // ^^^^^^^^^^^^ reference ViewGroup/LayoutParams# -// ^^^^^^ definition local28 -// ^^^^^ reference local26 +// ^^^^^^ definition local31 +// ^^^^^ reference local29 // ^^^^^^^^^^^^^^^ reference getLayoutParams# params.width = (int) initialWidth; -// ^^^^^^ reference local28 +// ^^^^^^ reference local31 // ^^^^^ reference ViewGroup/LayoutParams#width# -// ^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^ reference local30 child.setTag(R.id.epoxy_recycler_view_child_initial_size_id, null); -// ^^^^^ reference local26 +// ^^^^^ reference local29 // ^^^^^^ reference setTag# // ^ reference R/ // ^^ reference R/id# @@ -582,10 +582,10 @@ public static void setDefaultItemSpacingDp(@Dimension(unit = Dimension.DP) int d // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^ definition local29 +// ^^ definition local32 defaultSpacingBetweenItemsDp = dp; // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#defaultSpacingBetweenItemsDp. -// ^^ reference local29 +// ^^ reference local32 } /** @@ -615,20 +615,20 @@ protected int getDefaultSpacingBetweenItemsDp() { public void setPaddingRes(@DimenRes int paddingRes) { // ^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#setPaddingRes(). // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^^^^ definition local30 +// ^^^^^^^^^^ definition local33 int px = resToPx(paddingRes); -// ^^ definition local31 +// ^^ definition local34 // ^^^^^^^ reference com/airbnb/epoxy/Carousel#resToPx# -// ^^^^^^^^^^ reference local30 +// ^^^^^^^^^^ reference local33 setPadding(px, px, px, px); // ^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPadding# -// ^^ reference local31 -// ^^ reference local31 -// ^^ reference local31 -// ^^ reference local31 +// ^^ reference local34 +// ^^ reference local34 +// ^^ reference local34 +// ^^ reference local34 setItemSpacingPx(px); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setItemSpacingPx# -// ^^ reference local31 +// ^^ reference local34 } /** @@ -647,23 +647,23 @@ public void setPaddingDp(@Dimension(unit = Dimension.DP) int paddingDp) { // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^^^^ definition local32 +// ^^^^^^^^^ definition local35 int px = dpToPx(paddingDp != NO_VALUE_SET ? paddingDp : getDefaultSpacingBetweenItemsDp()); -// ^^ definition local33 +// ^^ definition local36 // ^^^^^^ reference com/airbnb/epoxy/Carousel#dpToPx# -// ^^^^^^^^^ reference local32 +// ^^^^^^^^^ reference local35 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#NO_VALUE_SET. -// ^^^^^^^^^ reference local32 +// ^^^^^^^^^ reference local35 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#getDefaultSpacingBetweenItemsDp(). setPadding(px, px, px, px); // ^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPadding# -// ^^ reference local33 -// ^^ reference local33 -// ^^ reference local33 -// ^^ reference local33 +// ^^ reference local36 +// ^^ reference local36 +// ^^ reference local36 +// ^^ reference local36 setItemSpacingPx(px); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setItemSpacingPx# -// ^^ reference local33 +// ^^ reference local36 } /** @@ -679,33 +679,33 @@ public void setPadding(@Nullable Padding padding) { // ^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#setPadding(). // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# -// ^^^^^^^ definition local34 +// ^^^^^^^ definition local37 if (padding == null) { -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 setPaddingDp(0); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPaddingDp(). } else if (padding.paddingType == Padding.PaddingType.PX) { -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#paddingType. // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#PX. setPadding(padding.left, padding.top, padding.right, padding.bottom); // ^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPadding# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. setItemSpacingPx(padding.itemSpacing); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setItemSpacingPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. } else if (padding.paddingType == Padding.PaddingType.DP) { -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#paddingType. // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# @@ -714,24 +714,24 @@ public void setPadding(@Nullable Padding padding) { // ^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPadding# dpToPx(padding.left), dpToPx(padding.top), dpToPx(padding.right), dpToPx(padding.bottom)); // ^^^^^^ reference com/airbnb/epoxy/Carousel#dpToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. // ^^^^^^ reference com/airbnb/epoxy/Carousel#dpToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. // ^^^^^^ reference com/airbnb/epoxy/Carousel#dpToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. // ^^^^^^ reference com/airbnb/epoxy/Carousel#dpToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. setItemSpacingPx(dpToPx(padding.itemSpacing)); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setItemSpacingPx# // ^^^^^^ reference com/airbnb/epoxy/Carousel#dpToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. } else if (padding.paddingType == Padding.PaddingType.RESOURCE) { -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#paddingType. // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# @@ -740,24 +740,24 @@ public void setPadding(@Nullable Padding padding) { // ^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setPadding# resToPx(padding.left), // ^^^^^^^ reference com/airbnb/epoxy/Carousel#resToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. resToPx(padding.top), // ^^^^^^^ reference com/airbnb/epoxy/Carousel#resToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. resToPx(padding.right), // ^^^^^^^ reference com/airbnb/epoxy/Carousel#resToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. resToPx(padding.bottom)); // ^^^^^^^ reference com/airbnb/epoxy/Carousel#resToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. setItemSpacingPx(resToPx(padding.itemSpacing)); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#setItemSpacingPx# // ^^^^^^^ reference com/airbnb/epoxy/Carousel#resToPx# -// ^^^^^^^ reference local34 +// ^^^^^^^ reference local37 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. } } @@ -803,18 +803,18 @@ public static Padding resource(@DimenRes int paddingRes, @DimenRes int itemSpaci // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# // ^^^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#resource(). // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^^^^ definition local35 +// ^^^^^^^^^^ definition local38 // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^^^^^^^^ definition local36 +// ^^^^^^^^^^^^^^ definition local39 return new Padding( // ^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#``(+2). 1:95 // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# paddingRes, paddingRes, paddingRes, paddingRes, itemSpacingRes, PaddingType.RESOURCE); -// ^^^^^^^^^^ reference local35 -// ^^^^^^^^^^ reference local35 -// ^^^^^^^^^^ reference local35 -// ^^^^^^^^^^ reference local35 -// ^^^^^^^^^^^^^^ reference local36 +// ^^^^^^^^^^ reference local38 +// ^^^^^^^^^^ reference local38 +// ^^^^^^^^^^ reference local38 +// ^^^^^^^^^^ reference local38 +// ^^^^^^^^^^^^^^ reference local39 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#RESOURCE. } @@ -832,28 +832,28 @@ public static Padding resource( // ^^^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#resource(+1). @DimenRes int leftRes, // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^ definition local37 +// ^^^^^^^ definition local40 @DimenRes int topRes, // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^ definition local38 +// ^^^^^^ definition local41 @DimenRes int rightRes, // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^^ definition local39 +// ^^^^^^^^ definition local42 @DimenRes int bottomRes, // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^^^ definition local40 +// ^^^^^^^^^ definition local43 @DimenRes int itemSpacingRes) { // ^^^^^^^^ reference androidx/annotation/DimenRes# -// ^^^^^^^^^^^^^^ definition local41 +// ^^^^^^^^^^^^^^ definition local44 return new Padding( // ^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#``(+2). 1:85 // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# leftRes, topRes, rightRes, bottomRes, itemSpacingRes, PaddingType.RESOURCE); -// ^^^^^^^ reference local37 -// ^^^^^^ reference local38 -// ^^^^^^^^ reference local39 -// ^^^^^^^^^ reference local40 -// ^^^^^^^^^^^^^^ reference local41 +// ^^^^^^^ reference local40 +// ^^^^^^ reference local41 +// ^^^^^^^^ reference local42 +// ^^^^^^^^^ reference local43 +// ^^^^^^^^^^^^^^ reference local44 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#RESOURCE. } @@ -871,21 +871,21 @@ public static Padding dp( // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^^^^ definition local42 +// ^^^^^^^^^ definition local45 @Dimension(unit = Dimension.DP) int itemSpacingDp) { // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^^^^^^^^ definition local43 +// ^^^^^^^^^^^^^ definition local46 return new Padding(paddingDp, paddingDp, paddingDp, paddingDp, itemSpacingDp, PaddingType.DP); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#``(+2). // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# -// ^^^^^^^^^ reference local42 -// ^^^^^^^^^ reference local42 -// ^^^^^^^^^ reference local42 -// ^^^^^^^^^ reference local42 -// ^^^^^^^^^^^^^ reference local43 +// ^^^^^^^^^ reference local45 +// ^^^^^^^^^ reference local45 +// ^^^^^^^^^ reference local45 +// ^^^^^^^^^ reference local45 +// ^^^^^^^^^^^^^ reference local46 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#DP. } @@ -906,39 +906,39 @@ public static Padding dp( // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^ definition local44 +// ^^^^^^ definition local47 @Dimension(unit = Dimension.DP) int topDp, // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^ definition local45 +// ^^^^^ definition local48 @Dimension(unit = Dimension.DP) int rightDp, // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^^ definition local46 +// ^^^^^^^ definition local49 @Dimension(unit = Dimension.DP) int bottomDp, // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^^^ definition local47 +// ^^^^^^^^ definition local50 @Dimension(unit = Dimension.DP) int itemSpacingDp) { // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^^^ reference androidx/annotation/Dimension#unit(). // ^^^^^^^^^ reference androidx/annotation/Dimension# // ^^ reference androidx/annotation/Dimension#DP. -// ^^^^^^^^^^^^^ definition local48 +// ^^^^^^^^^^^^^ definition local51 return new Padding(leftDp, topDp, rightDp, bottomDp, itemSpacingDp, PaddingType.DP); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#``(+2). // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# -// ^^^^^^ reference local44 -// ^^^^^ reference local45 -// ^^^^^^^ reference local46 -// ^^^^^^^^ reference local47 -// ^^^^^^^^^^^^^ reference local48 +// ^^^^^^ reference local47 +// ^^^^^ reference local48 +// ^^^^^^^ reference local49 +// ^^^^^^^^ reference local50 +// ^^^^^^^^^^^^^ reference local51 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#DP. } @@ -951,16 +951,16 @@ public static Padding dp( public Padding(@Px int paddingPx, @Px int itemSpacingPx) { // ^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#``(). // ^^ reference androidx/annotation/Px# -// ^^^^^^^^^ definition local49 +// ^^^^^^^^^ definition local52 // ^^ reference androidx/annotation/Px# -// ^^^^^^^^^^^^^ definition local50 +// ^^^^^^^^^^^^^ definition local53 this(paddingPx, paddingPx, paddingPx, paddingPx, itemSpacingPx, PaddingType.PX); // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#``(+2). -// ^^^^^^^^^ reference local49 -// ^^^^^^^^^ reference local49 -// ^^^^^^^^^ reference local49 -// ^^^^^^^^^ reference local49 -// ^^^^^^^^^^^^^ reference local50 +// ^^^^^^^^^ reference local52 +// ^^^^^^^^^ reference local52 +// ^^^^^^^^^ reference local52 +// ^^^^^^^^^ reference local52 +// ^^^^^^^^^^^^^ reference local53 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#PX. } @@ -977,22 +977,22 @@ public Padding( // ^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#``(+1). @Px int leftPx, @Px int topPx, @Px int rightPx, @Px int bottomPx, @Px int itemSpacingPx) { // ^^ reference androidx/annotation/Px# -// ^^^^^^ definition local51 +// ^^^^^^ definition local54 // ^^ reference androidx/annotation/Px# -// ^^^^^ definition local52 +// ^^^^^ definition local55 // ^^ reference androidx/annotation/Px# -// ^^^^^^^ definition local53 +// ^^^^^^^ definition local56 // ^^ reference androidx/annotation/Px# -// ^^^^^^^^ definition local54 +// ^^^^^^^^ definition local57 // ^^ reference androidx/annotation/Px# -// ^^^^^^^^^^^^^ definition local55 +// ^^^^^^^^^^^^^ definition local58 this(leftPx, topPx, rightPx, bottomPx, itemSpacingPx, PaddingType.PX); // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#``(+2). -// ^^^^^^ reference local51 -// ^^^^^ reference local52 -// ^^^^^^^ reference local53 -// ^^^^^^^^ reference local54 -// ^^^^^^^^^^^^^ reference local55 +// ^^^^^^ reference local54 +// ^^^^^ reference local55 +// ^^^^^^^ reference local56 +// ^^^^^^^^ reference local57 +// ^^^^^^^^^^^^^ reference local58 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# // ^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType#PX. } @@ -1009,38 +1009,38 @@ public Padding( private Padding( // ^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#``(+2). int left, int top, int right, int bottom, int itemSpacing, PaddingType paddingType) { -// ^^^^ definition local56 -// ^^^ definition local57 -// ^^^^^ definition local58 -// ^^^^^^ definition local59 -// ^^^^^^^^^^^ definition local60 +// ^^^^ definition local59 +// ^^^ definition local60 +// ^^^^^ definition local61 +// ^^^^^^ definition local62 +// ^^^^^^^^^^^ definition local63 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#PaddingType# -// ^^^^^^^^^^^ definition local61 +// ^^^^^^^^^^^ definition local64 this.left = left; // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. -// ^^^^ reference local56 +// ^^^^ reference local59 this.top = top; // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. -// ^^^ reference local57 +// ^^^ reference local60 this.right = right; // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. -// ^^^^^ reference local58 +// ^^^^^ reference local61 this.bottom = bottom; // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. -// ^^^^^^ reference local59 +// ^^^^^^ reference local62 this.itemSpacing = itemSpacing; // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. -// ^^^^^^^^^^^ reference local60 +// ^^^^^^^^^^^ reference local63 this.paddingType = paddingType; // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#paddingType. -// ^^^^^^^^^^^ reference local61 +// ^^^^^^^^^^^ reference local64 } @Override @@ -1048,53 +1048,53 @@ private Padding( public boolean equals(Object o) { // ^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#equals(). // ^^^^^^ reference java/lang/Object# -// ^ definition local62 +// ^ definition local65 if (this == o) { // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#this. -// ^ reference local62 +// ^ reference local65 return true; } if (o == null || getClass() != o.getClass()) { -// ^ reference local62 +// ^ reference local65 // ^^^^^^^^ reference java/lang/Object#getClass(). -// ^ reference local62 +// ^ reference local65 // ^^^^^^^^ reference java/lang/Object#getClass(). return false; } Padding padding = (Padding) o; // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# -// ^^^^^^^ definition local63 +// ^^^^^^^ definition local66 // ^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding# -// ^ reference local62 +// ^ reference local65 if (left != padding.left) { // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. -// ^^^^^^^ reference local63 +// ^^^^^^^ reference local66 // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. return false; } if (top != padding.top) { // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. -// ^^^^^^^ reference local63 +// ^^^^^^^ reference local66 // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. return false; } if (right != padding.right) { // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. -// ^^^^^^^ reference local63 +// ^^^^^^^ reference local66 // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. return false; } if (bottom != padding.bottom) { // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. -// ^^^^^^^ reference local63 +// ^^^^^^^ reference local66 // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. return false; } return itemSpacing == padding.itemSpacing; // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. -// ^^^^^^^ reference local63 +// ^^^^^^^ reference local66 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. } @@ -1103,26 +1103,26 @@ public boolean equals(Object o) { public int hashCode() { // ^^^^^^^^ definition com/airbnb/epoxy/Carousel#Padding#hashCode(). int result = left; -// ^^^^^^ definition local64 +// ^^^^^^ definition local67 // ^^^^ reference com/airbnb/epoxy/Carousel#Padding#left. result = 31 * result + top; -// ^^^^^^ reference local64 -// ^^^^^^ reference local64 +// ^^^^^^ reference local67 +// ^^^^^^ reference local67 // ^^^ reference com/airbnb/epoxy/Carousel#Padding#top. result = 31 * result + right; -// ^^^^^^ reference local64 -// ^^^^^^ reference local64 +// ^^^^^^ reference local67 +// ^^^^^^ reference local67 // ^^^^^ reference com/airbnb/epoxy/Carousel#Padding#right. result = 31 * result + bottom; -// ^^^^^^ reference local64 -// ^^^^^^ reference local64 +// ^^^^^^ reference local67 +// ^^^^^^ reference local67 // ^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#bottom. result = 31 * result + itemSpacing; -// ^^^^^^ reference local64 -// ^^^^^^ reference local64 +// ^^^^^^ reference local67 +// ^^^^^^ reference local67 // ^^^^^^^^^^^ reference com/airbnb/epoxy/Carousel#Padding#itemSpacing. return result; -// ^^^^^^ reference local64 +// ^^^^^^ reference local67 } } @@ -1133,11 +1133,11 @@ public void setModels(@NonNull List> models) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ definition local65 +// ^^^^^^ definition local68 super.setModels(models); // ^^^^^ reference _root_/ // ^^^^^^^^^ reference setModels# -// ^^^^^^ reference local65 +// ^^^^^^ reference local68 } @OnViewRecycled @@ -1163,6 +1163,6 @@ public abstract static class SnapHelperFactory { // ^^^^^^^^^^ reference _root_/ // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/Carousel#SnapHelperFactory#buildSnapHelper(). // ^^^^^^^ reference _root_/ -// ^^^^^^^ definition local66 +// ^^^^^^^ definition local69 } } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/ControllerModelList.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/ControllerModelList.java index 7f105fa0..1ca27635 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/ControllerModelList.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/ControllerModelList.java @@ -14,16 +14,16 @@ class ControllerModelList extends ModelList { private static final ModelListObserver OBSERVER = new ModelListObserver() { // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#ModelListObserver# // ^^^^^^^^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER. -// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ControllerModelList#OBSERVER.``#``(). 12:3 +// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local1 12:3 // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#ModelListObserver# // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#ModelListObserver# -// ^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.``#``(). 1:4 +// ^ definition local1 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onItemRangeInserted(int positionStart, int itemCount) { -// ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.``#onItemRangeInserted(). -// ^^^^^^^^^^^^^ definition local0 -// ^^^^^^^^^ definition local1 +// ^^^^^^^^^^^^^^^^^^^ definition local2 +// ^^^^^^^^^^^^^ definition local3 +// ^^^^^^^^^ definition local4 throw new IllegalStateException( // ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#``(+1). 1:75 // ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException# @@ -33,9 +33,9 @@ public void onItemRangeInserted(int positionStart, int itemCount) { @Override // ^^^^^^^^ reference java/lang/Override# public void onItemRangeRemoved(int positionStart, int itemCount) { -// ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.``#onItemRangeRemoved(). -// ^^^^^^^^^^^^^ definition local2 -// ^^^^^^^^^ definition local3 +// ^^^^^^^^^^^^^^^^^^ definition local5 +// ^^^^^^^^^^^^^ definition local6 +// ^^^^^^^^^ definition local7 throw new IllegalStateException( // ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#``(+1). 1:75 // ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException# @@ -45,10 +45,10 @@ public void onItemRangeRemoved(int positionStart, int itemCount) { ControllerModelList(int expectedModelCount) { ^^^^^^ definition com/airbnb/epoxy/ControllerModelList#``(). -// ^^^^^^^^^^^^^^^^^^ definition local4 +// ^^^^^^^^^^^^^^^^^^ definition local8 super(expectedModelCount); // ^^^^^ reference com/airbnb/epoxy/ModelList#``(). -// ^^^^^^^^^^^^^^^^^^ reference local4 +// ^^^^^^^^^^^^^^^^^^ reference local8 pauseNotifications(); // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#pauseNotifications(). } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/DiffHelper.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/DiffHelper.java index 63ee54e3..4ef88dd2 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/DiffHelper.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/DiffHelper.java @@ -103,7 +103,7 @@ class DiffHelper { @Override // ^^^^^^^^ reference java/lang/Override# public void onChanged() { -// ^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#observer.``#onChanged(). +// ^^^^^^^^^ definition local3 throw new UnsupportedOperationException( // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/UnsupportedOperationException#``(+1). 1:99 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/UnsupportedOperationException# @@ -113,25 +113,25 @@ public void onChanged() { @Override // ^^^^^^^^ reference java/lang/Override# public void onItemRangeChanged(int positionStart, int itemCount) { -// ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#observer.``#onItemRangeChanged(). -// ^^^^^^^^^^^^^ definition local2 -// ^^^^^^^^^ definition local3 +// ^^^^^^^^^^^^^^^^^^ definition local4 +// ^^^^^^^^^^^^^ definition local5 +// ^^^^^^^^^ definition local6 for (int i = positionStart; i < positionStart + itemCount; i++) { -// ^ definition local4 -// ^^^^^^^^^^^^^ reference local2 -// ^ reference local4 -// ^^^^^^^^^^^^^ reference local2 -// ^^^^^^^^^ reference local3 -// ^ reference local4 +// ^ definition local7 +// ^^^^^^^^^^^^^ reference local5 +// ^ reference local7 +// ^^^^^^^^^^^^^ reference local5 +// ^^^^^^^^^ reference local6 +// ^ reference local7 currentStateList.get(i).hashCode = adapter.getCurrentModels().get(i).hashCode(); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local4 +// ^ reference local7 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#hashCode. // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^ reference java/util/List#get(). -// ^ reference local4 +// ^ reference local7 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#hashCode(). } } @@ -139,93 +139,93 @@ public void onItemRangeChanged(int positionStart, int itemCount) { @Override // ^^^^^^^^ reference java/lang/Override# public void onItemRangeInserted(int positionStart, int itemCount) { -// ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#observer.``#onItemRangeInserted(). -// ^^^^^^^^^^^^^ definition local5 -// ^^^^^^^^^ definition local6 +// ^^^^^^^^^^^^^^^^^^^ definition local8 +// ^^^^^^^^^^^^^ definition local9 +// ^^^^^^^^^ definition local10 if (itemCount == 0) { -// ^^^^^^^^^ reference local6 +// ^^^^^^^^^ reference local10 // no-op return; } if (itemCount == 1 || positionStart == currentStateList.size()) { -// ^^^^^^^^^ reference local6 -// ^^^^^^^^^^^^^ reference local5 +// ^^^^^^^^^ reference local10 +// ^^^^^^^^^^^^^ reference local9 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^ reference java/util/ArrayList#size(). for (int i = positionStart; i < positionStart + itemCount; i++) { -// ^ definition local7 -// ^^^^^^^^^^^^^ reference local5 -// ^ reference local7 -// ^^^^^^^^^^^^^ reference local5 -// ^^^^^^^^^ reference local6 -// ^ reference local7 +// ^ definition local11 +// ^^^^^^^^^^^^^ reference local9 +// ^ reference local11 +// ^^^^^^^^^^^^^ reference local9 +// ^^^^^^^^^ reference local10 +// ^ reference local11 currentStateList.add(i, createStateForPosition(i)); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#add(+2). -// ^ reference local7 +// ^ reference local11 // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#createStateForPosition(). -// ^ reference local7 +// ^ reference local11 } } else { // Add in a batch since multiple insertions to the middle of the list are slow List newModels = new ArrayList<>(itemCount); // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^ definition local8 +// ^^^^^^^^^ definition local12 // ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/util/ArrayList#``(). // ^^^^^^^^^ reference java/util/ArrayList# -// ^^^^^^^^^ reference local6 +// ^^^^^^^^^ reference local10 for (int i = positionStart; i < positionStart + itemCount; i++) { -// ^ definition local9 -// ^^^^^^^^^^^^^ reference local5 -// ^ reference local9 -// ^^^^^^^^^^^^^ reference local5 -// ^^^^^^^^^ reference local6 -// ^ reference local9 +// ^ definition local13 +// ^^^^^^^^^^^^^ reference local9 +// ^ reference local13 +// ^^^^^^^^^^^^^ reference local9 +// ^^^^^^^^^ reference local10 +// ^ reference local13 newModels.add(createStateForPosition(i)); -// ^^^^^^^^^ reference local8 +// ^^^^^^^^^ reference local12 // ^^^ reference java/util/List#add(). // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#createStateForPosition(). -// ^ reference local9 +// ^ reference local13 } currentStateList.addAll(positionStart, newModels); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^^^ reference java/util/ArrayList#addAll(+1). -// ^^^^^^^^^^^^^ reference local5 -// ^^^^^^^^^ reference local8 +// ^^^^^^^^^^^^^ reference local9 +// ^^^^^^^^^ reference local12 } // Update positions of affected items int size = currentStateList.size(); -// ^^^^ definition local10 +// ^^^^ definition local14 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^ reference java/util/ArrayList#size(). for (int i = positionStart + itemCount; i < size; i++) { -// ^ definition local11 -// ^^^^^^^^^^^^^ reference local5 -// ^^^^^^^^^ reference local6 -// ^ reference local11 -// ^^^^ reference local10 -// ^ reference local11 +// ^ definition local15 +// ^^^^^^^^^^^^^ reference local9 +// ^^^^^^^^^ reference local10 +// ^ reference local15 +// ^^^^ reference local14 +// ^ reference local15 currentStateList.get(i).position += itemCount; // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local11 +// ^ reference local15 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^ reference local6 +// ^^^^^^^^^ reference local10 } } @Override // ^^^^^^^^ reference java/lang/Override# public void onItemRangeRemoved(int positionStart, int itemCount) { -// ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#observer.``#onItemRangeRemoved(). -// ^^^^^^^^^^^^^ definition local12 -// ^^^^^^^^^ definition local13 +// ^^^^^^^^^^^^^^^^^^ definition local16 +// ^^^^^^^^^^^^^ definition local17 +// ^^^^^^^^^ definition local18 if (itemCount == 0) { -// ^^^^^^^^^ reference local13 +// ^^^^^^^^^ reference local18 // no-op return; } @@ -233,114 +233,114 @@ public void onItemRangeRemoved(int positionStart, int itemCount) { List modelsToRemove = // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^^^^ definition local14 +// ^^^^^^^^^^^^^^ definition local19 currentStateList.subList(positionStart, positionStart + itemCount); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^^^^ reference java/util/ArrayList#subList(). -// ^^^^^^^^^^^^^ reference local12 -// ^^^^^^^^^^^^^ reference local12 -// ^^^^^^^^^ reference local13 +// ^^^^^^^^^^^^^ reference local17 +// ^^^^^^^^^^^^^ reference local17 +// ^^^^^^^^^ reference local18 for (ModelState model : modelsToRemove) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^ definition local15 -// ^^^^^^^^^^^^^^ reference local14 +// ^^^^^ definition local20 +// ^^^^^^^^^^^^^^ reference local19 currentStateMap.remove(model.id); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateMap. // ^^^^^^ reference java/util/Map#remove(). -// ^^^^^ reference local15 +// ^^^^^ reference local20 // ^^ reference com/airbnb/epoxy/ModelState#id. } modelsToRemove.clear(); -// ^^^^^^^^^^^^^^ reference local14 +// ^^^^^^^^^^^^^^ reference local19 // ^^^^^ reference java/util/List#clear(). // Update positions of affected items int size = currentStateList.size(); -// ^^^^ definition local16 +// ^^^^ definition local21 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^ reference java/util/ArrayList#size(). for (int i = positionStart; i < size; i++) { -// ^ definition local17 -// ^^^^^^^^^^^^^ reference local12 -// ^ reference local17 -// ^^^^ reference local16 -// ^ reference local17 +// ^ definition local22 +// ^^^^^^^^^^^^^ reference local17 +// ^ reference local22 +// ^^^^ reference local21 +// ^ reference local22 currentStateList.get(i).position -= itemCount; // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local17 +// ^ reference local22 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^ reference local13 +// ^^^^^^^^^ reference local18 } } @Override // ^^^^^^^^ reference java/lang/Override# public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#observer.``#onItemRangeMoved(). -// ^^^^^^^^^^^^ definition local18 -// ^^^^^^^^^^ definition local19 -// ^^^^^^^^^ definition local20 +// ^^^^^^^^^^^^^^^^ definition local23 +// ^^^^^^^^^^^^ definition local24 +// ^^^^^^^^^^ definition local25 +// ^^^^^^^^^ definition local26 if (fromPosition == toPosition) { -// ^^^^^^^^^^^^ reference local18 -// ^^^^^^^^^^ reference local19 +// ^^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^ reference local25 // no-op return; } if (itemCount != 1) { -// ^^^^^^^^^ reference local20 +// ^^^^^^^^^ reference local26 throw new IllegalArgumentException("Moving more than 1 item at a time is not " // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalArgumentException#``(+1). 1:63 // ^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalArgumentException# + "supported. Number of items moved: " + itemCount); -// ^^^^^^^^^ reference local20 +// ^^^^^^^^^ reference local26 } ModelState model = currentStateList.remove(fromPosition); // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^ definition local21 +// ^^^^^ definition local27 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^^^ reference java/util/ArrayList#remove(). -// ^^^^^^^^^^^^ reference local18 +// ^^^^^^^^^^^^ reference local24 model.position = toPosition; -// ^^^^^ reference local21 +// ^^^^^ reference local27 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^ reference local19 +// ^^^^^^^^^^ reference local25 currentStateList.add(toPosition, model); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#add(+2). -// ^^^^^^^^^^ reference local19 -// ^^^^^ reference local21 +// ^^^^^^^^^^ reference local25 +// ^^^^^ reference local27 if (fromPosition < toPosition) { -// ^^^^^^^^^^^^ reference local18 -// ^^^^^^^^^^ reference local19 +// ^^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^ reference local25 // shift the affected items left for (int i = fromPosition; i < toPosition; i++) { -// ^ definition local22 -// ^^^^^^^^^^^^ reference local18 -// ^ reference local22 -// ^^^^^^^^^^ reference local19 -// ^ reference local22 +// ^ definition local28 +// ^^^^^^^^^^^^ reference local24 +// ^ reference local28 +// ^^^^^^^^^^ reference local25 +// ^ reference local28 currentStateList.get(i).position--; // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local22 +// ^ reference local28 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } } else { // shift the affected items right for (int i = toPosition + 1; i <= fromPosition; i++) { -// ^ definition local23 -// ^^^^^^^^^^ reference local19 -// ^ reference local23 -// ^^^^^^^^^^^^ reference local18 -// ^ reference local23 +// ^ definition local29 +// ^^^^^^^^^^ reference local25 +// ^ reference local29 +// ^^^^^^^^^^^^ reference local24 +// ^ reference local29 currentStateList.get(i).position++; // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local23 +// ^ reference local29 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } } @@ -355,13 +355,13 @@ void notifyModelChanges() { // ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#notifyModelChanges(). UpdateOpHelper updateOpHelper = new UpdateOpHelper(); // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^^^^^^^^^ definition local24 +// ^^^^^^^^^^^^^^ definition local30 // ^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#``(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# buildDiff(updateOpHelper); // ^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#buildDiff(). -// ^^^^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^^^^^ reference local30 // Send out the proper notify calls for the diff. We remove our // observer first so that we don't react to our own notify calls @@ -371,7 +371,7 @@ void notifyModelChanges() { // ^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#observer. notifyChanges(updateOpHelper); // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#notifyChanges(). -// ^^^^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^^^^^ reference local30 adapter.registerAdapterDataObserver(observer); // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#registerAdapterDataObserver# @@ -381,14 +381,14 @@ void notifyModelChanges() { private void notifyChanges(UpdateOpHelper opHelper) { // ^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#notifyChanges(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^^^ definition local25 +// ^^^^^^^^ definition local31 for (UpdateOp op : opHelper.opList) { // ^^^^^^^^ reference com/airbnb/epoxy/UpdateOp# -// ^^ definition local26 -// ^^^^^^^^ reference local25 +// ^^ definition local32 +// ^^^^^^^^ reference local31 // ^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#opList. switch (op.type) { -// ^^ reference local26 +// ^^ reference local32 // ^^^^ reference com/airbnb/epoxy/UpdateOp#type. case UpdateOp.ADD: // ^^^^^^^^ reference com/airbnb/epoxy/UpdateOp# @@ -396,9 +396,9 @@ private void notifyChanges(UpdateOpHelper opHelper) { adapter.notifyItemRangeInserted(op.positionStart, op.itemCount); // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#notifyItemRangeInserted# -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#positionStart. -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#itemCount. break; case UpdateOp.MOVE: @@ -407,9 +407,9 @@ private void notifyChanges(UpdateOpHelper opHelper) { adapter.notifyItemMoved(op.positionStart, op.itemCount); // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#notifyItemMoved# -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#positionStart. -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#itemCount. break; case UpdateOp.REMOVE: @@ -418,9 +418,9 @@ private void notifyChanges(UpdateOpHelper opHelper) { adapter.notifyItemRangeRemoved(op.positionStart, op.itemCount); // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#notifyItemRangeRemoved# -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#positionStart. -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#itemCount. break; case UpdateOp.UPDATE: @@ -428,27 +428,27 @@ private void notifyChanges(UpdateOpHelper opHelper) { // ^^^^^^ reference com/airbnb/epoxy/UpdateOp#UPDATE. if (immutableModels && op.payloads != null) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#immutableModels. -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#payloads. adapter.notifyItemRangeChanged(op.positionStart, op.itemCount, // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#notifyItemRangeChanged# -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#positionStart. -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#itemCount. new DiffPayload(op.payloads)); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffPayload#``(). // ^^^^^^^^^^^ reference com/airbnb/epoxy/DiffPayload# -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#payloads. } else { adapter.notifyItemRangeChanged(op.positionStart, op.itemCount); // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#notifyItemRangeChanged# -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#positionStart. -// ^^ reference local26 +// ^^ reference local32 // ^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#itemCount. } break; @@ -456,7 +456,7 @@ private void notifyChanges(UpdateOpHelper opHelper) { throw new IllegalArgumentException("Unknown type: " + op.type); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalArgumentException#``(+1). // ^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalArgumentException# -// ^^ reference local26 +// ^^ reference local32 // ^^^^ reference com/airbnb/epoxy/UpdateOp#type. } } @@ -470,7 +470,7 @@ private UpdateOpHelper buildDiff(UpdateOpHelper updateOpHelper) { // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# // ^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#buildDiff(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^^^^^^^^^ definition local27 +// ^^^^^^^^^^^^^^ definition local33 prepareStateForDiff(); // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#prepareStateForDiff(). @@ -481,37 +481,37 @@ private UpdateOpHelper buildDiff(UpdateOpHelper updateOpHelper) { // the change, this way subsequent operations will use the correct, updated positions. collectRemovals(updateOpHelper); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#collectRemovals(). -// ^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^ reference local33 // Only need to check for insertions if new list is bigger boolean hasInsertions = -// ^^^^^^^^^^^^^ definition local28 +// ^^^^^^^^^^^^^ definition local34 oldStateList.size() - updateOpHelper.getNumRemovals() != currentStateList.size(); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. // ^^^^ reference java/util/ArrayList#size(). -// ^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^ reference local33 // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#getNumRemovals(). // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^ reference java/util/ArrayList#size(). if (hasInsertions) { -// ^^^^^^^^^^^^^ reference local28 +// ^^^^^^^^^^^^^ reference local34 collectInsertions(updateOpHelper); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#collectInsertions(). -// ^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^ reference local33 } collectMoves(updateOpHelper); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#collectMoves(). -// ^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^ reference local33 collectChanges(updateOpHelper); // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#collectChanges(). -// ^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^ reference local33 resetOldState(); // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#resetOldState(). return updateOpHelper; -// ^^^^^^^^^^^^^^ reference local27 +// ^^^^^^^^^^^^^^ reference local33 } private void resetOldState() { @@ -540,119 +540,119 @@ private void prepareStateForDiff() { ArrayList tempList = oldStateList; // ^^^^^^^^^ reference java/util/ArrayList# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^ definition local29 +// ^^^^^^^^ definition local35 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. oldStateList = currentStateList; // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. currentStateList = tempList; // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. -// ^^^^^^^^ reference local29 +// ^^^^^^^^ reference local35 Map tempMap = oldStateMap; // ^^^ reference java/util/Map# // ^^^^ reference java/lang/Long# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^ definition local30 +// ^^^^^^^ definition local36 // ^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateMap. oldStateMap = currentStateMap; // ^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateMap. // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateMap. currentStateMap = tempMap; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateMap. -// ^^^^^^^ reference local30 +// ^^^^^^^ reference local36 // Remove all pairings in the old states so we can tell which of them were removed. The items // that still exist in the new list will be paired when we build the current list state below for (ModelState modelState : oldStateList) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^ definition local31 +// ^^^^^^^^^^ definition local37 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. modelState.pair = null; -// ^^^^^^^^^^ reference local31 +// ^^^^^^^^^^ reference local37 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. } int modelCount = adapter.getCurrentModels().size(); -// ^^^^^^^^^^ definition local32 +// ^^^^^^^^^^ definition local38 // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^^ reference java/util/List#size(). currentStateList.ensureCapacity(modelCount); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^^^^^^^^^^^^ reference java/util/ArrayList#ensureCapacity(). -// ^^^^^^^^^^ reference local32 +// ^^^^^^^^^^ reference local38 for (int i = 0; i < modelCount; i++) { -// ^ definition local33 -// ^ reference local33 -// ^^^^^^^^^^ reference local32 -// ^ reference local33 +// ^ definition local39 +// ^ reference local39 +// ^^^^^^^^^^ reference local38 +// ^ reference local39 currentStateList.add(createStateForPosition(i)); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. // ^^^ reference java/util/ArrayList#add(+1). // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#createStateForPosition(). -// ^ reference local33 +// ^ reference local39 } } private ModelState createStateForPosition(int position) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#createStateForPosition(). -// ^^^^^^^^ definition local34 +// ^^^^^^^^ definition local40 EpoxyModel model = adapter.getCurrentModels().get(position); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local35 +// ^^^^^ definition local41 // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^ reference java/util/List#get(). -// ^^^^^^^^ reference local34 +// ^^^^^^^^ reference local40 model.addedToAdapter = true; -// ^^^^^ reference local35 +// ^^^^^ reference local41 // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#addedToAdapter. ModelState state = ModelState.build(model, position, immutableModels); // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^ definition local36 +// ^^^^^ definition local42 // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# // ^^^^^ reference com/airbnb/epoxy/ModelState#build(). -// ^^^^^ reference local35 -// ^^^^^^^^ reference local34 +// ^^^^^ reference local41 +// ^^^^^^^^ reference local40 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#immutableModels. ModelState previousValue = currentStateMap.put(state.id, state); // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^^^ definition local37 +// ^^^^^^^^^^^^^ definition local43 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateMap. // ^^^ reference java/util/Map#put(). -// ^^^^^ reference local36 +// ^^^^^ reference local42 // ^^ reference com/airbnb/epoxy/ModelState#id. -// ^^^^^ reference local36 +// ^^^^^ reference local42 if (previousValue != null) { -// ^^^^^^^^^^^^^ reference local37 +// ^^^^^^^^^^^^^ reference local43 int previousPosition = previousValue.position; -// ^^^^^^^^^^^^^^^^ definition local38 -// ^^^^^^^^^^^^^ reference local37 +// ^^^^^^^^^^^^^^^^ definition local44 +// ^^^^^^^^^^^^^ reference local43 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. EpoxyModel previousModel = adapter.getCurrentModels().get(previousPosition); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^ definition local39 +// ^^^^^^^^^^^^^ definition local45 // ^^^^^^^ reference com/airbnb/epoxy/DiffHelper#adapter. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#getCurrentModels(). // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^^ reference local38 +// ^^^^^^^^^^^^^^^^ reference local44 throw new IllegalStateException("Two models have the same ID. ID's must be unique!" // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#``(+1). 2:76 // ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException# + " Model at position " + position + ": " + model -// ^^^^^^^^ reference local34 -// ^^^^^ reference local35 +// ^^^^^^^^ reference local40 +// ^^^^^ reference local41 + " Model at position " + previousPosition + ": " + previousModel); -// ^^^^^^^^^^^^^^^^ reference local38 -// ^^^^^^^^^^^^^ reference local39 +// ^^^^^^^^^^^^^^^^ reference local44 +// ^^^^^^^^^^^^^ reference local45 } return state; -// ^^^^^ reference local36 +// ^^^^^ reference local42 } /** @@ -663,44 +663,44 @@ private ModelState createStateForPosition(int position) { private void collectRemovals(UpdateOpHelper helper) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#collectRemovals(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^ definition local40 +// ^^^^^^ definition local46 for (ModelState state : oldStateList) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^ definition local41 +// ^^^^^ definition local47 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. // Update the position of the item to take into account previous removals, // so that future operations will reference the correct position state.position -= helper.getNumRemovals(); -// ^^^^^ reference local41 +// ^^^^^ reference local47 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^ reference local40 +// ^^^^^^ reference local46 // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#getNumRemovals(). // This is our first time going through the list, so we // look up the item with the matching id in the new // list and hold a reference to it so that we can access it quickly in the future state.pair = currentStateMap.get(state.id); -// ^^^^^ reference local41 +// ^^^^^ reference local47 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateMap. // ^^^ reference java/util/Map#get(). -// ^^^^^ reference local41 +// ^^^^^ reference local47 // ^^ reference com/airbnb/epoxy/ModelState#id. if (state.pair != null) { -// ^^^^^ reference local41 +// ^^^^^ reference local47 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. state.pair.pair = state; -// ^^^^^ reference local41 +// ^^^^^ reference local47 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^ reference com/airbnb/epoxy/ModelState#pair. -// ^^^^^ reference local41 +// ^^^^^ reference local47 continue; } helper.remove(state.position); -// ^^^^^^ reference local40 +// ^^^^^^ reference local46 // ^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#remove(). -// ^^^^^ reference local41 +// ^^^^^ reference local47 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } } @@ -713,42 +713,42 @@ private void collectRemovals(UpdateOpHelper helper) { private void collectInsertions(UpdateOpHelper helper) { // ^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#collectInsertions(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^ definition local42 +// ^^^^^^ definition local48 Iterator oldItemIterator = oldStateList.iterator(); // ^^^^^^^^ reference java/util/Iterator# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^^^^^ definition local43 +// ^^^^^^^^^^^^^^^ definition local49 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. // ^^^^^^^^ reference java/util/ArrayList#iterator(). for (ModelState itemToInsert : currentStateList) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^^ definition local44 +// ^^^^^^^^^^^^ definition local50 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. if (itemToInsert.pair != null) { -// ^^^^^^^^^^^^ reference local44 +// ^^^^^^^^^^^^ reference local50 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // Update the position of the next item in the old list to take any insertions into account ModelState nextOldItem = getNextItemWithPair(oldItemIterator); // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^ definition local45 +// ^^^^^^^^^^^ definition local51 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#getNextItemWithPair(). -// ^^^^^^^^^^^^^^^ reference local43 +// ^^^^^^^^^^^^^^^ reference local49 if (nextOldItem != null) { -// ^^^^^^^^^^^ reference local45 +// ^^^^^^^^^^^ reference local51 nextOldItem.position += helper.getNumInsertions(); -// ^^^^^^^^^^^ reference local45 +// ^^^^^^^^^^^ reference local51 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^ reference local42 +// ^^^^^^ reference local48 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#getNumInsertions(). } continue; } helper.add(itemToInsert.position); -// ^^^^^^ reference local42 +// ^^^^^^ reference local48 // ^^^ reference com/airbnb/epoxy/UpdateOpHelper#add(). -// ^^^^^^^^^^^^ reference local44 +// ^^^^^^^^^^^^ reference local50 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } } @@ -759,67 +759,67 @@ private void collectInsertions(UpdateOpHelper helper) { private void collectChanges(UpdateOpHelper helper) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#collectChanges(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^ definition local46 +// ^^^^^^ definition local52 for (ModelState newItem : currentStateList) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^ definition local47 +// ^^^^^^^ definition local53 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. ModelState previousItem = newItem.pair; // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^^ definition local48 -// ^^^^^^^ reference local47 +// ^^^^^^^^^^^^ definition local54 +// ^^^^^^^ reference local53 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. if (previousItem == null) { -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local54 continue; } // We use equals when we know the models are immutable and available, otherwise we have to // rely on the stored hashCode boolean modelChanged; -// ^^^^^^^^^^^^ definition local49 +// ^^^^^^^^^^^^ definition local55 if (immutableModels) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#immutableModels. // Make sure that the old model hasn't changed, otherwise comparing it with the new one // won't be accurate. if (previousItem.model.isDebugValidationEnabled()) { -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local54 // ^^^^^ reference com/airbnb/epoxy/ModelState#model. // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#isDebugValidationEnabled(). previousItem.model -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local54 // ^^^^^ reference com/airbnb/epoxy/ModelState#model. .validateStateHasNotChangedSinceAdded("Model was changed before it could be diffed.", // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#validateStateHasNotChangedSinceAdded(). previousItem.position); -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local54 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } modelChanged = !previousItem.model.equals(newItem.model); -// ^^^^^^^^^^^^ reference local49 -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local55 +// ^^^^^^^^^^^^ reference local54 // ^^^^^ reference com/airbnb/epoxy/ModelState#model. // ^^^^^^ reference com/airbnb/epoxy/EpoxyModel#equals(). -// ^^^^^^^ reference local47 +// ^^^^^^^ reference local53 // ^^^^^ reference com/airbnb/epoxy/ModelState#model. } else { modelChanged = previousItem.hashCode != newItem.hashCode; -// ^^^^^^^^^^^^ reference local49 -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local55 +// ^^^^^^^^^^^^ reference local54 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#hashCode. -// ^^^^^^^ reference local47 +// ^^^^^^^ reference local53 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#hashCode. } if (modelChanged) { -// ^^^^^^^^^^^^ reference local49 +// ^^^^^^^^^^^^ reference local55 helper.update(newItem.position, previousItem.model); -// ^^^^^^ reference local46 +// ^^^^^^ reference local52 // ^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#update(+1). -// ^^^^^^^ reference local47 +// ^^^^^^^ reference local53 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local54 // ^^^^^ reference com/airbnb/epoxy/ModelState#model. } } @@ -831,31 +831,31 @@ private void collectChanges(UpdateOpHelper helper) { private void collectMoves(UpdateOpHelper helper) { // ^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#collectMoves(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper# -// ^^^^^^ definition local50 +// ^^^^^^ definition local56 // This walks through both the new and old list simultaneous and checks for position changes. Iterator oldItemIterator = oldStateList.iterator(); // ^^^^^^^^ reference java/util/Iterator# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^^^^^ definition local51 +// ^^^^^^^^^^^^^^^ definition local57 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#oldStateList. // ^^^^^^^^ reference java/util/ArrayList#iterator(). ModelState nextOldItem = null; // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^^^^ definition local52 +// ^^^^^^^^^^^ definition local58 for (ModelState newItem : currentStateList) { // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^ definition local53 +// ^^^^^^^ definition local59 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#currentStateList. if (newItem.pair == null) { -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // This item was inserted. However, insertions are done at the item's final position, and // aren't smart about inserting at a different position to take future moves into account. // As the old state list is updated to reflect moves, it needs to also consider insertions // affected by those moves in order for the final change set to be correct if (helper.moves.isEmpty()) { -// ^^^^^^ reference local50 +// ^^^^^^ reference local56 // ^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#moves. // ^^^^^^^ reference java/util/List#isEmpty(). // There have been no moves, so the item is still at it's correct position @@ -866,7 +866,7 @@ private void collectMoves(UpdateOpHelper helper) { // (for optimization purposes), but we can create a pair for this item to // track its position in the old list and move it back to its final position if necessary newItem.pairWithSelf(); -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelState#pairWithSelf(). } } @@ -882,129 +882,129 @@ private void collectMoves(UpdateOpHelper helper) { // already iterated through are guaranteed to have their pair // be already in the right spot, which won't be affected by future MOVEs. if (nextOldItem == null) { -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 nextOldItem = getNextItemWithPair(oldItemIterator); -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#getNextItemWithPair(). -// ^^^^^^^^^^^^^^^ reference local51 +// ^^^^^^^^^^^^^^^ reference local57 // We've already iterated through all old items and moved each // item once. However, subsequent moves may have shifted an item out of // its correct space once it was already moved. We finish // iterating through all the new items to ensure everything is still correct if (nextOldItem == null) { -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 nextOldItem = newItem.pair; -// ^^^^^^^^^^^ reference local52 -// ^^^^^^^ reference local53 +// ^^^^^^^^^^^ reference local58 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. } } while (nextOldItem != null) { -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // Make sure the positions are updated to the latest // move operations before we calculate the next move updateItemPosition(newItem.pair, helper.moves); // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#updateItemPosition(). -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. -// ^^^^^^ reference local50 +// ^^^^^^ reference local56 // ^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#moves. updateItemPosition(nextOldItem, helper.moves); // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#updateItemPosition(). -// ^^^^^^^^^^^ reference local52 -// ^^^^^^ reference local50 +// ^^^^^^^^^^^ reference local58 +// ^^^^^^ reference local56 // ^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#moves. // The item is the same and its already in the correct place if (newItem.id == nextOldItem.id && newItem.position == nextOldItem.position) { -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^ reference com/airbnb/epoxy/ModelState#id. -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^ reference com/airbnb/epoxy/ModelState#id. -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. nextOldItem = null; -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 break; } int newItemDistance = newItem.pair.position - newItem.position; -// ^^^^^^^^^^^^^^^ definition local54 -// ^^^^^^^ reference local53 +// ^^^^^^^^^^^^^^^ definition local60 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. int oldItemDistance = nextOldItem.pair.position - nextOldItem.position; -// ^^^^^^^^^^^^^^^ definition local55 -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^^^^^ definition local61 +// ^^^^^^^^^^^ reference local58 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. // Both items are already in the correct position if (newItemDistance == 0 && oldItemDistance == 0) { -// ^^^^^^^^^^^^^^^ reference local54 -// ^^^^^^^^^^^^^^^ reference local55 +// ^^^^^^^^^^^^^^^ reference local60 +// ^^^^^^^^^^^^^^^ reference local61 nextOldItem = null; -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 break; } if (oldItemDistance > newItemDistance) { -// ^^^^^^^^^^^^^^^ reference local55 -// ^^^^^^^^^^^^^^^ reference local54 +// ^^^^^^^^^^^^^^^ reference local61 +// ^^^^^^^^^^^^^^^ reference local60 helper.move(nextOldItem.position, nextOldItem.pair.position); -// ^^^^^^ reference local50 +// ^^^^^^ reference local56 // ^^^^ reference com/airbnb/epoxy/UpdateOpHelper#move(). -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. nextOldItem.position = nextOldItem.pair.position; -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. nextOldItem.lastMoveOp = helper.getNumMoves(); -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState#lastMoveOp. -// ^^^^^^ reference local50 +// ^^^^^^ reference local56 // ^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#getNumMoves(). nextOldItem = getNextItemWithPair(oldItemIterator); -// ^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^ reference local58 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffHelper#getNextItemWithPair(). -// ^^^^^^^^^^^^^^^ reference local51 +// ^^^^^^^^^^^^^^^ reference local57 } else { helper.move(newItem.pair.position, newItem.position); -// ^^^^^^ reference local50 +// ^^^^^^ reference local56 // ^^^^ reference com/airbnb/epoxy/UpdateOpHelper#move(). -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. newItem.pair.position = newItem.position; -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. newItem.pair.lastMoveOp = helper.getNumMoves(); -// ^^^^^^^ reference local53 +// ^^^^^^^ reference local59 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState#lastMoveOp. -// ^^^^^^ reference local50 +// ^^^^^^ reference local56 // ^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOpHelper#getNumMoves(). break; } @@ -1020,64 +1020,64 @@ private void collectMoves(UpdateOpHelper helper) { private void updateItemPosition(ModelState item, List moveOps) { // ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#updateItemPosition(). // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^ definition local56 +// ^^^^ definition local62 // ^^^^ reference java/util/List# // ^^^^^^^^ reference com/airbnb/epoxy/UpdateOp# -// ^^^^^^^ definition local57 +// ^^^^^^^ definition local63 int size = moveOps.size(); -// ^^^^ definition local58 -// ^^^^^^^ reference local57 +// ^^^^ definition local64 +// ^^^^^^^ reference local63 // ^^^^ reference java/util/List#size(). for (int i = item.lastMoveOp; i < size; i++) { -// ^ definition local59 -// ^^^^ reference local56 +// ^ definition local65 +// ^^^^ reference local62 // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState#lastMoveOp. -// ^ reference local59 -// ^^^^ reference local58 -// ^ reference local59 +// ^ reference local65 +// ^^^^ reference local64 +// ^ reference local65 UpdateOp moveOp = moveOps.get(i); // ^^^^^^^^ reference com/airbnb/epoxy/UpdateOp# -// ^^^^^^ definition local60 -// ^^^^^^^ reference local57 +// ^^^^^^ definition local66 +// ^^^^^^^ reference local63 // ^^^ reference java/util/List#get(). -// ^ reference local59 +// ^ reference local65 int fromPosition = moveOp.positionStart; -// ^^^^^^^^^^^^ definition local61 -// ^^^^^^ reference local60 +// ^^^^^^^^^^^^ definition local67 +// ^^^^^^ reference local66 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#positionStart. int toPosition = moveOp.itemCount; -// ^^^^^^^^^^ definition local62 -// ^^^^^^ reference local60 +// ^^^^^^^^^^ definition local68 +// ^^^^^^ reference local66 // ^^^^^^^^^ reference com/airbnb/epoxy/UpdateOp#itemCount. if (item.position > fromPosition && item.position <= toPosition) { -// ^^^^ reference local56 +// ^^^^ reference local62 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^^ reference local61 -// ^^^^ reference local56 +// ^^^^^^^^^^^^ reference local67 +// ^^^^ reference local62 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^ reference local62 +// ^^^^^^^^^^ reference local68 item.position--; -// ^^^^ reference local56 +// ^^^^ reference local62 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } else if (item.position < fromPosition && item.position >= toPosition) { -// ^^^^ reference local56 +// ^^^^ reference local62 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^^^ reference local61 -// ^^^^ reference local56 +// ^^^^^^^^^^^^ reference local67 +// ^^^^ reference local62 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. -// ^^^^^^^^^^ reference local62 +// ^^^^^^^^^^ reference local68 item.position++; -// ^^^^ reference local56 +// ^^^^ reference local62 // ^^^^^^^^ reference com/airbnb/epoxy/ModelState#position. } } item.lastMoveOp = size; -// ^^^^ reference local56 +// ^^^^ reference local62 // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState#lastMoveOp. -// ^^^^ reference local58 +// ^^^^ reference local64 } /** @@ -1090,29 +1090,29 @@ private ModelState getNextItemWithPair(Iterator iterator) { // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/DiffHelper#getNextItemWithPair(). // ^^^^^^^^ reference java/util/Iterator# // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^ definition local63 +// ^^^^^^^^ definition local69 ModelState nextItem = null; // ^^^^^^^^^^ reference com/airbnb/epoxy/ModelState# -// ^^^^^^^^ definition local64 +// ^^^^^^^^ definition local70 while (nextItem == null && iterator.hasNext()) { -// ^^^^^^^^ reference local64 -// ^^^^^^^^ reference local63 +// ^^^^^^^^ reference local70 +// ^^^^^^^^ reference local69 // ^^^^^^^ reference java/util/Iterator#hasNext(). nextItem = iterator.next(); -// ^^^^^^^^ reference local64 -// ^^^^^^^^ reference local63 +// ^^^^^^^^ reference local70 +// ^^^^^^^^ reference local69 // ^^^^ reference java/util/Iterator#next(). if (nextItem.pair == null) { -// ^^^^^^^^ reference local64 +// ^^^^^^^^ reference local70 // ^^^^ reference com/airbnb/epoxy/ModelState#pair. // Skip this one and go on to the next nextItem = null; -// ^^^^^^^^ reference local64 +// ^^^^^^^^ reference local70 } } return nextItem; -// ^^^^^^^^ reference local64 +// ^^^^^^^^ reference local70 } } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java index 1c56545d..cffc6f0b 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java @@ -471,14 +471,14 @@ public synchronized void cancelPendingModelBuild() { private final Runnable buildModelsRunnable = new Runnable() { // ^^^^^^^^ reference java/lang/Runnable# // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#buildModelsRunnable. -// ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#buildModelsRunnable.``#``(). 49:3 +// ^^^^^^^^^^^^^^^^ reference local6 49:3 // ^^^^^^^^ reference java/lang/Runnable# // ^^^^^^^^ reference java/lang/Runnable# -// ^ definition com/airbnb/epoxy/EpoxyController#buildModelsRunnable.``#``(). 1:4 +// ^ definition local6 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void run() { -// ^^^ definition com/airbnb/epoxy/EpoxyController#buildModelsRunnable.``#run(). +// ^^^ definition local7 // Do this first to mark the controller as being in the model building process. threadBuildingModels = Thread.currentThread(); // ^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#threadBuildingModels. @@ -515,7 +515,7 @@ public void run() { // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#buildModels(). } catch (Throwable throwable) { // ^^^^^^^^^ reference java/lang/Throwable# -// ^^^^^^^^^ definition local5 +// ^^^^^^^^^ definition local8 timer.stop(); // ^^^^^ reference com/airbnb/epoxy/EpoxyController#timer. // ^^^^ reference com/airbnb/epoxy/Timer#stop(). @@ -528,7 +528,7 @@ public void run() { stagedModel = null; // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#stagedModel. throw throwable; -// ^^^^^^^^^ reference local5 +// ^^^^^^^^^ reference local8 } addCurrentlyStagedModelIfExists(); @@ -571,12 +571,12 @@ public void run() { private int getExpectedModelCount() { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#getExpectedModelCount(). int currentModelCount = adapter.getItemCount(); -// ^^^^^^^^^^^^^^^^^ definition local6 +// ^^^^^^^^^^^^^^^^^ definition local9 // ^^^^^^^ reference com/airbnb/epoxy/EpoxyController#adapter. // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#getItemCount(). return currentModelCount != 0 ? currentModelCount : 25; -// ^^^^^^^^^^^^^^^^^ reference local6 -// ^^^^^^^^^^^^^^^^^ reference local6 +// ^^^^^^^^^^^^^^^^^ reference local9 +// ^^^^^^^^^^^^^^^^^ reference local9 } /** @@ -598,26 +598,26 @@ private int getExpectedModelCount() { int getFirstIndexOfModelInBuildingList(EpoxyModel model) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#getFirstIndexOfModelInBuildingList(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local7 +// ^^^^^ definition local10 assertIsBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertIsBuildingModels(). int size = modelsBeingBuilt.size(); -// ^^^^ definition local8 +// ^^^^ definition local11 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^^ reference java/util/ArrayList#size(). for (int i = 0; i < size; i++) { -// ^ definition local9 -// ^ reference local9 -// ^^^^ reference local8 -// ^ reference local9 +// ^ definition local12 +// ^ reference local12 +// ^^^^ reference local11 +// ^ reference local12 if (modelsBeingBuilt.get(i) == model) { // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local9 -// ^^^^^ reference local7 +// ^ reference local12 +// ^^^^^ reference local10 return i; -// ^ reference local9 +// ^ reference local12 } } @@ -627,39 +627,39 @@ int getFirstIndexOfModelInBuildingList(EpoxyModel model) { boolean isModelAddedMultipleTimes(EpoxyModel model) { // ^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#isModelAddedMultipleTimes(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local10 +// ^^^^^ definition local13 assertIsBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertIsBuildingModels(). int modelCount = 0; -// ^^^^^^^^^^ definition local11 +// ^^^^^^^^^^ definition local14 int size = modelsBeingBuilt.size(); -// ^^^^ definition local12 +// ^^^^ definition local15 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^^ reference java/util/ArrayList#size(). for (int i = 0; i < size; i++) { -// ^ definition local13 -// ^ reference local13 -// ^^^^ reference local12 -// ^ reference local13 +// ^ definition local16 +// ^ reference local16 +// ^^^^ reference local15 +// ^ reference local16 if (modelsBeingBuilt.get(i) == model) { // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^ reference java/util/ArrayList#get(). -// ^ reference local13 -// ^^^^^ reference local10 +// ^ reference local16 +// ^^^^^ reference local13 modelCount++; -// ^^^^^^^^^^ reference local11 +// ^^^^^^^^^^ reference local14 } } return modelCount > 1; -// ^^^^^^^^^^ reference local11 +// ^^^^^^^^^^ reference local14 } void addAfterInterceptorCallback(ModelInterceptorCallback callback) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#addAfterInterceptorCallback(). // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback# -// ^^^^^^^^ definition local14 +// ^^^^^^^^ definition local17 assertIsBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertIsBuildingModels(). @@ -674,7 +674,7 @@ void addAfterInterceptorCallback(ModelInterceptorCallback callback) { modelInterceptorCallbacks.add(callback); // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelInterceptorCallbacks. // ^^^ reference java/util/List#add(). -// ^^^^^^^^ reference local14 +// ^^^^^^^^ reference local17 } /** @@ -686,11 +686,11 @@ interface ModelInterceptorCallback { void onInterceptorsStarted(EpoxyController controller); // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback#onInterceptorsStarted(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local15 +// ^^^^^^^^^^ definition local18 void onInterceptorsFinished(EpoxyController controller); // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback#onInterceptorsFinished(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local16 +// ^^^^^^^^^^ definition local19 } private void runInterceptors() { @@ -702,10 +702,10 @@ private void runInterceptors() { // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelInterceptorCallbacks. for (ModelInterceptorCallback callback : modelInterceptorCallbacks) { // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback# -// ^^^^^^^^ definition local17 +// ^^^^^^^^ definition local20 // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelInterceptorCallbacks. callback.onInterceptorsStarted(this); -// ^^^^^^^^ reference local17 +// ^^^^^^^^ reference local20 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback#onInterceptorsStarted(). // ^^^^ reference com/airbnb/epoxy/EpoxyController#this. } @@ -717,10 +717,10 @@ private void runInterceptors() { for (Interceptor interceptor : interceptors) { // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#Interceptor# -// ^^^^^^^^^^^ definition local18 +// ^^^^^^^^^^^ definition local21 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#interceptors. interceptor.intercept(modelsBeingBuilt); -// ^^^^^^^^^^^ reference local18 +// ^^^^^^^^^^^ reference local21 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#Interceptor#intercept(). // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. } @@ -733,10 +733,10 @@ private void runInterceptors() { // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelInterceptorCallbacks. for (ModelInterceptorCallback callback : modelInterceptorCallbacks) { // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback# -// ^^^^^^^^ definition local19 +// ^^^^^^^^ definition local22 // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelInterceptorCallbacks. callback.onInterceptorsFinished(this); -// ^^^^^^^^ reference local19 +// ^^^^^^^^ reference local22 // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback#onInterceptorsFinished(). // ^^^^ reference com/airbnb/epoxy/EpoxyController#this. } @@ -768,7 +768,7 @@ public interface Interceptor { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ definition local20 +// ^^^^^^ definition local23 } /** @@ -783,11 +783,11 @@ public void addInterceptor(@NonNull Interceptor interceptor) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#addInterceptor(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#Interceptor# -// ^^^^^^^^^^^ definition local21 +// ^^^^^^^^^^^ definition local24 interceptors.add(interceptor); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#interceptors. // ^^^ reference java/util/List#add(). -// ^^^^^^^^^^^ reference local21 +// ^^^^^^^^^^^ reference local24 } /** Remove an interceptor that was added with {@link #addInterceptor(Interceptor)}. */ @@ -795,11 +795,11 @@ public void removeInterceptor(@NonNull Interceptor interceptor) { // ^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#removeInterceptor(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#Interceptor# -// ^^^^^^^^^^^ definition local22 +// ^^^^^^^^^^^ definition local25 interceptors.remove(interceptor); // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#interceptors. // ^^^^^^ reference java/util/List#remove(). -// ^^^^^^^^^^^ reference local22 +// ^^^^^^^^^^^ reference local25 } /** @@ -847,9 +847,9 @@ public void add(@NonNull EpoxyModel model) { // ^^^ definition com/airbnb/epoxy/EpoxyController#add(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local23 +// ^^^^^ definition local26 model.addTo(this); -// ^^^^^ reference local23 +// ^^^^^ reference local26 // ^^^^^ reference com/airbnb/epoxy/EpoxyModel#addTo(). // ^^^^ reference com/airbnb/epoxy/EpoxyController#this. } @@ -862,22 +862,22 @@ protected void add(@NonNull EpoxyModel... modelsToAdd) { // ^^^ definition com/airbnb/epoxy/EpoxyController#add(+1). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^ definition local24 +// ^^^^^^^^^^^ definition local27 modelsBeingBuilt.ensureCapacity(modelsBeingBuilt.size() + modelsToAdd.length); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^^^^^^^^^^^^ reference java/util/ArrayList#ensureCapacity(). // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^^ reference java/util/ArrayList#size(). -// ^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^^ reference local27 // ^^^^^^ reference length. for (EpoxyModel model : modelsToAdd) { // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local25 -// ^^^^^^^^^^^ reference local24 +// ^^^^^ definition local28 +// ^^^^^^^^^^^ reference local27 add(model); // ^^^ reference com/airbnb/epoxy/EpoxyController#add(). -// ^^^^^ reference local25 +// ^^^^^ reference local28 } } @@ -890,22 +890,22 @@ protected void add(@NonNull List> modelsToAdd) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^ definition local26 +// ^^^^^^^^^^^ definition local29 modelsBeingBuilt.ensureCapacity(modelsBeingBuilt.size() + modelsToAdd.size()); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^^^^^^^^^^^^ reference java/util/ArrayList#ensureCapacity(). // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^^ reference java/util/ArrayList#size(). -// ^^^^^^^^^^^ reference local26 +// ^^^^^^^^^^^ reference local29 // ^^^^ reference java/util/List#size(). for (EpoxyModel model : modelsToAdd) { // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local27 -// ^^^^^^^^^^^ reference local26 +// ^^^^^ definition local30 +// ^^^^^^^^^^^ reference local29 add(model); // ^^^ reference com/airbnb/epoxy/EpoxyController#add(). -// ^^^^^ reference local27 +// ^^^^^ reference local30 } } @@ -916,12 +916,12 @@ protected void add(@NonNull List> modelsToAdd) { void addInternal(EpoxyModel modelToAdd) { // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#addInternal(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^ definition local28 +// ^^^^^^^^^^ definition local31 assertIsBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertIsBuildingModels(). if (modelToAdd.hasDefaultId()) { -// ^^^^^^^^^^ reference local28 +// ^^^^^^^^^^ reference local31 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#hasDefaultId(). throw new IllegalEpoxyUsage( // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/IllegalEpoxyUsage#``(). 2:68 @@ -931,7 +931,7 @@ void addInternal(EpoxyModel modelToAdd) { } if (!modelToAdd.isShown()) { -// ^^^^^^^^^^ reference local28 +// ^^^^^^^^^^ reference local31 // ^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#isShown(). throw new IllegalEpoxyUsage( // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/IllegalEpoxyUsage#``(). 2:33 @@ -944,14 +944,14 @@ void addInternal(EpoxyModel modelToAdd) { // In that case we may have a previously staged model that still needs to be added. clearModelFromStaging(modelToAdd); // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#clearModelFromStaging(). -// ^^^^^^^^^^ reference local28 +// ^^^^^^^^^^ reference local31 modelToAdd.controllerToStageTo = null; -// ^^^^^^^^^^ reference local28 +// ^^^^^^^^^^ reference local31 // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#controllerToStageTo. modelsBeingBuilt.add(modelToAdd); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#modelsBeingBuilt. // ^^^ reference com/airbnb/epoxy/ModelList#add(). -// ^^^^^^^^^^ reference local28 +// ^^^^^^^^^^ reference local31 } /** @@ -967,9 +967,9 @@ void addInternal(EpoxyModel modelToAdd) { void setStagedModel(EpoxyModel model) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setStagedModel(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local29 +// ^^^^^ definition local32 if (model != stagedModel) { -// ^^^^^ reference local29 +// ^^^^^ reference local32 // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#stagedModel. addCurrentlyStagedModelIfExists(); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#addCurrentlyStagedModelIfExists(). @@ -977,7 +977,7 @@ void setStagedModel(EpoxyModel model) { stagedModel = model; // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#stagedModel. -// ^^^^^ reference local29 +// ^^^^^ reference local32 } void addCurrentlyStagedModelIfExists() { @@ -996,10 +996,10 @@ void addCurrentlyStagedModelIfExists() { void clearModelFromStaging(EpoxyModel model) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#clearModelFromStaging(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local30 +// ^^^^^ definition local33 if (stagedModel != model) { // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#stagedModel. -// ^^^^^ reference local30 +// ^^^^^ reference local33 addCurrentlyStagedModelIfExists(); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#addCurrentlyStagedModelIfExists(). } @@ -1020,7 +1020,7 @@ private void filterDuplicatesIfNeeded(List> models) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#filterDuplicatesIfNeeded(). // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ definition local31 +// ^^^^^^ definition local34 if (!filterDuplicates) { // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#filterDuplicates. return; @@ -1032,56 +1032,56 @@ private void filterDuplicatesIfNeeded(List> models) { Set modelIds = new HashSet<>(models.size()); // ^^^ reference java/util/Set# // ^^^^ reference java/lang/Long# -// ^^^^^^^^ definition local32 +// ^^^^^^^^ definition local35 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/util/HashSet#``(+3). // ^^^^^^^ reference java/util/HashSet# -// ^^^^^^ reference local31 +// ^^^^^^ reference local34 // ^^^^ reference java/util/List#size(). ListIterator> modelIterator = models.listIterator(); // ^^^^^^^^^^^^ reference java/util/ListIterator# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^ definition local33 -// ^^^^^^ reference local31 +// ^^^^^^^^^^^^^ definition local36 +// ^^^^^^ reference local34 // ^^^^^^^^^^^^ reference java/util/List#listIterator(). while (modelIterator.hasNext()) { -// ^^^^^^^^^^^^^ reference local33 +// ^^^^^^^^^^^^^ reference local36 // ^^^^^^^ reference java/util/ListIterator#hasNext(). EpoxyModel model = modelIterator.next(); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local34 -// ^^^^^^^^^^^^^ reference local33 +// ^^^^^ definition local37 +// ^^^^^^^^^^^^^ reference local36 // ^^^^ reference java/util/ListIterator#next(). if (!modelIds.add(model.id())) { -// ^^^^^^^^ reference local32 +// ^^^^^^^^ reference local35 // ^^^ reference java/util/Set#add(). -// ^^^^^ reference local34 +// ^^^^^ reference local37 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). int indexOfDuplicate = modelIterator.previousIndex(); -// ^^^^^^^^^^^^^^^^ definition local35 -// ^^^^^^^^^^^^^ reference local33 +// ^^^^^^^^^^^^^^^^ definition local38 +// ^^^^^^^^^^^^^ reference local36 // ^^^^^^^^^^^^^ reference java/util/ListIterator#previousIndex(). modelIterator.remove(); -// ^^^^^^^^^^^^^ reference local33 +// ^^^^^^^^^^^^^ reference local36 // ^^^^^^ reference java/util/ListIterator#remove(). int indexOfOriginal = findPositionOfDuplicate(models, model); -// ^^^^^^^^^^^^^^^ definition local36 +// ^^^^^^^^^^^^^^^ definition local39 // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#findPositionOfDuplicate(). -// ^^^^^^ reference local31 -// ^^^^^ reference local34 +// ^^^^^^ reference local34 +// ^^^^^ reference local37 EpoxyModel originalModel = models.get(indexOfOriginal); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^ definition local37 -// ^^^^^^ reference local31 +// ^^^^^^^^^^^^^ definition local40 +// ^^^^^^ reference local34 // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^^^^^^ reference local36 +// ^^^^^^^^^^^^^^^ reference local39 if (indexOfDuplicate <= indexOfOriginal) { -// ^^^^^^^^^^^^^^^^ reference local35 -// ^^^^^^^^^^^^^^^ reference local36 +// ^^^^^^^^^^^^^^^^ reference local38 +// ^^^^^^^^^^^^^^^ reference local39 // Adjust for the original positions of the models before the duplicate was removed indexOfOriginal++; -// ^^^^^^^^^^^^^^^ reference local36 +// ^^^^^^^^^^^^^^^ reference local39 } onExceptionSwallowed( @@ -1090,11 +1090,11 @@ private void filterDuplicatesIfNeeded(List> models) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/IllegalEpoxyUsage#``(). 2:81 // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/IllegalEpoxyUsage# + "\nOriginal has position " + indexOfOriginal + ":\n" + originalModel -// ^^^^^^^^^^^^^^^ reference local36 -// ^^^^^^^^^^^^^ reference local37 +// ^^^^^^^^^^^^^^^ reference local39 +// ^^^^^^^^^^^^^ reference local40 + "\nDuplicate has position " + indexOfDuplicate + ":\n" + model) -// ^^^^^^^^^^^^^^^^ reference local35 -// ^^^^^ reference local34 +// ^^^^^^^^^^^^^^^^ reference local38 +// ^^^^^ reference local37 ); } } @@ -1108,31 +1108,31 @@ private int findPositionOfDuplicate(List> models, EpoxyModel du // ^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#findPositionOfDuplicate(). // ^^^^ reference java/util/List# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^ definition local38 +// ^^^^^^ definition local41 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^ definition local39 +// ^^^^^^^^^^^^^^ definition local42 int size = models.size(); -// ^^^^ definition local40 -// ^^^^^^ reference local38 +// ^^^^ definition local43 +// ^^^^^^ reference local41 // ^^^^ reference java/util/List#size(). for (int i = 0; i < size; i++) { -// ^ definition local41 -// ^ reference local41 -// ^^^^ reference local40 -// ^ reference local41 +// ^ definition local44 +// ^ reference local44 +// ^^^^ reference local43 +// ^ reference local44 EpoxyModel model = models.get(i); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local42 -// ^^^^^^ reference local38 +// ^^^^^ definition local45 +// ^^^^^^ reference local41 // ^^^ reference java/util/List#get(). -// ^ reference local41 +// ^ reference local44 if (model.id() == duplicateModel.id()) { -// ^^^^^ reference local42 +// ^^^^^ reference local45 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). -// ^^^^^^^^^^^^^^ reference local39 +// ^^^^^^^^^^^^^^ reference local42 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). return i; -// ^ reference local41 +// ^ reference local44 } } @@ -1153,11 +1153,11 @@ private int findPositionOfDuplicate(List> models, EpoxyModel du */ public void setFilterDuplicates(boolean filterDuplicates) { // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setFilterDuplicates(). -// ^^^^^^^^^^^^^^^^ definition local43 +// ^^^^^^^^^^^^^^^^ definition local46 this.filterDuplicates = filterDuplicates; // ^^^^ reference com/airbnb/epoxy/EpoxyController#this. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#filterDuplicates. -// ^^^^^^^^^^^^^^^^ reference local43 +// ^^^^^^^^^^^^^^^^ reference local46 } public boolean isDuplicateFilteringEnabled() { @@ -1173,11 +1173,11 @@ public boolean isDuplicateFilteringEnabled() { */ public static void setGlobalDuplicateFilteringDefault(boolean filterDuplicatesByDefault) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setGlobalDuplicateFilteringDefault(). -// ^^^^^^^^^^^^^^^^^^^^^^^^^ definition local44 +// ^^^^^^^^^^^^^^^^^^^^^^^^^ definition local47 EpoxyController.filterDuplicatesDefault = filterDuplicatesByDefault; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#filterDuplicatesDefault. -// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local44 +// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local47 } /** @@ -1193,12 +1193,12 @@ public static void setGlobalDuplicateFilteringDefault(boolean filterDuplicatesBy */ public void setDebugLoggingEnabled(boolean enabled) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setDebugLoggingEnabled(). -// ^^^^^^^ definition local45 +// ^^^^^^^ definition local48 assertNotBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertNotBuildingModels(). if (enabled) { -// ^^^^^^^ reference local45 +// ^^^^^^^ reference local48 timer = new DebugTimer(getClass().getSimpleName()); // ^^^^^ reference com/airbnb/epoxy/EpoxyController#timer. // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DebugTimer#``(). @@ -1247,11 +1247,11 @@ public boolean isDebugLoggingEnabled() { */ public static void setGlobalDebugLoggingEnabled(boolean globalDebugLoggingEnabled) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setGlobalDebugLoggingEnabled(). -// ^^^^^^^^^^^^^^^^^^^^^^^^^ definition local46 +// ^^^^^^^^^^^^^^^^^^^^^^^^^ definition local49 EpoxyController.globalDebugLoggingEnabled = globalDebugLoggingEnabled; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#globalDebugLoggingEnabled. -// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local46 +// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local49 } /** @@ -1270,16 +1270,16 @@ public static void setGlobalDebugLoggingEnabled(boolean globalDebugLoggingEnable */ public void moveModel(int fromPosition, int toPosition) { // ^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#moveModel(). -// ^^^^^^^^^^^^ definition local47 -// ^^^^^^^^^^ definition local48 +// ^^^^^^^^^^^^ definition local50 +// ^^^^^^^^^^ definition local51 assertNotBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertNotBuildingModels(). adapter.moveModel(fromPosition, toPosition); // ^^^^^^^ reference com/airbnb/epoxy/EpoxyController#adapter. // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#moveModel(). -// ^^^^^^^^^^^^ reference local47 -// ^^^^^^^^^^ reference local48 +// ^^^^^^^^^^^^ reference local50 +// ^^^^^^^^^^ reference local51 requestDelayedModelBuild(500); // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#requestDelayedModelBuild(). @@ -1296,14 +1296,14 @@ public void moveModel(int fromPosition, int toPosition) { */ public void notifyModelChanged(int position) { // ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#notifyModelChanged(). -// ^^^^^^^^ definition local49 +// ^^^^^^^^ definition local52 assertNotBuildingModels(); // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#assertNotBuildingModels(). adapter.notifyModelChanged(position); // ^^^^^^^ reference com/airbnb/epoxy/EpoxyController#adapter. // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#notifyModelChanged(). -// ^^^^^^^^ reference local49 +// ^^^^^^^^ reference local52 } @@ -1324,22 +1324,22 @@ public void onSaveInstanceState(@NonNull Bundle outState) { // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onSaveInstanceState(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^ reference _root_/ -// ^^^^^^^^ definition local50 +// ^^^^^^^^ definition local53 adapter.onSaveInstanceState(outState); // ^^^^^^^ reference com/airbnb/epoxy/EpoxyController#adapter. // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onSaveInstanceState(). -// ^^^^^^^^ reference local50 +// ^^^^^^^^ reference local53 } public void onRestoreInstanceState(@Nullable Bundle inState) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onRestoreInstanceState(). // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^ reference _root_/ -// ^^^^^^^ definition local51 +// ^^^^^^^ definition local54 adapter.onRestoreInstanceState(inState); // ^^^^^^^ reference com/airbnb/epoxy/EpoxyController#adapter. // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#onRestoreInstanceState(). -// ^^^^^^^ reference local51 +// ^^^^^^^ reference local54 } /** @@ -1367,11 +1367,11 @@ public SpanSizeLookup getSpanSizeLookup() { */ public void setSpanCount(int spanCount) { // ^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setSpanCount(). -// ^^^^^^^^^ definition local52 +// ^^^^^^^^^ definition local55 adapter.setSpanCount(spanCount); // ^^^^^^^ reference com/airbnb/epoxy/EpoxyController#adapter. // ^^^^^^^^^^^^ reference com/airbnb/epoxy/BaseEpoxyAdapter#setSpanCount(). -// ^^^^^^^^^ reference local52 +// ^^^^^^^^^ reference local55 } public int getSpanCount() { @@ -1404,12 +1404,12 @@ protected void onExceptionSwallowed(@NonNull RuntimeException exception) { // ^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onExceptionSwallowed(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference java/lang/RuntimeException# -// ^^^^^^^^^ definition local53 +// ^^^^^^^^^ definition local56 globalExceptionHandler.onException(this, exception); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#globalExceptionHandler. // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ExceptionHandler#onException(). // ^^^^ reference com/airbnb/epoxy/EpoxyController#this. -// ^^^^^^^^^ reference local53 +// ^^^^^^^^^ reference local56 } /** @@ -1420,22 +1420,22 @@ protected void onExceptionSwallowed(@NonNull RuntimeException exception) { // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ExceptionHandler# // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#globalExceptionHandler. new ExceptionHandler() { -// ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#globalExceptionHandler.``#``(). 7:7 +// ^^^^^^^^^^^^^^^^^^^^^^^^ reference local58 7:7 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ExceptionHandler# // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ExceptionHandler# -// ^ definition com/airbnb/epoxy/EpoxyController#globalExceptionHandler.``#``(). 2:3 +// ^ definition local58 2:3 @Override // ^^^^^^^^ reference java/lang/Override# public void onException(@NonNull EpoxyController controller, -// ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#globalExceptionHandler.``#onException(). +// ^^^^^^^^^^^ definition local59 // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local54 +// ^^^^^^^^^^ definition local60 @NonNull RuntimeException exception) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference java/lang/RuntimeException# -// ^^^^^^^^^ definition local55 +// ^^^^^^^^^ definition local61 // Ignore exceptions as the default } }; @@ -1459,11 +1459,11 @@ public static void setGlobalExceptionHandler( @NonNull ExceptionHandler globalExceptionHandler) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ExceptionHandler# -// ^^^^^^^^^^^^^^^^^^^^^^ definition local56 +// ^^^^^^^^^^^^^^^^^^^^^^ definition local62 EpoxyController.globalExceptionHandler = globalExceptionHandler; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#globalExceptionHandler. -// ^^^^^^^^^^^^^^^^^^^^^^ reference local56 +// ^^^^^^^^^^^^^^^^^^^^^^ reference local62 } public interface ExceptionHandler { @@ -1481,16 +1481,16 @@ public interface ExceptionHandler { // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#ExceptionHandler#onException(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local57 +// ^^^^^^^^^^ definition local63 // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference java/lang/RuntimeException# -// ^^^^^^^^^ definition local58 +// ^^^^^^^^^ definition local64 } void onAttachedToRecyclerViewInternal(RecyclerView recyclerView) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onAttachedToRecyclerViewInternal(). // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local59 +// ^^^^^^^^^^^^ definition local65 recyclerViewAttachCount++; // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#recyclerViewAttachCount. @@ -1501,14 +1501,14 @@ void onAttachedToRecyclerViewInternal(RecyclerView recyclerView) { // ^^^^^^^^ reference com/airbnb/epoxy/MainThreadExecutor#INSTANCE. // ^^^^^^^ reference com/airbnb/epoxy/HandlerExecutor#handler. // ^^^^^^^^^^^ reference postDelayed# -// ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#onAttachedToRecyclerViewInternal().``#``(). 19:7 +// ^^^^^^^^^^^^^^^^ reference local67 19:7 // ^^^^^^^^ reference java/lang/Runnable# // ^^^^^^^^ reference java/lang/Runnable# -// ^ definition com/airbnb/epoxy/EpoxyController#onAttachedToRecyclerViewInternal().``#``(). 1:4 +// ^ definition local67 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void run() { -// ^^^ definition com/airbnb/epoxy/EpoxyController#onAttachedToRecyclerViewInternal().``#run(). +// ^^^ definition local68 // Only warn if there are still multiple adapters attached after a delay, to allow for // a grace period if (recyclerViewAttachCount > 1) { @@ -1535,18 +1535,18 @@ public void run() { onAttachedToRecyclerView(recyclerView); // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#onAttachedToRecyclerView(). -// ^^^^^^^^^^^^ reference local59 +// ^^^^^^^^^^^^ reference local65 } void onDetachedFromRecyclerViewInternal(RecyclerView recyclerView) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onDetachedFromRecyclerViewInternal(). // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local60 +// ^^^^^^^^^^^^ definition local69 recyclerViewAttachCount--; // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#recyclerViewAttachCount. onDetachedFromRecyclerView(recyclerView); // ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#onDetachedFromRecyclerView(). -// ^^^^^^^^^^^^ reference local60 +// ^^^^^^^^^^^^ reference local69 } /** Called when the controller's adapter is attach to a recyclerview. */ @@ -1554,7 +1554,7 @@ protected void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onAttachedToRecyclerView(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local61 +// ^^^^^^^^^^^^ definition local70 } @@ -1563,7 +1563,7 @@ protected void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onDetachedFromRecyclerView(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local62 +// ^^^^^^^^^^^^ definition local71 } @@ -1604,16 +1604,16 @@ protected void onModelBound(@NonNull EpoxyViewHolder holder, @NonNull EpoxyModel // ^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onModelBound(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local63 +// ^^^^^^ definition local72 // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^ definition local64 +// ^^^^^^^^^^ definition local73 int position, -// ^^^^^^^^ definition local65 +// ^^^^^^^^ definition local74 @Nullable EpoxyModel previouslyBoundModel) { // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^^^^^^^ definition local66 +// ^^^^^^^^^^^^^^^^^^^^ definition local75 } /** @@ -1625,10 +1625,10 @@ protected void onModelUnbound(@NonNull EpoxyViewHolder holder, @NonNull EpoxyMod // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onModelUnbound(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local67 +// ^^^^^^ definition local76 // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local68 +// ^^^^^ definition local77 } @@ -1642,11 +1642,11 @@ protected void onViewAttachedToWindow(@NonNull EpoxyViewHolder holder, // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onViewAttachedToWindow(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local69 +// ^^^^^^ definition local78 @NonNull EpoxyModel model) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local70 +// ^^^^^ definition local79 } @@ -1660,11 +1660,11 @@ protected void onViewDetachedFromWindow(@NonNull EpoxyViewHolder holder, // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#onViewDetachedFromWindow(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local71 +// ^^^^^^ definition local80 @NonNull EpoxyModel model) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local72 +// ^^^^^ definition local81 } @@ -1683,7 +1683,7 @@ public void setupStickyHeaderView(@NotNull View stickyHeader) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#setupStickyHeaderView(). // ^^^^^^^ reference org/jetbrains/annotations/NotNull# // ^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local73 +// ^^^^^^^^^^^^ definition local82 // no-op } @@ -1700,7 +1700,7 @@ public void teardownStickyHeaderView(@NotNull View stickyHeader) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#teardownStickyHeaderView(). // ^^^^^^^ reference org/jetbrains/annotations/NotNull# // ^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local74 +// ^^^^^^^^^^^^ definition local83 // no-op } @@ -1715,7 +1715,7 @@ public void teardownStickyHeaderView(@NotNull View stickyHeader) { ^^^^^^^^ reference java/lang/Override# public boolean isStickyHeader(int position) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyController#isStickyHeader(). -// ^^^^^^^^ definition local75 +// ^^^^^^^^ definition local84 return false; } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyControllerAdapter.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyControllerAdapter.java index 36d3e361..f960fbfe 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyControllerAdapter.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyControllerAdapter.java @@ -589,45 +589,45 @@ void notifyModelChanged(int position) { @Override // ^^^^^^^^ reference java/lang/Override# public boolean areItemsTheSame(EpoxyModel oldItem, EpoxyModel newItem) { -// ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyControllerAdapter#ITEM_CALLBACK.``#areItemsTheSame(). +// ^^^^^^^^^^^^^^^ definition local36 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local35 +// ^^^^^^^ definition local37 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local36 +// ^^^^^^^ definition local38 return oldItem.id() == newItem.id(); -// ^^^^^^^ reference local35 +// ^^^^^^^ reference local37 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). -// ^^^^^^^ reference local36 +// ^^^^^^^ reference local38 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). } @Override // ^^^^^^^^ reference java/lang/Override# public boolean areContentsTheSame(EpoxyModel oldItem, EpoxyModel newItem) { -// ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyControllerAdapter#ITEM_CALLBACK.``#areContentsTheSame(). +// ^^^^^^^^^^^^^^^^^^ definition local39 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local37 +// ^^^^^^^ definition local40 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local38 +// ^^^^^^^ definition local41 return oldItem.equals(newItem); -// ^^^^^^^ reference local37 +// ^^^^^^^ reference local40 // ^^^^^^ reference com/airbnb/epoxy/EpoxyModel#equals(). -// ^^^^^^^ reference local38 +// ^^^^^^^ reference local41 } @Override // ^^^^^^^^ reference java/lang/Override# public Object getChangePayload(EpoxyModel oldItem, EpoxyModel newItem) { // ^^^^^^ reference java/lang/Object# -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyControllerAdapter#ITEM_CALLBACK.``#getChangePayload(). +// ^^^^^^^^^^^^^^^^ definition local42 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local39 +// ^^^^^^^ definition local43 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^ definition local40 +// ^^^^^^^ definition local44 return new DiffPayload(oldItem); // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/DiffPayload#``(+1). // ^^^^^^^^^^^ reference com/airbnb/epoxy/DiffPayload# -// ^^^^^^^ reference local39 +// ^^^^^^^ reference local43 } }; @@ -639,11 +639,11 @@ public Object getChangePayload(EpoxyModel oldItem, EpoxyModel newItem) { ^^^^^^^^ reference java/lang/Override# public boolean isStickyHeader(int position) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyControllerAdapter#isStickyHeader(). -// ^^^^^^^^ definition local41 +// ^^^^^^^^ definition local45 return epoxyController.isStickyHeader(position); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#epoxyController. // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#isStickyHeader(). -// ^^^^^^^^ reference local41 +// ^^^^^^^^ reference local45 } /** @@ -656,11 +656,11 @@ public void setupStickyHeaderView(@NotNull View stickyHeader) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyControllerAdapter#setupStickyHeaderView(). // ^^^^^^^ reference org/jetbrains/annotations/NotNull# // ^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local42 +// ^^^^^^^^^^^^ definition local46 epoxyController.setupStickyHeaderView(stickyHeader); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#epoxyController. // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#setupStickyHeaderView(). -// ^^^^^^^^^^^^ reference local42 +// ^^^^^^^^^^^^ reference local46 } /** @@ -673,10 +673,10 @@ public void teardownStickyHeaderView(@NotNull View stickyHeader) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyControllerAdapter#teardownStickyHeaderView(). // ^^^^^^^ reference org/jetbrains/annotations/NotNull# // ^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local43 +// ^^^^^^^^^^^^ definition local47 epoxyController.teardownStickyHeaderView(stickyHeader); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#epoxyController. // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#teardownStickyHeaderView(). -// ^^^^^^^^^^^^ reference local43 +// ^^^^^^^^^^^^ reference local47 } } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModel.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModel.java index 072412ba..8a1dfa9b 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModel.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModel.java @@ -711,16 +711,16 @@ protected final void addWithDebugValidation(@NonNull EpoxyController controller) controller.addAfterInterceptorCallback(new ModelInterceptorCallback() { // ^^^^^^^^^^ reference local36 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#addAfterInterceptorCallback(). -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#addWithDebugValidation().``#``(). 11:7 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local38 11:7 // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback# // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#ModelInterceptorCallback# -// ^ definition com/airbnb/epoxy/EpoxyModel#addWithDebugValidation().``#``(). 1:4 +// ^ definition local38 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onInterceptorsStarted(EpoxyController controller) { -// ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#addWithDebugValidation().``#onInterceptorsStarted(). +// ^^^^^^^^^^^^^^^^^^^^^ definition local39 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local37 +// ^^^^^^^^^^ definition local40 currentlyInInterceptors = true; // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#currentlyInInterceptors. } @@ -728,9 +728,9 @@ public void onInterceptorsStarted(EpoxyController controller) { @Override // ^^^^^^^^ reference java/lang/Override# public void onInterceptorsFinished(EpoxyController controller) { -// ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#addWithDebugValidation().``#onInterceptorsFinished(). +// ^^^^^^^^^^^^^^^^^^^^^^ definition local41 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local38 +// ^^^^^^^^^^ definition local42 hashCodeWhenAdded = EpoxyModel.this.hashCode(); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#hashCodeWhenAdded. // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# @@ -790,28 +790,28 @@ private static int getPosition(@NonNull EpoxyController controller, // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#getPosition(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController# -// ^^^^^^^^^^ definition local39 +// ^^^^^^^^^^ definition local43 @NonNull EpoxyModel model) { // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local40 +// ^^^^^ definition local44 // If the model was added to multiple controllers, or was removed from the controller and then // modified, this won't be correct. But those should be very rare cases that we don't need to // worry about if (controller.isBuildingModels()) { -// ^^^^^^^^^^ reference local39 +// ^^^^^^^^^^ reference local43 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#isBuildingModels(). return controller.getFirstIndexOfModelInBuildingList(model); -// ^^^^^^^^^^ reference local39 +// ^^^^^^^^^^ reference local43 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#getFirstIndexOfModelInBuildingList(). -// ^^^^^ reference local40 +// ^^^^^ reference local44 } return controller.getAdapter().getModelPosition(model); -// ^^^^^^^^^^ reference local39 +// ^^^^^^^^^^ reference local43 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyController#getAdapter(). // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyControllerAdapter#getModelPosition(). -// ^^^^^ reference local40 +// ^^^^^ reference local44 } /** @@ -826,9 +826,9 @@ private static int getPosition(@NonNull EpoxyController controller, protected final void validateStateHasNotChangedSinceAdded(String descriptionOfChange, // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#validateStateHasNotChangedSinceAdded(). // ^^^^^^ reference java/lang/String# -// ^^^^^^^^^^^^^^^^^^^ definition local41 +// ^^^^^^^^^^^^^^^^^^^ definition local45 int modelPosition) { -// ^^^^^^^^^^^^^ definition local42 +// ^^^^^^^^^^^^^ definition local46 if (isDebugValidationEnabled() // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#isDebugValidationEnabled(). && !currentlyInInterceptors @@ -840,8 +840,8 @@ protected final void validateStateHasNotChangedSinceAdded(String descriptionOfCh // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ImmutableModelException#``(+1). // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ImmutableModelException# // ^^^^ reference com/airbnb/epoxy/EpoxyModel#this. -// ^^^^^^^^^^^^^^^^^^^ reference local41 -// ^^^^^^^^^^^^^ reference local42 +// ^^^^^^^^^^^^^^^^^^^ reference local45 +// ^^^^^^^^^^^^^ reference local46 } } @@ -850,39 +850,39 @@ protected final void validateStateHasNotChangedSinceAdded(String descriptionOfCh public boolean equals(Object o) { // ^^^^^^ definition com/airbnb/epoxy/EpoxyModel#equals(). // ^^^^^^ reference java/lang/Object# -// ^ definition local43 +// ^ definition local47 if (this == o) { // ^^^^ reference com/airbnb/epoxy/EpoxyModel#this. -// ^ reference local43 +// ^ reference local47 return true; } if (!(o instanceof EpoxyModel)) { -// ^ reference local43 +// ^ reference local47 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# return false; } EpoxyModel that = (EpoxyModel) o; // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^ definition local44 +// ^^^^ definition local48 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^ reference local43 +// ^ reference local47 if (id != that.id) { // ^^ reference com/airbnb/epoxy/EpoxyModel#id. -// ^^^^ reference local44 +// ^^^^ reference local48 // ^^ reference com/airbnb/epoxy/EpoxyModel#id. return false; } if (getViewType() != that.getViewType()) { // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#getViewType(). -// ^^^^ reference local44 +// ^^^^ reference local48 // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#getViewType(). return false; } return shown == that.shown; // ^^^^^ reference com/airbnb/epoxy/EpoxyModel#shown. -// ^^^^ reference local44 +// ^^^^ reference local48 // ^^^^^ reference com/airbnb/epoxy/EpoxyModel#shown. } @@ -891,19 +891,19 @@ public boolean equals(Object o) { public int hashCode() { // ^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#hashCode(). int result = (int) (id ^ (id >>> 32)); -// ^^^^^^ definition local45 +// ^^^^^^ definition local49 // ^^ reference com/airbnb/epoxy/EpoxyModel#id. // ^^ reference com/airbnb/epoxy/EpoxyModel#id. result = 31 * result + getViewType(); -// ^^^^^^ reference local45 -// ^^^^^^ reference local45 +// ^^^^^^ reference local49 +// ^^^^^^ reference local49 // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#getViewType(). result = 31 * result + (shown ? 1 : 0); -// ^^^^^^ reference local45 -// ^^^^^^ reference local45 +// ^^^^^^ reference local49 +// ^^^^^^ reference local49 // ^^^^^ reference com/airbnb/epoxy/EpoxyModel#shown. return result; -// ^^^^^^ reference local45 +// ^^^^^^ reference local49 } /** @@ -916,9 +916,9 @@ public int hashCode() { */ public int getSpanSize(int totalSpanCount, int position, int itemCount) { // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#getSpanSize(). -// ^^^^^^^^^^^^^^ definition local46 -// ^^^^^^^^ definition local47 -// ^^^^^^^^^ definition local48 +// ^^^^^^^^^^^^^^ definition local50 +// ^^^^^^^^ definition local51 +// ^^^^^^^^^ definition local52 return 1; } @@ -928,11 +928,11 @@ public EpoxyModel spanSizeOverride(@Nullable SpanSizeOverrideCallback spanSiz // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#spanSizeOverride(). // ^^^^^^^^ reference androidx/annotation/Nullable# // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#SpanSizeOverrideCallback# -// ^^^^^^^^^^^^^^^^ definition local49 +// ^^^^^^^^^^^^^^^^ definition local53 this.spanSizeOverride = spanSizeCallback; // ^^^^ reference com/airbnb/epoxy/EpoxyModel#this. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#spanSizeOverride. -// ^^^^^^^^^^^^^^^^ reference local49 +// ^^^^^^^^^^^^^^^^ reference local53 return this; // ^^^^ reference com/airbnb/epoxy/EpoxyModel#this. } @@ -941,9 +941,9 @@ public interface SpanSizeOverrideCallback { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#SpanSizeOverrideCallback# int getSpanSize(int totalSpanCount, int position, int itemCount); // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#SpanSizeOverrideCallback#getSpanSize(). -// ^^^^^^^^^^^^^^ definition local50 -// ^^^^^^^^ definition local51 -// ^^^^^^^^^ definition local52 +// ^^^^^^^^^^^^^^ definition local54 +// ^^^^^^^^ definition local55 +// ^^^^^^^^^ definition local56 } /** @@ -952,24 +952,24 @@ public interface SpanSizeOverrideCallback { */ public final int spanSize(int totalSpanCount, int position, int itemCount) { // ^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#spanSize(). -// ^^^^^^^^^^^^^^ definition local53 -// ^^^^^^^^ definition local54 -// ^^^^^^^^^ definition local55 +// ^^^^^^^^^^^^^^ definition local57 +// ^^^^^^^^ definition local58 +// ^^^^^^^^^ definition local59 if (spanSizeOverride != null) { // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#spanSizeOverride. return spanSizeOverride.getSpanSize(totalSpanCount, position, itemCount); // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#spanSizeOverride. // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#SpanSizeOverrideCallback#getSpanSize(). -// ^^^^^^^^^^^^^^ reference local53 -// ^^^^^^^^ reference local54 -// ^^^^^^^^^ reference local55 +// ^^^^^^^^^^^^^^ reference local57 +// ^^^^^^^^ reference local58 +// ^^^^^^^^^ reference local59 } return getSpanSize(totalSpanCount, position, itemCount); // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#getSpanSize(). -// ^^^^^^^^^^^^^^ reference local53 -// ^^^^^^^^ reference local54 -// ^^^^^^^^^ reference local55 +// ^^^^^^^^^^^^^^ reference local57 +// ^^^^^^^^ reference local58 +// ^^^^^^^^^ reference local59 } /** @@ -998,12 +998,12 @@ public EpoxyModel show(boolean show) { // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# // ^ reference com/airbnb/epoxy/EpoxyModel#[T] // ^^^^ definition com/airbnb/epoxy/EpoxyModel#show(+1). -// ^^^^ definition local56 +// ^^^^ definition local60 onMutation(); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onMutation(). shown = show; // ^^^^^ reference com/airbnb/epoxy/EpoxyModel#shown. -// ^^^^ reference local56 +// ^^^^ reference local60 return this; // ^^^^ reference com/airbnb/epoxy/EpoxyModel#this. } @@ -1054,7 +1054,7 @@ public boolean onFailedToRecycleView(@NonNull T view) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#onFailedToRecycleView(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^ reference com/airbnb/epoxy/EpoxyModel#[T] -// ^^^^ definition local57 +// ^^^^ definition local61 return false; } @@ -1067,7 +1067,7 @@ public void onViewAttachedToWindow(@NonNull T view) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#onViewAttachedToWindow(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^ reference com/airbnb/epoxy/EpoxyModel#[T] -// ^^^^ definition local58 +// ^^^^ definition local62 } @@ -1081,7 +1081,7 @@ public void onViewDetachedFromWindow(@NonNull T view) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModel#onViewDetachedFromWindow(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^ reference com/airbnb/epoxy/EpoxyModel#[T] -// ^^^^ definition local59 +// ^^^^ definition local63 } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelGroup.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelGroup.java index 3c4c679f..3f46b4b3 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelGroup.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelGroup.java @@ -261,30 +261,30 @@ public void bind(@NonNull ModelGroupHolder holder) { iterateModels(holder, new IterateModelsCallback() { // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#iterateModels(). // ^^^^^^ reference local10 -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#bind().``#``(). 6:5 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local12 6:5 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# -// ^ definition com/airbnb/epoxy/EpoxyModelGroup#bind().``#``(). 1:4 +// ^ definition local12 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex) { -// ^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#bind().``#onModel(). +// ^^^^^^^ definition local13 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local11 +// ^^^^^ definition local14 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local12 -// ^^^^^^^^^^ definition local13 +// ^^^^^^^^^^ definition local15 +// ^^^^^^^^^^ definition local16 setViewVisibility(model, viewHolder); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#setViewVisibility(). -// ^^^^^ reference local11 -// ^^^^^^^^^^ reference local12 +// ^^^^^ reference local14 +// ^^^^^^^^^^ reference local15 viewHolder.bind(model, null, Collections.emptyList(), modelIndex); -// ^^^^^^^^^^ reference local12 +// ^^^^^^^^^^ reference local15 // ^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#bind(). -// ^^^^^ reference local11 +// ^^^^^ reference local14 // ^^^^^^^^^^^ reference java/util/Collections# // ^^^^^^^^^ reference java/util/Collections#emptyList(). -// ^^^^^^^^^^ reference local13 +// ^^^^^^^^^^ reference local16 } }); } @@ -297,38 +297,38 @@ public void bind(@NonNull ModelGroupHolder holder, @NonNull final List p // ^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#bind(+1). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local14 +// ^^^^^^ definition local17 // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^ reference java/util/List# // ^^^^^^ reference java/lang/Object# -// ^^^^^^^^ definition local15 +// ^^^^^^^^ definition local18 iterateModels(holder, new IterateModelsCallback() { // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#iterateModels(). -// ^^^^^^ reference local14 -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#bind(+1).``#``(). 6:5 +// ^^^^^^ reference local17 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local20 6:5 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# -// ^ definition com/airbnb/epoxy/EpoxyModelGroup#bind(+1).``#``(). 1:4 +// ^ definition local20 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex) { -// ^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#bind(+1).``#onModel(). +// ^^^^^^^ definition local21 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local16 +// ^^^^^ definition local22 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local17 -// ^^^^^^^^^^ definition local18 +// ^^^^^^^^^^ definition local23 +// ^^^^^^^^^^ definition local24 setViewVisibility(model, viewHolder); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#setViewVisibility(). -// ^^^^^ reference local16 -// ^^^^^^^^^^ reference local17 +// ^^^^^ reference local22 +// ^^^^^^^^^^ reference local23 viewHolder.bind(model, null, Collections.emptyList(), modelIndex); -// ^^^^^^^^^^ reference local17 +// ^^^^^^^^^^ reference local23 // ^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#bind(). -// ^^^^^ reference local16 +// ^^^^^ reference local22 // ^^^^^^^^^^^ reference java/util/Collections# // ^^^^^^^^^ reference java/util/Collections#emptyList(). -// ^^^^^^^^^^ reference local18 +// ^^^^^^^^^^ reference local24 } }); } @@ -339,82 +339,82 @@ public void bind(@NonNull ModelGroupHolder holder, @NonNull EpoxyModel previo // ^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#bind(+2). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local19 +// ^^^^^^ definition local25 // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^^^^^^^ definition local20 +// ^^^^^^^^^^^^^^^^^^^^ definition local26 if (!(previouslyBoundModel instanceof EpoxyModelGroup)) { -// ^^^^^^^^^^^^^^^^^^^^ reference local20 +// ^^^^^^^^^^^^^^^^^^^^ reference local26 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# bind(holder); // ^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#bind(). -// ^^^^^^ reference local19 +// ^^^^^^ reference local25 return; } final EpoxyModelGroup previousGroup = (EpoxyModelGroup) previouslyBoundModel; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# -// ^^^^^^^^^^^^^ definition local21 +// ^^^^^^^^^^^^^ definition local27 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# -// ^^^^^^^^^^^^^^^^^^^^ reference local20 +// ^^^^^^^^^^^^^^^^^^^^ reference local26 iterateModels(holder, new IterateModelsCallback() { // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#iterateModels(). -// ^^^^^^ reference local19 -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#bind(+2).``#``(). 15:5 +// ^^^^^^ reference local25 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local29 15:5 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# -// ^ definition com/airbnb/epoxy/EpoxyModelGroup#bind(+2).``#``(). 1:4 +// ^ definition local29 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex) { -// ^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#bind(+2).``#onModel(). +// ^^^^^^^ definition local30 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local22 +// ^^^^^ definition local31 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local23 -// ^^^^^^^^^^ definition local24 +// ^^^^^^^^^^ definition local32 +// ^^^^^^^^^^ definition local33 setViewVisibility(model, viewHolder); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#setViewVisibility(). -// ^^^^^ reference local22 -// ^^^^^^^^^^ reference local23 +// ^^^^^ reference local31 +// ^^^^^^^^^^ reference local32 if (modelIndex < previousGroup.models.size()) { -// ^^^^^^^^^^ reference local24 -// ^^^^^^^^^^^^^ reference local21 +// ^^^^^^^^^^ reference local33 +// ^^^^^^^^^^^^^ reference local27 // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^^ reference java/util/List#size(). EpoxyModel previousModel = previousGroup.models.get(modelIndex); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^ definition local25 -// ^^^^^^^^^^^^^ reference local21 +// ^^^^^^^^^^^^^ definition local34 +// ^^^^^^^^^^^^^ reference local27 // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^ reference java/util/List#get(). -// ^^^^^^^^^^ reference local24 +// ^^^^^^^^^^ reference local33 if (previousModel.id() == model.id()) { -// ^^^^^^^^^^^^^ reference local25 +// ^^^^^^^^^^^^^ reference local34 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). -// ^^^^^ reference local22 +// ^^^^^ reference local31 // ^^ reference com/airbnb/epoxy/EpoxyModel#id(). viewHolder.bind(model, previousModel, Collections.emptyList(), modelIndex); -// ^^^^^^^^^^ reference local23 +// ^^^^^^^^^^ reference local32 // ^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#bind(). -// ^^^^^ reference local22 -// ^^^^^^^^^^^^^ reference local25 +// ^^^^^ reference local31 +// ^^^^^^^^^^^^^ reference local34 // ^^^^^^^^^^^ reference java/util/Collections# // ^^^^^^^^^ reference java/util/Collections#emptyList(). -// ^^^^^^^^^^ reference local24 +// ^^^^^^^^^^ reference local33 return; } } viewHolder.bind(model, null, Collections.emptyList(), modelIndex); -// ^^^^^^^^^^ reference local23 +// ^^^^^^^^^^ reference local32 // ^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#bind(). -// ^^^^^ reference local22 +// ^^^^^ reference local31 // ^^^^^^^^^^^ reference java/util/Collections# // ^^^^^^^^^ reference java/util/Collections#emptyList(). -// ^^^^^^^^^^ reference local24 +// ^^^^^^^^^^ reference local33 } }); } @@ -422,21 +422,21 @@ public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex private static void setViewVisibility(EpoxyModel model, EpoxyViewHolder viewHolder) { // ^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#setViewVisibility(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local26 +// ^^^^^ definition local35 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local27 +// ^^^^^^^^^^ definition local36 if (model.isShown()) { -// ^^^^^ reference local26 +// ^^^^^ reference local35 // ^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#isShown(). viewHolder.itemView.setVisibility(View.VISIBLE); -// ^^^^^^^^^^ reference local27 +// ^^^^^^^^^^ reference local36 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView# // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView#setVisibility# // ^^^^ reference _root_/ // ^^^^^^^ reference VISIBLE# } else { viewHolder.itemView.setVisibility(View.GONE); -// ^^^^^^^^^^ reference local27 +// ^^^^^^^^^^ reference local36 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView# // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView#setVisibility# // ^^^^ reference _root_/ @@ -452,9 +452,9 @@ public void unbind(@NonNull ModelGroupHolder holder) { // ^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#unbind(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local28 +// ^^^^^^ definition local37 holder.unbindGroup(); -// ^^^^^^ reference local28 +// ^^^^^^ reference local37 // ^^^^^^^^^^^ reference unbindGroup# } @@ -465,28 +465,28 @@ public void unbind(@NonNull ModelGroupHolder holder) { public void onViewAttachedToWindow(ModelGroupHolder holder) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#onViewAttachedToWindow(). // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local29 +// ^^^^^^ definition local38 iterateModels(holder, new IterateModelsCallback() { // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#iterateModels(). -// ^^^^^^ reference local29 -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#onViewAttachedToWindow().``#``(). 6:5 +// ^^^^^^ reference local38 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local40 6:5 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# -// ^ definition com/airbnb/epoxy/EpoxyModelGroup#onViewAttachedToWindow().``#``(). 1:4 +// ^ definition local40 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex) { -// ^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#onViewAttachedToWindow().``#onModel(). +// ^^^^^^^ definition local41 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local30 +// ^^^^^ definition local42 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local31 -// ^^^^^^^^^^ definition local32 +// ^^^^^^^^^^ definition local43 +// ^^^^^^^^^^ definition local44 //noinspection unchecked model.onViewAttachedToWindow(viewHolder.objectToBind()); -// ^^^^^ reference local30 +// ^^^^^ reference local42 // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onViewAttachedToWindow(). -// ^^^^^^^^^^ reference local31 +// ^^^^^^^^^^ reference local43 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#objectToBind(). } }); @@ -499,28 +499,28 @@ public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex public void onViewDetachedFromWindow(ModelGroupHolder holder) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#onViewDetachedFromWindow(). // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local33 +// ^^^^^^ definition local45 iterateModels(holder, new IterateModelsCallback() { // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#iterateModels(). -// ^^^^^^ reference local33 -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#onViewDetachedFromWindow().``#``(). 6:5 +// ^^^^^^ reference local45 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local47 6:5 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# -// ^ definition com/airbnb/epoxy/EpoxyModelGroup#onViewDetachedFromWindow().``#``(). 1:4 +// ^ definition local47 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex) { -// ^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#onViewDetachedFromWindow().``#onModel(). +// ^^^^^^^ definition local48 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local34 +// ^^^^^ definition local49 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local35 -// ^^^^^^^^^^ definition local36 +// ^^^^^^^^^^ definition local50 +// ^^^^^^^^^^ definition local51 //noinspection unchecked model.onViewDetachedFromWindow(viewHolder.objectToBind()); -// ^^^^^ reference local34 +// ^^^^^ reference local49 // ^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onViewDetachedFromWindow(). -// ^^^^^^^^^^ reference local35 +// ^^^^^^^^^^ reference local50 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#objectToBind(). } }); @@ -529,34 +529,34 @@ public void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex private void iterateModels(ModelGroupHolder holder, IterateModelsCallback callback) { // ^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#iterateModels(). // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local37 +// ^^^^^^ definition local52 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback# -// ^^^^^^^^ definition local38 +// ^^^^^^^^ definition local53 holder.bindGroupIfNeeded(this); -// ^^^^^^ reference local37 +// ^^^^^^ reference local52 // ^^^^^^^^^^^^^^^^^ reference bindGroupIfNeeded# // ^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#this. int modelCount = models.size(); -// ^^^^^^^^^^ definition local39 +// ^^^^^^^^^^ definition local54 // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^^ reference java/util/List#size(). for (int i = 0; i < modelCount; i++) { -// ^ definition local40 -// ^ reference local40 -// ^^^^^^^^^^ reference local39 -// ^ reference local40 +// ^ definition local55 +// ^ reference local55 +// ^^^^^^^^^^ reference local54 +// ^ reference local55 callback.onModel(models.get(i), holder.getViewHolders().get(i), i); -// ^^^^^^^^ reference local38 +// ^^^^^^^^ reference local53 // ^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback#onModel(). // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^ reference java/util/List#get(). -// ^ reference local40 -// ^^^^^^ reference local37 +// ^ reference local55 +// ^^^^^^ reference local52 // ^^^^^^^^^^^^^^ reference getViewHolders# // ^^^ reference getViewHolders#get# -// ^ reference local40 -// ^ reference local40 +// ^ reference local55 +// ^ reference local55 } } @@ -565,27 +565,27 @@ private interface IterateModelsCallback { void onModel(EpoxyModel model, EpoxyViewHolder viewHolder, int modelIndex); // ^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#IterateModelsCallback#onModel(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local41 +// ^^^^^ definition local56 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local42 -// ^^^^^^^^^^ definition local43 +// ^^^^^^^^^^ definition local57 +// ^^^^^^^^^^ definition local58 } @Override ^^^^^^^^ reference java/lang/Override# public int getSpanSize(int totalSpanCount, int position, int itemCount) { // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#getSpanSize(). -// ^^^^^^^^^^^^^^ definition local44 -// ^^^^^^^^ definition local45 -// ^^^^^^^^^ definition local46 +// ^^^^^^^^^^^^^^ definition local59 +// ^^^^^^^^ definition local60 +// ^^^^^^^^^ definition local61 // Defaults to using the span size of the first model. Override this if you need to customize it return models.get(0).spanSize(totalSpanCount, position, itemCount); // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^ reference java/util/List#get(). // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#spanSize(). -// ^^^^^^^^^^^^^^ reference local44 -// ^^^^^^^^ reference local45 -// ^^^^^^^^^ reference local46 +// ^^^^^^^^^^^^^^ reference local59 +// ^^^^^^^^ reference local60 +// ^^^^^^^^^ reference local61 } @Override @@ -603,13 +603,13 @@ protected final int getDefaultLayout() { public EpoxyModelGroup shouldSaveViewState(boolean shouldSaveViewState) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# // ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#shouldSaveViewState(). -// ^^^^^^^^^^^^^^^^^^^ definition local47 +// ^^^^^^^^^^^^^^^^^^^ definition local62 onMutation(); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#onMutation(). this.shouldSaveViewState = shouldSaveViewState; // ^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#this. // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#shouldSaveViewState. -// ^^^^^^^^^^^^^^^^^^^ reference local47 +// ^^^^^^^^^^^^^^^^^^^ reference local62 return this; // ^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#this. } @@ -642,8 +642,8 @@ public boolean shouldSaveViewState() { protected boolean useViewStubLayoutParams(EpoxyModel model, int modelPosition) { // ^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#useViewStubLayoutParams(). // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local48 -// ^^^^^^^^^^^^^ definition local49 +// ^^^^^ definition local63 +// ^^^^^^^^^^^^^ definition local64 return true; } @@ -654,11 +654,11 @@ protected final ModelGroupHolder createNewHolder(@NonNull ViewParent parent) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#createNewHolder(). // ^^^^^^^ reference androidx/annotation/NonNull# // ^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local50 +// ^^^^^^ definition local65 return new ModelGroupHolder(parent); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference ``# // ^^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^ reference local50 +// ^^^^^^ reference local65 } @Override @@ -666,34 +666,34 @@ protected final ModelGroupHolder createNewHolder(@NonNull ViewParent parent) { public boolean equals(Object o) { // ^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#equals(). // ^^^^^^ reference java/lang/Object# -// ^ definition local51 +// ^ definition local66 if (this == o) { // ^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#this. -// ^ reference local51 +// ^ reference local66 return true; } if (!(o instanceof EpoxyModelGroup)) { -// ^ reference local51 +// ^ reference local66 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# return false; } if (!super.equals(o)) { // ^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#super. // ^^^^^^ reference com/airbnb/epoxy/EpoxyModel#equals(). -// ^ reference local51 +// ^ reference local66 return false; } EpoxyModelGroup that = (EpoxyModelGroup) o; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# -// ^^^^ definition local52 +// ^^^^ definition local67 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup# -// ^ reference local51 +// ^ reference local66 return models.equals(that.models); // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^^^^ reference java/util/List#equals(). -// ^^^^ reference local52 +// ^^^^ reference local67 // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. } @@ -702,15 +702,15 @@ public boolean equals(Object o) { public int hashCode() { // ^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelGroup#hashCode(). int result = super.hashCode(); -// ^^^^^^ definition local53 +// ^^^^^^ definition local68 // ^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#super. // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#hashCode(). result = 31 * result + models.hashCode(); -// ^^^^^^ reference local53 -// ^^^^^^ reference local53 +// ^^^^^^ reference local68 +// ^^^^^^ reference local68 // ^^^^^^ reference com/airbnb/epoxy/EpoxyModelGroup#models. // ^^^^^^^^ reference java/util/List#hashCode(). return result; -// ^^^^^^ reference local53 +// ^^^^^^ reference local68 } } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelTouchCallback.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelTouchCallback.java index cef3a7cc..496b18a3 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelTouchCallback.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyModelTouchCallback.java @@ -499,14 +499,14 @@ protected void clearView(final RecyclerView recyclerView, EpoxyViewHolder viewHo recyclerView.postDelayed(new Runnable() { // ^^^^^^^^^^^^ reference local45 // ^^^^^^^^^^^ reference postDelayed# -// ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#clearView().``#``(). 5:5 +// ^^^^^^^^^^^^^^^^ reference local48 5:5 // ^^^^^^^^ reference java/lang/Runnable# // ^^^^^^^^ reference java/lang/Runnable# -// ^ definition com/airbnb/epoxy/EpoxyModelTouchCallback#clearView().``#``(). 1:4 +// ^ definition local48 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public void run() { -// ^^^ definition com/airbnb/epoxy/EpoxyModelTouchCallback#clearView().``#run(). +// ^^^ definition local49 clearRecyclerViewSelectionMarker(recyclerView); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#clearRecyclerViewSelectionMarker(). // ^^^^^^^^^^^^ reference local45 @@ -520,9 +520,9 @@ public void run() { public void clearView(T model, View itemView) { // ^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelTouchCallback#clearView(+1). // ^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#[T] -// ^^^^^ definition local47 +// ^^^^^ definition local50 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local48 +// ^^^^^^^^ definition local51 } @@ -531,88 +531,88 @@ public void clearView(T model, View itemView) { protected void onChildDraw(Canvas c, RecyclerView recyclerView, EpoxyViewHolder viewHolder, // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelTouchCallback#onChildDraw(). // ^^^^^^ reference _root_/ -// ^ definition local49 +// ^ definition local52 // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local50 +// ^^^^^^^^^^^^ definition local53 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^^^^ definition local51 +// ^^^^^^^^^^ definition local54 float dX, float dY, int actionState, boolean isCurrentlyActive) { -// ^^ definition local52 -// ^^ definition local53 -// ^^^^^^^^^^^ definition local54 -// ^^^^^^^^^^^^^^^^^ definition local55 +// ^^ definition local55 +// ^^ definition local56 +// ^^^^^^^^^^^ definition local57 +// ^^^^^^^^^^^^^^^^^ definition local58 super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); // ^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#super. // ^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelperCallback#onChildDraw(). -// ^ reference local49 -// ^^^^^^^^^^^^ reference local50 -// ^^^^^^^^^^ reference local51 -// ^^ reference local52 -// ^^ reference local53 -// ^^^^^^^^^^^ reference local54 -// ^^^^^^^^^^^^^^^^^ reference local55 +// ^ reference local52 +// ^^^^^^^^^^^^ reference local53 +// ^^^^^^^^^^ reference local54 +// ^^ reference local55 +// ^^ reference local56 +// ^^^^^^^^^^^ reference local57 +// ^^^^^^^^^^^^^^^^^ reference local58 EpoxyModel model = viewHolder.getModel(); // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local56 -// ^^^^^^^^^^ reference local51 +// ^^^^^ definition local59 +// ^^^^^^^^^^ reference local54 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). if (!isTouchableModel(model)) { // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#isTouchableModel(). -// ^^^^^ reference local56 +// ^^^^^ reference local59 throw new IllegalStateException( // ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#``(+1). 1:81 // ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException# "A model was selected that is not a valid target: " + model.getClass()); -// ^^^^^ reference local56 +// ^^^^^ reference local59 // ^^^^^^^^ reference java/lang/Object#getClass(). } View itemView = viewHolder.itemView; // ^^^^ reference _root_/ -// ^^^^^^^^ definition local57 -// ^^^^^^^^^^ reference local51 +// ^^^^^^^^ definition local60 +// ^^^^^^^^^^ reference local54 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView# float swipeProgress; -// ^^^^^^^^^^^^^ definition local58 +// ^^^^^^^^^^^^^ definition local61 if (Math.abs(dX) > Math.abs(dY)) { // ^^^^ reference java/lang/Math# // ^^^ reference java/lang/Math#abs(+2). -// ^^ reference local52 +// ^^ reference local55 // ^^^^ reference java/lang/Math# // ^^^ reference java/lang/Math#abs(+2). -// ^^ reference local53 +// ^^ reference local56 swipeProgress = dX / itemView.getWidth(); -// ^^^^^^^^^^^^^ reference local58 -// ^^ reference local52 -// ^^^^^^^^ reference local57 +// ^^^^^^^^^^^^^ reference local61 +// ^^ reference local55 +// ^^^^^^^^ reference local60 // ^^^^^^^^ reference getWidth# } else { swipeProgress = dY / itemView.getHeight(); -// ^^^^^^^^^^^^^ reference local58 -// ^^ reference local53 -// ^^^^^^^^ reference local57 +// ^^^^^^^^^^^^^ reference local61 +// ^^ reference local56 +// ^^^^^^^^ reference local60 // ^^^^^^^^^ reference getHeight# } // Clamp to 1/-1 in the case of side padding where the view can be swiped extra float clampedProgress = Math.max(-1f, Math.min(1f, swipeProgress)); -// ^^^^^^^^^^^^^^^ definition local59 +// ^^^^^^^^^^^^^^^ definition local62 // ^^^^ reference java/lang/Math# // ^^^ reference java/lang/Math#max(+2). // ^^^^ reference java/lang/Math# // ^^^ reference java/lang/Math#min(+2). -// ^^^^^^^^^^^^^ reference local58 +// ^^^^^^^^^^^^^ reference local61 //noinspection unchecked onSwipeProgressChanged((T) model, itemView, clampedProgress, c); // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#onSwipeProgressChanged(). // ^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#[T] -// ^^^^^ reference local56 -// ^^^^^^^^ reference local57 -// ^^^^^^^^^^^^^^^ reference local59 -// ^ reference local49 +// ^^^^^ reference local59 +// ^^^^^^^^ reference local60 +// ^^^^^^^^^^^^^^^ reference local62 +// ^ reference local52 } @Override @@ -620,13 +620,13 @@ protected void onChildDraw(Canvas c, RecyclerView recyclerView, EpoxyViewHolder public void onSwipeProgressChanged(T model, View itemView, float swipeProgress, // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyModelTouchCallback#onSwipeProgressChanged(). // ^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#[T] -// ^^^^^ definition local60 +// ^^^^^ definition local63 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local61 -// ^^^^^^^^^^^^^ definition local62 +// ^^^^^^^^ definition local64 +// ^^^^^^^^^^^^^ definition local65 Canvas canvas) { // ^^^^^^ reference _root_/ -// ^^^^^^ definition local63 +// ^^^^^^ definition local66 } } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyTouchHelper.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyTouchHelper.java index 879a17be..5115bdda 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyTouchHelper.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyTouchHelper.java @@ -408,16 +408,16 @@ public ItemTouchHelper andCallbacks(final DragCallbacks callbacks) { new ItemTouchHelper(new EpoxyModelTouchCallback(controller, targetModelClass) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference ``# 37:12 // ^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#``(). 37:11 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local20 37:11 // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback# // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback# // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#controller. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#targetModelClass. -// ^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#``(). 2:3 -// ^ definition local19 2:7 -// ^ definition local20 2:13 +// ^ definition local20 2:3 +// ^ definition local21 2:7 +// ^ definition local22 2:13 // reference java/lang/ 2:2 // reference com/airbnb/epoxy/ 2:3 // reference java/lang/Class# 2:3 @@ -427,10 +427,10 @@ public ItemTouchHelper andCallbacks(final DragCallbacks callbacks) { @Override // ^^^^^^^^ reference java/lang/Override# public int getMovementFlagsForModel(U model, int adapterPosition) { -// ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#getMovementFlagsForModel(). +// ^^^^^^^^^^^^^^^^^^^^^^^^ definition local23 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] -// ^^^^^ definition local21 -// ^^^^^^^^^^^^^^^ definition local22 +// ^^^^^ definition local24 +// ^^^^^^^^^^^^^^^ definition local25 return movementFlags; // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#movementFlags. } @@ -438,97 +438,97 @@ public int getMovementFlagsForModel(U model, int adapterPosition) { @Override // ^^^^^^^^ reference java/lang/Override# protected boolean isTouchableModel(EpoxyModel model) { -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#isTouchableModel(). +// ^^^^^^^^^^^^^^^^ definition local26 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local23 +// ^^^^^ definition local27 boolean isTargetType = targetModelClasses.size() == 1 -// ^^^^^^^^^^^^ definition local24 +// ^^^^^^^^^^^^ definition local28 // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#targetModelClasses. // ^^^^ reference java/util/List#size(). ? super.isTouchableModel(model) -// ^^^^^ reference local25 +// ^^^^^ reference local29 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#isTouchableModel(). -// ^^^^^ reference local23 +// ^^^^^ reference local27 : targetModelClasses.contains(model.getClass()); // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#targetModelClasses. // ^^^^^^^^ reference java/util/List#contains(). -// ^^^^^ reference local23 +// ^^^^^ reference local27 // ^^^^^^^^ reference java/lang/Object#getClass(). //noinspection unchecked return isTargetType && callbacks.isDragEnabledForModel((U) model); -// ^^^^^^^^^^^^ reference local24 +// ^^^^^^^^^^^^ reference local28 // ^^^^^^^^^ reference local17 // ^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#isDragEnabledForModel(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] -// ^^^^^ reference local23 +// ^^^^^ reference local27 } @Override // ^^^^^^^^ reference java/lang/Override# public void onDragStarted(U model, View itemView, int adapterPosition) { -// ^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#onDragStarted(). +// ^^^^^^^^^^^^^ definition local30 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] -// ^^^^^ definition local26 +// ^^^^^ definition local31 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local27 -// ^^^^^^^^^^^^^^^ definition local28 +// ^^^^^^^^ definition local32 +// ^^^^^^^^^^^^^^^ definition local33 callbacks.onDragStarted(model, itemView, adapterPosition); // ^^^^^^^^^ reference local17 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#onDragStarted(). -// ^^^^^ reference local26 -// ^^^^^^^^ reference local27 -// ^^^^^^^^^^^^^^^ reference local28 +// ^^^^^ reference local31 +// ^^^^^^^^ reference local32 +// ^^^^^^^^^^^^^^^ reference local33 } @Override // ^^^^^^^^ reference java/lang/Override# public void onDragReleased(U model, View itemView) { -// ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#onDragReleased(). +// ^^^^^^^^^^^^^^ definition local34 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] -// ^^^^^ definition local29 +// ^^^^^ definition local35 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local30 +// ^^^^^^^^ definition local36 callbacks.onDragReleased(model, itemView); // ^^^^^^^^^ reference local17 // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#onDragReleased(). -// ^^^^^ reference local29 -// ^^^^^^^^ reference local30 +// ^^^^^ reference local35 +// ^^^^^^^^ reference local36 } @Override // ^^^^^^^^ reference java/lang/Override# public void onModelMoved(int fromPosition, int toPosition, U modelBeingMoved, -// ^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#onModelMoved(). -// ^^^^^^^^^^^^ definition local31 -// ^^^^^^^^^^ definition local32 +// ^^^^^^^^^^^^ definition local37 +// ^^^^^^^^^^^^ definition local38 +// ^^^^^^^^^^ definition local39 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] -// ^^^^^^^^^^^^^^^ definition local33 +// ^^^^^^^^^^^^^^^ definition local40 View itemView) { // ^^^^ reference _root_/ -// ^^^^^^^^ definition local34 +// ^^^^^^^^ definition local41 callbacks.onModelMoved(fromPosition, toPosition, modelBeingMoved, itemView); // ^^^^^^^^^ reference local17 // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#onModelMoved(). -// ^^^^^^^^^^^^ reference local31 -// ^^^^^^^^^^ reference local32 -// ^^^^^^^^^^^^^^^ reference local33 -// ^^^^^^^^ reference local34 +// ^^^^^^^^^^^^ reference local38 +// ^^^^^^^^^^ reference local39 +// ^^^^^^^^^^^^^^^ reference local40 +// ^^^^^^^^ reference local41 } @Override // ^^^^^^^^ reference java/lang/Override# public void clearView(U model, View itemView) { -// ^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#andCallbacks().``#clearView(). +// ^^^^^^^^^ definition local42 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragBuilder4#[U] -// ^^^^^ definition local35 +// ^^^^^ definition local43 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local36 +// ^^^^^^^^ definition local44 callbacks.clearView(model, itemView); // ^^^^^^^^^ reference local17 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#clearView(). -// ^^^^^ reference local35 -// ^^^^^^^^ reference local36 +// ^^^^^ reference local43 +// ^^^^^^^^ reference local44 } }); @@ -555,10 +555,10 @@ public abstract static class DragCallbacks public void onDragStarted(T model, View itemView, int adapterPosition) { // ^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#onDragStarted(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#[T] -// ^^^^^ definition local37 +// ^^^^^ definition local45 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local38 -// ^^^^^^^^^^^^^^^ definition local39 +// ^^^^^^^^ definition local46 +// ^^^^^^^^^^^^^^^ definition local47 } @@ -567,9 +567,9 @@ public void onDragStarted(T model, View itemView, int adapterPosition) { public void onDragReleased(T model, View itemView) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#onDragReleased(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#[T] -// ^^^^^ definition local40 +// ^^^^^ definition local48 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local41 +// ^^^^^^^^ definition local49 } @@ -577,22 +577,22 @@ public void onDragReleased(T model, View itemView) { // ^^^^^^^^ reference java/lang/Override# public abstract void onModelMoved(int fromPosition, int toPosition, T modelBeingMoved, // ^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#onModelMoved(). -// ^^^^^^^^^^^^ definition local42 -// ^^^^^^^^^^ definition local43 +// ^^^^^^^^^^^^ definition local50 +// ^^^^^^^^^^ definition local51 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#[T] -// ^^^^^^^^^^^^^^^ definition local44 +// ^^^^^^^^^^^^^^^ definition local52 View itemView); // ^^^^ reference _root_/ -// ^^^^^^^^ definition local45 +// ^^^^^^^^ definition local53 @Override // ^^^^^^^^ reference java/lang/Override# public void clearView(T model, View itemView) { // ^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#clearView(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#[T] -// ^^^^^ definition local46 +// ^^^^^ definition local54 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local47 +// ^^^^^^^^ definition local55 } @@ -604,7 +604,7 @@ public void clearView(T model, View itemView) { public boolean isDragEnabledForModel(T model) { // ^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#isDragEnabledForModel(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#[T] -// ^^^^^ definition local48 +// ^^^^^ definition local56 return true; } @@ -613,8 +613,8 @@ public boolean isDragEnabledForModel(T model) { public final int getMovementFlagsForModel(T model, int adapterPosition) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#getMovementFlagsForModel(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#DragCallbacks#[T] -// ^^^^^ definition local49 -// ^^^^^^^^^^^^^^^ definition local50 +// ^^^^^ definition local57 +// ^^^^^^^^^^^^^^^ definition local58 // No-Op this is not used return 0; } @@ -628,11 +628,11 @@ public static SwipeBuilder initSwiping(RecyclerView recyclerView) { // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder# // ^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#initSwiping(). // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local51 +// ^^^^^^^^^^^^ definition local59 return new SwipeBuilder(recyclerView); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#``(). // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder# -// ^^^^^^^^^^^^ reference local51 +// ^^^^^^^^^^^^ reference local59 } public static class SwipeBuilder { @@ -645,11 +645,11 @@ public static class SwipeBuilder { private SwipeBuilder(RecyclerView recyclerView) { // ^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#``(). // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local52 +// ^^^^^^^^^^^^ definition local60 this.recyclerView = recyclerView; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#this. // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#recyclerView. -// ^^^^^^^^^^^^ reference local52 +// ^^^^^^^^^^^^ reference local60 } /** Enable swiping right. */ @@ -696,13 +696,13 @@ public SwipeBuilder2 leftAndRight() { public SwipeBuilder2 withDirections(int directionFlags) { // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2# // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#withDirections(). -// ^^^^^^^^^^^^^^ definition local53 +// ^^^^^^^^^^^^^^ definition local61 return new SwipeBuilder2(recyclerView, makeMovementFlags(0, directionFlags)); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#``(). // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2# // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#recyclerView. // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder#makeMovementFlags# -// ^^^^^^^^^^^^^^ reference local53 +// ^^^^^^^^^^^^^^ reference local61 } } @@ -718,17 +718,17 @@ public static class SwipeBuilder2 { private SwipeBuilder2(RecyclerView recyclerView, // ^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#``(). // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local54 +// ^^^^^^^^^^^^ definition local62 int movementFlags) { -// ^^^^^^^^^^^^^ definition local55 +// ^^^^^^^^^^^^^ definition local63 this.recyclerView = recyclerView; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#this. // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#recyclerView. -// ^^^^^^^^^^^^ reference local54 +// ^^^^^^^^^^^^ reference local62 this.movementFlags = movementFlags; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#this. // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#movementFlags. -// ^^^^^^^^^^^^^ reference local55 +// ^^^^^^^^^^^^^ reference local63 } /** @@ -742,27 +742,27 @@ public SwipeBuilder3 withTarget(Class targetModelCl // ^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#withTarget(). // ^^^^^ reference java/lang/Class# // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#withTarget().[U] -// ^^^^^^^^^^^^^^^^ definition local56 +// ^^^^^^^^^^^^^^^^ definition local64 List> targetClasses = new ArrayList<>(1); // ^^^^ reference java/util/List# // ^^^^^ reference java/lang/Class# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^ definition local57 +// ^^^^^^^^^^^^^ definition local65 // ^^^^^^^^^^^^^^^^^^ reference java/util/ArrayList#``(). // ^^^^^^^^^ reference java/util/ArrayList# targetClasses.add(targetModelClass); -// ^^^^^^^^^^^^^ reference local57 +// ^^^^^^^^^^^^^ reference local65 // ^^^ reference java/util/List#add(). -// ^^^^^^^^^^^^^^^^ reference local56 +// ^^^^^^^^^^^^^^^^ reference local64 return new SwipeBuilder3<>(recyclerView, movementFlags, targetModelClass, // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#``(). 1:24 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3# // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#recyclerView. // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder2#movementFlags. -// ^^^^^^^^^^^^^^^^ reference local56 +// ^^^^^^^^^^^^^^^^ reference local64 targetClasses); -// ^^^^^^^^^^^^^ reference local57 +// ^^^^^^^^^^^^^ reference local65 } /** @@ -778,7 +778,7 @@ public SwipeBuilder3 withTargets( Class... targetModelClasses) { // ^^^^^ reference java/lang/Class# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^^^^^ definition local58 +// ^^^^^^^^^^^^^^^^^^ definition local66 return new SwipeBuilder3<>(recyclerView, movementFlags, EpoxyModel.class, // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#``(). 1:44 // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3# @@ -789,7 +789,7 @@ public SwipeBuilder3 withTargets( Arrays.asList(targetModelClasses)); // ^^^^^^ reference java/util/Arrays# // ^^^^^^ reference java/util/Arrays#asList(). -// ^^^^^^^^^^^^^^^^^^ reference local58 +// ^^^^^^^^^^^^^^^^^^ reference local66 } /** @@ -832,33 +832,33 @@ private SwipeBuilder3( // ^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#``(). RecyclerView recyclerView, int movementFlags, // ^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^ definition local59 -// ^^^^^^^^^^^^^ definition local60 +// ^^^^^^^^^^^^ definition local67 +// ^^^^^^^^^^^^^ definition local68 Class targetModelClass, List> targetModelClasses) { // ^^^^^ reference java/lang/Class# // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^^^^^^^^^^^^ definition local61 +// ^^^^^^^^^^^^^^^^ definition local69 // ^^^^ reference java/util/List# // ^^^^^ reference java/lang/Class# // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^^^^^^^^^^^^^^ definition local62 +// ^^^^^^^^^^^^^^^^^^ definition local70 this.recyclerView = recyclerView; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#this. // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#recyclerView. -// ^^^^^^^^^^^^ reference local59 +// ^^^^^^^^^^^^ reference local67 this.movementFlags = movementFlags; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#this. // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#movementFlags. -// ^^^^^^^^^^^^^ reference local60 +// ^^^^^^^^^^^^^ reference local68 this.targetModelClass = targetModelClass; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#this. // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#targetModelClass. -// ^^^^^^^^^^^^^^^^ reference local61 +// ^^^^^^^^^^^^^^^^ reference local69 this.targetModelClasses = targetModelClasses; // ^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#this. // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#targetModelClasses. -// ^^^^^^^^^^^^^^^^^^ reference local62 +// ^^^^^^^^^^^^^^^^^^ reference local70 } /** @@ -879,22 +879,22 @@ public ItemTouchHelper andCallbacks(final SwipeCallbacks callbacks) { // ^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks(). // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks# // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^^^^^ definition local63 +// ^^^^^^^^^ definition local71 ItemTouchHelper itemTouchHelper = // ^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^^^^ definition local64 +// ^^^^^^^^^^^^^^^ definition local72 new ItemTouchHelper(new EpoxyModelTouchCallback(null, targetModelClass) { // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference ``# 42:12 // ^^^^^^^^^^^^^^^ reference _root_/ -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#``(). 42:11 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local74 42:11 // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback# // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback# // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#targetModelClass. -// ^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#``(). 2:3 -// ^ definition local65 2:7 -// ^ definition local66 2:13 +// ^ definition local74 2:3 +// ^ definition local75 2:7 +// ^ definition local76 2:13 // reference java/lang/ 2:2 // reference com/airbnb/epoxy/ 2:3 // reference java/lang/Class# 2:3 @@ -904,10 +904,10 @@ public ItemTouchHelper andCallbacks(final SwipeCallbacks callbacks) { @Override // ^^^^^^^^ reference java/lang/Override# public int getMovementFlagsForModel(U model, int adapterPosition) { -// ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#getMovementFlagsForModel(). +// ^^^^^^^^^^^^^^^^^^^^^^^^ definition local77 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ definition local67 -// ^^^^^^^^^^^^^^^ definition local68 +// ^^^^^ definition local78 +// ^^^^^^^^^^^^^^^ definition local79 return movementFlags; // ^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#movementFlags. } @@ -915,127 +915,127 @@ public int getMovementFlagsForModel(U model, int adapterPosition) { @Override // ^^^^^^^^ reference java/lang/Override# protected boolean isTouchableModel(EpoxyModel model) { -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#isTouchableModel(). +// ^^^^^^^^^^^^^^^^ definition local80 // ^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel# -// ^^^^^ definition local69 +// ^^^^^ definition local81 boolean isTargetType = targetModelClasses.size() == 1 -// ^^^^^^^^^^^^ definition local70 +// ^^^^^^^^^^^^ definition local82 // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#targetModelClasses. // ^^^^ reference java/util/List#size(). ? super.isTouchableModel(model) -// ^^^^^ reference local71 +// ^^^^^ reference local83 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModelTouchCallback#isTouchableModel(). -// ^^^^^ reference local69 +// ^^^^^ reference local81 : targetModelClasses.contains(model.getClass()); // ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#targetModelClasses. // ^^^^^^^^ reference java/util/List#contains(). -// ^^^^^ reference local69 +// ^^^^^ reference local81 // ^^^^^^^^ reference java/lang/Object#getClass(). //noinspection unchecked return isTargetType && callbacks.isSwipeEnabledForModel((U) model); -// ^^^^^^^^^^^^ reference local70 -// ^^^^^^^^^ reference local63 +// ^^^^^^^^^^^^ reference local82 +// ^^^^^^^^^ reference local71 // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#isSwipeEnabledForModel(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ reference local69 +// ^^^^^ reference local81 } @Override // ^^^^^^^^ reference java/lang/Override# public void onSwipeStarted(U model, View itemView, int adapterPosition) { -// ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#onSwipeStarted(). +// ^^^^^^^^^^^^^^ definition local84 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ definition local72 +// ^^^^^ definition local85 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local73 -// ^^^^^^^^^^^^^^^ definition local74 +// ^^^^^^^^ definition local86 +// ^^^^^^^^^^^^^^^ definition local87 callbacks.onSwipeStarted(model, itemView, adapterPosition); -// ^^^^^^^^^ reference local63 +// ^^^^^^^^^ reference local71 // ^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeStarted(). -// ^^^^^ reference local72 -// ^^^^^^^^ reference local73 -// ^^^^^^^^^^^^^^^ reference local74 +// ^^^^^ reference local85 +// ^^^^^^^^ reference local86 +// ^^^^^^^^^^^^^^^ reference local87 } @Override // ^^^^^^^^ reference java/lang/Override# public void onSwipeProgressChanged(U model, View itemView, float swipeProgress, -// ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#onSwipeProgressChanged(). +// ^^^^^^^^^^^^^^^^^^^^^^ definition local88 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ definition local75 +// ^^^^^ definition local89 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local76 -// ^^^^^^^^^^^^^ definition local77 +// ^^^^^^^^ definition local90 +// ^^^^^^^^^^^^^ definition local91 Canvas canvas) { // ^^^^^^ reference _root_/ -// ^^^^^^ definition local78 +// ^^^^^^ definition local92 callbacks.onSwipeProgressChanged(model, itemView, swipeProgress, canvas); -// ^^^^^^^^^ reference local63 +// ^^^^^^^^^ reference local71 // ^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeProgressChanged(). -// ^^^^^ reference local75 -// ^^^^^^^^ reference local76 -// ^^^^^^^^^^^^^ reference local77 -// ^^^^^^ reference local78 +// ^^^^^ reference local89 +// ^^^^^^^^ reference local90 +// ^^^^^^^^^^^^^ reference local91 +// ^^^^^^ reference local92 } @Override // ^^^^^^^^ reference java/lang/Override# public void onSwipeCompleted(U model, View itemView, int position, int direction) { -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#onSwipeCompleted(). +// ^^^^^^^^^^^^^^^^ definition local93 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ definition local79 +// ^^^^^ definition local94 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local80 -// ^^^^^^^^ definition local81 -// ^^^^^^^^^ definition local82 +// ^^^^^^^^ definition local95 +// ^^^^^^^^ definition local96 +// ^^^^^^^^^ definition local97 callbacks.onSwipeCompleted(model, itemView, position, direction); -// ^^^^^^^^^ reference local63 +// ^^^^^^^^^ reference local71 // ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeCompleted(). -// ^^^^^ reference local79 -// ^^^^^^^^ reference local80 -// ^^^^^^^^ reference local81 -// ^^^^^^^^^ reference local82 +// ^^^^^ reference local94 +// ^^^^^^^^ reference local95 +// ^^^^^^^^ reference local96 +// ^^^^^^^^^ reference local97 } @Override // ^^^^^^^^ reference java/lang/Override# public void onSwipeReleased(U model, View itemView) { -// ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#onSwipeReleased(). +// ^^^^^^^^^^^^^^^ definition local98 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ definition local83 +// ^^^^^ definition local99 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local84 +// ^^^^^^^^ definition local100 callbacks.onSwipeReleased(model, itemView); -// ^^^^^^^^^ reference local63 +// ^^^^^^^^^ reference local71 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeReleased(). -// ^^^^^ reference local83 -// ^^^^^^^^ reference local84 +// ^^^^^ reference local99 +// ^^^^^^^^ reference local100 } @Override // ^^^^^^^^ reference java/lang/Override# public void clearView(U model, View itemView) { -// ^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#andCallbacks().``#clearView(). +// ^^^^^^^^^ definition local101 // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#[U] -// ^^^^^ definition local85 +// ^^^^^ definition local102 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local86 +// ^^^^^^^^ definition local103 callbacks.clearView(model, itemView); -// ^^^^^^^^^ reference local63 +// ^^^^^^^^^ reference local71 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#clearView(). -// ^^^^^ reference local85 -// ^^^^^^^^ reference local86 +// ^^^^^ reference local102 +// ^^^^^^^^ reference local103 } }); itemTouchHelper.attachToRecyclerView(recyclerView); -// ^^^^^^^^^^^^^^^ reference local64 +// ^^^^^^^^^^^^^^^ reference local72 // ^^^^^^^^^^^^^^^^^^^^ reference attachToRecyclerView# // ^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeBuilder3#recyclerView. return itemTouchHelper; -// ^^^^^^^^^^^^^^^ reference local64 +// ^^^^^^^^^^^^^^^ reference local72 } } @@ -1052,10 +1052,10 @@ public abstract static class SwipeCallbacks public void onSwipeStarted(T model, View itemView, int adapterPosition) { // ^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeStarted(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local87 +// ^^^^^ definition local104 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local88 -// ^^^^^^^^^^^^^^^ definition local89 +// ^^^^^^^^ definition local105 +// ^^^^^^^^^^^^^^^ definition local106 } @@ -1064,13 +1064,13 @@ public void onSwipeStarted(T model, View itemView, int adapterPosition) { public void onSwipeProgressChanged(T model, View itemView, float swipeProgress, // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeProgressChanged(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local90 +// ^^^^^ definition local107 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local91 -// ^^^^^^^^^^^^^ definition local92 +// ^^^^^^^^ definition local108 +// ^^^^^^^^^^^^^ definition local109 Canvas canvas) { // ^^^^^^ reference _root_/ -// ^^^^^^ definition local93 +// ^^^^^^ definition local110 } @@ -1079,20 +1079,20 @@ public void onSwipeProgressChanged(T model, View itemView, float swipeProgress, public abstract void onSwipeCompleted(T model, View itemView, int position, int direction); // ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeCompleted(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local94 +// ^^^^^ definition local111 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local95 -// ^^^^^^^^ definition local96 -// ^^^^^^^^^ definition local97 +// ^^^^^^^^ definition local112 +// ^^^^^^^^ definition local113 +// ^^^^^^^^^ definition local114 @Override // ^^^^^^^^ reference java/lang/Override# public void onSwipeReleased(T model, View itemView) { // ^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#onSwipeReleased(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local98 +// ^^^^^ definition local115 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local99 +// ^^^^^^^^ definition local116 } @@ -1101,9 +1101,9 @@ public void onSwipeReleased(T model, View itemView) { public void clearView(T model, View itemView) { // ^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#clearView(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local100 +// ^^^^^ definition local117 // ^^^^ reference _root_/ -// ^^^^^^^^ definition local101 +// ^^^^^^^^ definition local118 } @@ -1115,7 +1115,7 @@ public void clearView(T model, View itemView) { public boolean isSwipeEnabledForModel(T model) { // ^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#isSwipeEnabledForModel(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local102 +// ^^^^^ definition local119 return true; } @@ -1124,8 +1124,8 @@ public boolean isSwipeEnabledForModel(T model) { public final int getMovementFlagsForModel(T model, int adapterPosition) { // ^^^^^^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#getMovementFlagsForModel(). // ^ reference com/airbnb/epoxy/EpoxyTouchHelper#SwipeCallbacks#[T] -// ^^^^^ definition local103 -// ^^^^^^^^^^^^^^^ definition local104 +// ^^^^^ definition local120 +// ^^^^^^^^^^^^^^^ definition local121 // Not used return 0; } diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/ViewHolderState.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/ViewHolderState.java index 58a323b0..67c6c417 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/ViewHolderState.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/ViewHolderState.java @@ -126,65 +126,65 @@ public void writeToParcel(Parcel dest, int flags) { public ViewHolderState[] newArray(int size) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState# -// ^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#CREATOR.``#newArray(). -// ^^^^ definition local5 +// ^^^^^^^^ definition local6 +// ^^^^ definition local7 return new ViewHolderState[size]; // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState# -// ^^^^ reference local5 +// ^^^^ reference local7 } public ViewHolderState createFromParcel(Parcel source) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState# -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#CREATOR.``#createFromParcel(). +// ^^^^^^^^^^^^^^^^ definition local8 // ^^^^^^ reference _root_/ -// ^^^^^^ definition local6 +// ^^^^^^ definition local9 int size = source.readInt(); -// ^^^^ definition local7 -// ^^^^^^ reference local6 +// ^^^^ definition local10 +// ^^^^^^ reference local9 // ^^^^^^^ reference readInt# ViewHolderState state = new ViewHolderState(size); // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState# -// ^^^^^ definition local8 +// ^^^^^ definition local11 // ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#``(+1). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState# -// ^^^^ reference local7 +// ^^^^ reference local10 for (int i = 0; i < size; i++) { -// ^ definition local9 -// ^ reference local9 -// ^^^^ reference local7 -// ^ reference local9 +// ^ definition local12 +// ^ reference local12 +// ^^^^ reference local10 +// ^ reference local12 long key = source.readLong(); -// ^^^ definition local10 -// ^^^^^^ reference local6 +// ^^^ definition local13 +// ^^^^^^ reference local9 // ^^^^^^^^ reference readLong# ViewState value = source.readParcelable(ViewState.class.getClassLoader()); // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^^ definition local11 -// ^^^^^^ reference local6 +// ^^^^^ definition local14 +// ^^^^^^ reference local9 // ^^^^^^^^^^^^^^ reference readParcelable# // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# // ^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#class. // ^^^^^^^^^^^^^^ reference java/lang/Class#getClassLoader(). state.put(key, value); -// ^^^^^ reference local8 +// ^^^^^ reference local11 // ^^^ reference androidx/collection/LongSparseArray#put(). -// ^^^ reference local10 -// ^^^^^ reference local11 +// ^^^ reference local13 +// ^^^^^ reference local14 } return state; -// ^^^^^ reference local8 +// ^^^^^ reference local11 } }; public boolean hasStateForHolder(EpoxyViewHolder holder) { // ^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#hasStateForHolder(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local12 +// ^^^^^^ definition local15 return get(holder.getItemId()) != null; // ^^^ reference androidx/collection/LongSparseArray#get(). -// ^^^^^^ reference local12 +// ^^^^^^ reference local15 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getItemId# } @@ -192,14 +192,14 @@ public void save(Collection holders) { // ^^^^ definition com/airbnb/epoxy/ViewHolderState#save(). // ^^^^^^^^^^ reference java/util/Collection# // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^^ definition local13 +// ^^^^^^^ definition local16 for (EpoxyViewHolder holder : holders) { // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local14 -// ^^^^^^^ reference local13 +// ^^^^^^ definition local17 +// ^^^^^^^ reference local16 save(holder); // ^^^^ reference com/airbnb/epoxy/ViewHolderState#save(+1). -// ^^^^^^ reference local14 +// ^^^^^^ reference local17 } } @@ -207,9 +207,9 @@ public void save(Collection holders) { public void save(EpoxyViewHolder holder) { // ^^^^ definition com/airbnb/epoxy/ViewHolderState#save(+1). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local15 +// ^^^^^^ definition local18 if (!holder.getModel().shouldSaveViewState()) { -// ^^^^^^ reference local15 +// ^^^^^^ reference local18 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#shouldSaveViewState(). return; @@ -220,28 +220,28 @@ public void save(EpoxyViewHolder holder) { // should have identical ids for all its views, and will just overwrite the previous state. ViewState state = get(holder.getItemId()); // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^^ definition local16 +// ^^^^^ definition local19 // ^^^ reference androidx/collection/LongSparseArray#get(). -// ^^^^^^ reference local15 +// ^^^^^^ reference local18 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getItemId# if (state == null) { -// ^^^^^ reference local16 +// ^^^^^ reference local19 state = new ViewState(); -// ^^^^^ reference local16 +// ^^^^^ reference local19 // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#``(). // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# } state.save(holder.itemView); -// ^^^^^ reference local16 +// ^^^^^ reference local19 // ^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#save(). -// ^^^^^^ reference local15 +// ^^^^^^ reference local18 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView# put(holder.getItemId(), state); // ^^^ reference androidx/collection/LongSparseArray#put(). -// ^^^^^^ reference local15 +// ^^^^^^ reference local18 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getItemId# -// ^^^^^ reference local16 +// ^^^^^ reference local19 } /** @@ -251,9 +251,9 @@ public void save(EpoxyViewHolder holder) { public void restore(EpoxyViewHolder holder) { // ^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#restore(). // ^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder# -// ^^^^^^ definition local17 +// ^^^^^^ definition local20 if (!holder.getModel().shouldSaveViewState()) { -// ^^^^^^ reference local17 +// ^^^^^^ reference local20 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getModel(). // ^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyModel#shouldSaveViewState(). return; @@ -261,22 +261,22 @@ public void restore(EpoxyViewHolder holder) { ViewState state = get(holder.getItemId()); // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^^ definition local18 +// ^^^^^ definition local21 // ^^^ reference androidx/collection/LongSparseArray#get(). -// ^^^^^^ reference local17 +// ^^^^^^ reference local20 // ^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#getItemId# if (state != null) { -// ^^^^^ reference local18 +// ^^^^^ reference local21 state.restore(holder.itemView); -// ^^^^^ reference local18 +// ^^^^^ reference local21 // ^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#restore(). -// ^^^^^^ reference local17 +// ^^^^^^ reference local20 // ^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#itemView# } else { // The first time a model is bound it won't have previous state. We need to make sure // the view is reset to its initial state to clear any changes from previously bound models holder.restoreInitialViewState(); -// ^^^^^^ reference local17 +// ^^^^^^ reference local20 // ^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/EpoxyViewHolder#restoreInitialViewState(). } } @@ -297,68 +297,68 @@ public static class ViewState extends SparseArray implements Parcela private ViewState(int size, int[] keys, Parcelable[] values) { // ^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#``(+1). -// ^^^^ definition local19 -// ^^^^ definition local20 +// ^^^^ definition local22 +// ^^^^ definition local23 // ^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local21 +// ^^^^^^ definition local24 super(size); -// ^^^^ reference local19 +// ^^^^ reference local22 for (int i = 0; i < size; ++i) { -// ^ definition local22 -// ^ reference local22 -// ^^^^ reference local19 -// ^ reference local22 +// ^ definition local25 +// ^ reference local25 +// ^^^^ reference local22 +// ^ reference local25 put(keys[i], values[i]); // ^^^ reference androidx/collection/LongSparseArray#put(). -// ^^^^ reference local20 -// ^ reference local22 -// ^^^^^^ reference local21 -// ^ reference local22 +// ^^^^ reference local23 +// ^ reference local25 +// ^^^^^^ reference local24 +// ^ reference local25 } } public void save(View view) { // ^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#save(). // ^^^^ reference _root_/ -// ^^^^ definition local23 +// ^^^^ definition local26 int originalId = view.getId(); -// ^^^^^^^^^^ definition local24 -// ^^^^ reference local23 +// ^^^^^^^^^^ definition local27 +// ^^^^ reference local26 // ^^^^^ reference getId# setIdIfNoneExists(view); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#setIdIfNoneExists(). -// ^^^^ reference local23 +// ^^^^ reference local26 view.saveHierarchyState(this); -// ^^^^ reference local23 +// ^^^^ reference local26 // ^^^^^^^^^^^^^^^^^^ reference saveHierarchyState# // ^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#this. view.setId(originalId); -// ^^^^ reference local23 +// ^^^^ reference local26 // ^^^^^ reference setId# -// ^^^^^^^^^^ reference local24 +// ^^^^^^^^^^ reference local27 } public void restore(View view) { // ^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#restore(). // ^^^^ reference _root_/ -// ^^^^ definition local25 +// ^^^^ definition local28 int originalId = view.getId(); -// ^^^^^^^^^^ definition local26 -// ^^^^ reference local25 +// ^^^^^^^^^^ definition local29 +// ^^^^ reference local28 // ^^^^^ reference getId# setIdIfNoneExists(view); // ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#setIdIfNoneExists(). -// ^^^^ reference local25 +// ^^^^ reference local28 view.restoreHierarchyState(this); -// ^^^^ reference local25 +// ^^^^ reference local28 // ^^^^^^^^^^^^^^^^^^^^^ reference restoreHierarchyState# // ^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#this. view.setId(originalId); -// ^^^^ reference local25 +// ^^^^ reference local28 // ^^^^^ reference setId# -// ^^^^^^^^^^ reference local26 +// ^^^^^^^^^^ reference local29 } /** @@ -370,14 +370,14 @@ public void restore(View view) { private void setIdIfNoneExists(View view) { // ^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#setIdIfNoneExists(). // ^^^^ reference _root_/ -// ^^^^ definition local27 +// ^^^^ definition local30 if (view.getId() == View.NO_ID) { -// ^^^^ reference local27 +// ^^^^ reference local30 // ^^^^^ reference getId# // ^^^^ reference _root_/ // ^^^^^ reference NO_ID# view.setId(R.id.view_model_state_saving_id); -// ^^^^ reference local27 +// ^^^^ reference local30 // ^^^^^ reference setId# // ^ reference R/ // ^^ reference R/id# @@ -397,48 +397,48 @@ public int describeContents() { public void writeToParcel(Parcel parcel, int flags) { // ^^^^^^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#writeToParcel(). // ^^^^^^ reference _root_/ -// ^^^^^^ definition local28 -// ^^^^^ definition local29 +// ^^^^^^ definition local31 +// ^^^^^ definition local32 int size = size(); -// ^^^^ definition local30 +// ^^^^ definition local33 // ^^^^ reference androidx/collection/LongSparseArray#size(). int[] keys = new int[size]; -// ^^^^ definition local31 -// ^^^^ reference local30 +// ^^^^ definition local34 +// ^^^^ reference local33 Parcelable[] values = new Parcelable[size]; // ^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local32 +// ^^^^^^ definition local35 // ^^^^^^^^^^ reference _root_/ -// ^^^^ reference local30 +// ^^^^ reference local33 for (int i = 0; i < size; ++i) { -// ^ definition local33 -// ^ reference local33 -// ^^^^ reference local30 -// ^ reference local33 +// ^ definition local36 +// ^ reference local36 +// ^^^^ reference local33 +// ^ reference local36 keys[i] = keyAt(i); -// ^^^^ reference local31 -// ^ reference local33 +// ^^^^ reference local34 +// ^ reference local36 // ^^^^^ reference androidx/collection/LongSparseArray#keyAt(). -// ^ reference local33 +// ^ reference local36 values[i] = valueAt(i); -// ^^^^^^ reference local32 -// ^ reference local33 +// ^^^^^^ reference local35 +// ^ reference local36 // ^^^^^^^ reference androidx/collection/LongSparseArray#valueAt(). -// ^ reference local33 +// ^ reference local36 } parcel.writeInt(size); -// ^^^^^^ reference local28 +// ^^^^^^ reference local31 // ^^^^^^^^ reference writeInt# -// ^^^^ reference local30 +// ^^^^ reference local33 parcel.writeIntArray(keys); -// ^^^^^^ reference local28 +// ^^^^^^ reference local31 // ^^^^^^^^^^^^^ reference writeIntArray# -// ^^^^ reference local31 +// ^^^^ reference local34 parcel.writeParcelableArray(values, flags); -// ^^^^^^ reference local28 +// ^^^^^^ reference local31 // ^^^^^^^^^^^^^^^^^^^^ reference writeParcelableArray# -// ^^^^^^ reference local32 -// ^^^^^ reference local29 +// ^^^^^^ reference local35 +// ^^^^^ reference local32 } public static final Creator CREATOR = @@ -457,57 +457,57 @@ public void writeToParcel(Parcel parcel, int flags) { // ^^^^^^^^ reference java/lang/Override# public ViewState createFromParcel(Parcel source, ClassLoader loader) { // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#CREATOR.``#createFromParcel(). +// ^^^^^^^^^^^^^^^^ definition local38 // ^^^^^^ reference _root_/ -// ^^^^^^ definition local34 +// ^^^^^^ definition local39 // ^^^^^^^^^^^ reference java/lang/ClassLoader# -// ^^^^^^ definition local35 +// ^^^^^^ definition local40 int size = source.readInt(); -// ^^^^ definition local36 -// ^^^^^^ reference local34 +// ^^^^ definition local41 +// ^^^^^^ reference local39 // ^^^^^^^ reference readInt# int[] keys = new int[size]; -// ^^^^ definition local37 -// ^^^^ reference local36 +// ^^^^ definition local42 +// ^^^^ reference local41 source.readIntArray(keys); -// ^^^^^^ reference local34 +// ^^^^^^ reference local39 // ^^^^^^^^^^^^ reference readIntArray# -// ^^^^ reference local37 +// ^^^^ reference local42 Parcelable[] values = source.readParcelableArray(loader); // ^^^^^^^^^^ reference _root_/ -// ^^^^^^ definition local38 -// ^^^^^^ reference local34 +// ^^^^^^ definition local43 +// ^^^^^^ reference local39 // ^^^^^^^^^^^^^^^^^^^ reference readParcelableArray# -// ^^^^^^ reference local35 +// ^^^^^^ reference local40 return new ViewState(size, keys, values); // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#``(+1). // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^ reference local36 -// ^^^^ reference local37 -// ^^^^^^ reference local38 +// ^^^^ reference local41 +// ^^^^ reference local42 +// ^^^^^^ reference local43 } @Override // ^^^^^^^^ reference java/lang/Override# public ViewState createFromParcel(Parcel source) { // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#CREATOR.``#createFromParcel(+1). +// ^^^^^^^^^^^^^^^^ definition local44 // ^^^^^^ reference _root_/ -// ^^^^^^ definition local39 +// ^^^^^^ definition local45 return createFromParcel(source, null); -// ^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState#CREATOR.``#createFromParcel(). -// ^^^^^^ reference local39 +// ^^^^^^^^^^^^^^^^ reference local38 +// ^^^^^^ reference local45 } @Override // ^^^^^^^^ reference java/lang/Override# public ViewState[] newArray(int size) { // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^^^^^ definition com/airbnb/epoxy/ViewHolderState#ViewState#CREATOR.``#newArray(). -// ^^^^ definition local40 +// ^^^^^^^^ definition local46 +// ^^^^ definition local47 return new ViewState[size]; // ^^^^^^^^^ reference com/airbnb/epoxy/ViewHolderState#ViewState# -// ^^^^ reference local40 +// ^^^^ reference local47 } }; } diff --git a/tests/snapshots/src/main/generated/minimized/AnonymousClasses.java b/tests/snapshots/src/main/generated/minimized/AnonymousClasses.java index 66a450ea..b0507ee7 100644 --- a/tests/snapshots/src/main/generated/minimized/AnonymousClasses.java +++ b/tests/snapshots/src/main/generated/minimized/AnonymousClasses.java @@ -20,23 +20,23 @@ public static int app(int n) { // ^^^^^^^ reference java/lang/Integer# // ^^ definition local1 new Function() { -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference minimized/AnonymousClasses#app().``#``(). 5:9 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local3 5:9 // ^^^^^^^^ reference java/util/function/Function# // ^^^^^^^^ reference java/util/function/Function# // ^^^^^^^ reference java/lang/Integer# // ^^^^^^^ reference java/lang/Integer# // ^^^^^^^ reference java/lang/Integer# // ^^^^^^^ reference java/lang/Integer# -// ^ definition minimized/AnonymousClasses#app().``#``(). 1:4 +// ^ definition local3 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public Integer apply(Integer integer) { // ^^^^^^^ reference java/lang/Integer# -// ^^^^^ definition minimized/AnonymousClasses#app().``#apply(). +// ^^^^^ definition local4 // ^^^^^^^ reference java/lang/Integer# -// ^^^^^^^ definition local2 +// ^^^^^^^ definition local5 return integer + n; -// ^^^^^^^ reference local2 +// ^^^^^^^ reference local5 // ^ reference local0 } }; diff --git a/tests/snapshots/src/main/generated/minimized/InnerClasses.java b/tests/snapshots/src/main/generated/minimized/InnerClasses.java index 272e16b4..2191991d 100644 --- a/tests/snapshots/src/main/generated/minimized/InnerClasses.java +++ b/tests/snapshots/src/main/generated/minimized/InnerClasses.java @@ -158,23 +158,23 @@ public static void testAnon() { // ^^^^^^ reference java/lang/String# // ^^ definition local7 new InnerInterface() { -// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference minimized/InnerClasses#testAnon().``#``(). 5:9 +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference local9 5:9 // ^^^^^^^^^^^^^^ reference minimized/InnerClasses#InnerInterface# // ^^^^^^^^^^^^^^ reference minimized/InnerClasses#InnerInterface# // ^^^^^^ reference java/lang/String# // ^^^^^^ reference java/lang/String# // ^^^^^^ reference java/lang/String# // ^^^^^^ reference java/lang/String# -// ^ definition minimized/InnerClasses#testAnon().``#``(). 1:4 +// ^ definition local9 1:4 @Override // ^^^^^^^^ reference java/lang/Override# public String apply(String s) { // ^^^^^^ reference java/lang/String# -// ^^^^^ definition minimized/InnerClasses#testAnon().``#apply(). +// ^^^^^ definition local10 // ^^^^^^ reference java/lang/String# -// ^ definition local8 +// ^ definition local11 return s + "b"; -// ^ reference local8 +// ^ reference local11 } }; System.out.println(fn.apply("a")); @@ -189,33 +189,33 @@ public static String app() { // ^^^^^^ reference java/lang/String# // ^^^ definition minimized/InnerClasses#app(). int a = 42; -// ^ definition local9 +// ^ definition local12 InnerStaticClass.innerStaticMethod(); // ^^^^^^^^^^^^^^^^ reference minimized/InnerClasses#InnerStaticClass# // ^^^^^^^^^^^^^^^^^ reference minimized/InnerClasses#InnerStaticClass#innerStaticMethod(). InnerClasses innerClasses = new InnerClasses(a); // ^^^^^^^^^^^^ reference minimized/InnerClasses# -// ^^^^^^^^^^^^ definition local10 +// ^^^^^^^^^^^^ definition local13 // ^^^^^^^^^^^^^^^^^^^ reference minimized/InnerClasses#``(). // ^^^^^^^^^^^^ reference minimized/InnerClasses# -// ^ reference local9 +// ^ reference local12 InnerClass innerClass = innerClasses.new InnerClass(a); // ^^^^^^^^^^ reference minimized/InnerClasses#InnerClass# -// ^^^^^^^^^^ definition local11 -// ^^^^^^^^^^^^ reference local10 +// ^^^^^^^^^^ definition local14 +// ^^^^^^^^^^^^ reference local13 // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ reference minimized/InnerClasses#InnerClass#``(). // ^^^^^^^^^^ reference minimized/InnerClasses#InnerClass# -// ^ reference local9 +// ^ reference local12 innerClass.innerMethod(); -// ^^^^^^^^^^ reference local11 +// ^^^^^^^^^^ reference local14 // ^^^^^^^^^^^ reference minimized/InnerClasses#InnerClass#innerMethod(). System.out.println(runInnerInterface(innerClass, a)); // ^^^^^^ reference java/lang/System# // ^^^ reference java/lang/System#out. // ^^^^^^^ reference java/io/PrintStream#println(+9). // ^^^^^^^^^^^^^^^^^ reference minimized/InnerClasses#runInnerInterface(). -// ^^^^^^^^^^ reference local11 -// ^ reference local9 +// ^^^^^^^^^^ reference local14 +// ^ reference local12 testEnum(InnerEnum.A); // ^^^^^^^^ reference minimized/InnerClasses#testEnum(). // ^^^^^^^^^ reference minimized/InnerClasses#InnerEnum# diff --git a/tests/snapshots/src/main/scala/tests/LibrarySnapshotGenerator.scala b/tests/snapshots/src/main/scala/tests/LibrarySnapshotGenerator.scala index 2e9daa24..cbff47e0 100644 --- a/tests/snapshots/src/main/scala/tests/LibrarySnapshotGenerator.scala +++ b/tests/snapshots/src/main/scala/tests/LibrarySnapshotGenerator.scala @@ -9,6 +9,7 @@ import scala.meta.inputs.Input import scala.meta.internal.io.FileIO import scala.meta.io.AbsolutePath +import com.sourcegraph.lsif_java.DeleteVisitor import coursier.core.Repository import coursier.maven.MavenRepository diff --git a/tests/snapshots/src/main/scala/tests/SaveSnapshotHandler.scala b/tests/snapshots/src/main/scala/tests/SaveSnapshotHandler.scala index 53f73835..9ab266d3 100644 --- a/tests/snapshots/src/main/scala/tests/SaveSnapshotHandler.scala +++ b/tests/snapshots/src/main/scala/tests/SaveSnapshotHandler.scala @@ -7,6 +7,8 @@ import java.util.concurrent.ConcurrentLinkedDeque import scala.jdk.CollectionConverters._ +import com.sourcegraph.lsif_java.DeleteVisitor + class SaveSnapshotHandler extends SnapshotHandler { private val writtenTests = new ConcurrentLinkedDeque[Path]() override def onSnapshotTest( diff --git a/tests/unit/src/main/scala/tests/TempDirectories.scala b/tests/unit/src/main/scala/tests/TempDirectories.scala index 51b60bb0..62193c2e 100644 --- a/tests/unit/src/main/scala/tests/TempDirectories.scala +++ b/tests/unit/src/main/scala/tests/TempDirectories.scala @@ -3,6 +3,7 @@ package tests import java.nio.file.Files import java.nio.file.Path +import com.sourcegraph.lsif_java.DeleteVisitor import munit.FunSuite trait TempDirectories {