Logical rollback of unknown commit: an artifact with an empty path is legitimate.

PiperOrigin-RevId: 295789272
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
index e88894b..3e7db23 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java
@@ -72,9 +72,8 @@
   private static class BasicActionInput implements ActionInput {
     private final String path;
 
-    public BasicActionInput(String path) {
+    BasicActionInput(String path) {
       this.path = Preconditions.checkNotNull(path);
-      Preconditions.checkArgument(!path.isEmpty());
     }
 
     // TODO(lberki): Plumb this flag from InputTree.build() somehow.
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index 4f46206..7049e0f 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -269,10 +269,6 @@
 
   private Artifact(ArtifactRoot root, PathFragment execPath, boolean contentBasedPath) {
     Preconditions.checkNotNull(root);
-    if (execPath.isEmpty()) {
-      throw new IllegalArgumentException(
-          "it is illegal to create an artifact with an empty execPath");
-    }
     // The ArtifactOwner is not part of this computation because it is very rare that two Artifacts
     // have the same execPath and different owners, so a collision is fine there. If this is
     // changed, OwnerlessArtifactWrapper must also be changed.
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index 432115a..0e0c4ee 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -83,6 +83,14 @@
   };
 
   @Test
+  public void directoryArtifactInRoot() throws Exception {
+    scratch.file(
+        "BUILD", "genrule(name = 'slurps_dir', srcs = ['.'], outs = ['out'], cmd = 'touch $@')");
+    // Expect no errors.
+    update("//:slurps_dir");
+  }
+
+  @Test
   public void testRuleConfiguredTarget() throws Exception {
     scratch.file("pkg/BUILD",
         "genrule(name='foo', ",