Merge "Revert "Add some more tests for member lookup.""
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index ae370ae..cb19bad 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -19,6 +19,7 @@
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
+import com.android.tools.r8.utils.VersionProperties;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
@@ -153,9 +154,13 @@
     if (options.hasMarker()) {
       return options.getMarker();
     }
-    return new Marker(Tool.D8)
+    Marker marker = new Marker(Tool.D8)
         .put("version", Version.LABEL)
         .put("min-api", options.minApiLevel);
+    if (Version.isDev()) {
+      marker.put("sha-1", VersionProperties.INSTANCE.getSha());
+    }
+    return marker;
   }
 
   private static CompilationResult runForTesting(
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 2b21efc..76a6ed1 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -48,6 +48,7 @@
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.Timing;
+import com.android.tools.r8.utils.VersionProperties;
 import com.google.common.io.ByteStreams;
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
@@ -78,9 +79,13 @@
     if (options.hasMarker()) {
       return options.getMarker();
     }
-    return new Marker(Tool.R8)
+    Marker marker = new Marker(Tool.R8)
         .put("version", Version.LABEL)
         .put("min-api", options.minApiLevel);
+    if (Version.isDev()) {
+      marker.put("sha-1", VersionProperties.INSTANCE.getSha());
+    }
+    return marker;
   }
 
   public static void writeApplication(
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index c59c205..44e1bf4 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8;
 
 import com.android.tools.r8.utils.VersionProperties;
-import java.io.IOException;
 
 public final class Version {
 
@@ -16,13 +15,10 @@
 
   public static void printToolVersion(String toolName) {
     System.out.println(toolName + " " + Version.LABEL);
-    try {
-      VersionProperties version =
-          new VersionProperties(Version.class.getClassLoader());
-      System.out.println(version.getDescription());
-    } catch (IOException e) {
-      System.out.println("eng build");
-    }
+    System.out.println(VersionProperties.INSTANCE.getDescription());
+  }
 
+  public static boolean isDev() {
+    return LABEL.endsWith("-dev") || VersionProperties.INSTANCE.isEngineering();
   }
 }
diff --git a/src/main/java/com/android/tools/r8/utils/VersionProperties.java b/src/main/java/com/android/tools/r8/utils/VersionProperties.java
index 57aea8b..28ac2ef 100644
--- a/src/main/java/com/android/tools/r8/utils/VersionProperties.java
+++ b/src/main/java/com/android/tools/r8/utils/VersionProperties.java
@@ -14,16 +14,29 @@
  */
 public class VersionProperties {
 
+  public static final VersionProperties INSTANCE = get();
+
   private static final String VERSION_CODE_KEY = "version-file.version.code";
   private static final String SHA_KEY = "version.sha";
   private static final String RELEASER_KEY = "releaser";
 
   private static final String RESOURCE_NAME = "r8-version.properties";
 
-  private String codeBase;
+  private String sha;
   private String releaser;
 
-  public VersionProperties(ClassLoader loader)
+  private static VersionProperties get() {
+    try {
+      return new VersionProperties(VersionProperties.class.getClassLoader());
+    } catch (IOException e) {
+      return new VersionProperties();
+    }
+  }
+
+  private VersionProperties() {
+  }
+
+  private VersionProperties(ClassLoader loader)
       throws IOException {
     try (InputStream resourceStream = loader.getResourceAsStream(RESOURCE_NAME)) {
       if (resourceStream == null) {
@@ -40,20 +53,24 @@
     long versionFileVersion = Long.parseLong(prop.getProperty(VERSION_CODE_KEY));
     assert versionFileVersion >= 1;
 
-    codeBase = prop.getProperty(SHA_KEY);
+    sha = prop.getProperty(SHA_KEY);
     releaser = prop.getProperty(RELEASER_KEY);
   }
 
   public String getDescription() {
-    if (codeBase != null && !codeBase.trim().isEmpty()) {
-      return "build " + codeBase + (releaser != null ? " from " + releaser : "");
-    } else {
-      return "eng build" + (releaser != null ? " from " + releaser : "");
-    }
+    return "build " + getSha() + (releaser != null ? " from " + releaser : "");
+  }
+
+  public String getSha() {
+    return isEngineering() ? "engineering" : sha;
   }
 
   @Override
   public String toString() {
-    return codeBase + " from " + releaser;
+    return sha + " from " + releaser;
+  }
+
+  public boolean isEngineering() {
+    return sha == null || sha.trim().isEmpty();
   }
 }