diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
index 8a1bb7e..99b604e 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkImports.java
@@ -181,11 +181,12 @@
 
   @VisibleForTesting
   static final String EXTERNAL_PKG_NOT_ALLOWED_MSG =
-  "Skylark files may not be loaded from the //external package";
+      "Skylark files may not be loaded from the //external package";
 
   @VisibleForTesting
-  static final String BZL_EXT_IMPLICIT_MSG =
-  "The '.bzl' file extension is implicit; remove it from the path";
+  static final String INVALID_PATH_SYNTAX =
+      "Don't use paths for Load statements; "
+      + "use a label instead, e.g. '//foo:bar.bzl' or ':bar.bzl'";
 
   @VisibleForTesting
   static final String INVALID_TARGET_PREFIX = "Invalid target: ";
@@ -193,10 +194,6 @@
   @VisibleForTesting
   static final String INVALID_FILENAME_PREFIX = "Invalid filename: ";
 
-  @VisibleForTesting
-  static final String RELATIVE_PATH_NO_SUBDIRS_MSG =
-  "A relative import path may not contain subdirectories";
-
   /**
    * Creates and syntactically validates a {@link SkylarkImports} instance from a string.
    * <p>
@@ -226,7 +223,7 @@
     } else if (importString.startsWith("/")) {
       // Absolute path.
       if (importString.endsWith(".bzl")) {
-        throw new SkylarkImportSyntaxException(BZL_EXT_IMPLICIT_MSG);
+        throw new SkylarkImportSyntaxException(INVALID_PATH_SYNTAX);
       }
       PathFragment importPath = new PathFragment(importString + ".bzl");
       return new AbsolutePathImport(importString, importPath);
@@ -245,11 +242,8 @@
       return new RelativeLabelImport(importString, importTarget);
     } else {
       // Relative path.
-      if (importString.endsWith(".bzl")) {
-        throw new SkylarkImportSyntaxException(BZL_EXT_IMPLICIT_MSG);
-      }
-      if (importString.contains("/")) {
-        throw new SkylarkImportSyntaxException(RELATIVE_PATH_NO_SUBDIRS_MSG);
+      if (importString.endsWith(".bzl") || importString.contains("/")) {
+        throw new SkylarkImportSyntaxException(INVALID_PATH_SYNTAX);
       }
       String importTarget = importString + ".bzl";
       String maybeErrMsg = LabelValidator.validateTargetName(importTarget);
@@ -261,4 +255,3 @@
     }
   }
 }
-
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
index 8e51987..4cc1e94 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
@@ -1142,12 +1142,12 @@
 
   @Test
   public void testInvalidRelativePathBzlExtImplicit() throws Exception {
-    invalidImportTest("file.bzl", SkylarkImports.BZL_EXT_IMPLICIT_MSG);
+    invalidImportTest("file.bzl", SkylarkImports.INVALID_PATH_SYNTAX);
   }
 
   @Test
   public void testInvalidRelativePathNoSubdirs() throws Exception {
-    invalidImportTest("path/to/file", SkylarkImports.RELATIVE_PATH_NO_SUBDIRS_MSG);
+    invalidImportTest("path/to/file", SkylarkImports.INVALID_PATH_SYNTAX);
   }
 
   @Test
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java
index ae0f98e..49fdd73 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java
@@ -201,7 +201,7 @@
 
   @Test
   public void tesInvalidAbsolutePathBzlExtImplicit() throws Exception {
-    invalidImportTest("/some/skylark/file.bzl", SkylarkImports.BZL_EXT_IMPLICIT_MSG);
+    invalidImportTest("/some/skylark/file.bzl", SkylarkImports.INVALID_PATH_SYNTAX);
   }
 
   @Test
@@ -216,12 +216,12 @@
 
   @Test
   public void testInvalidRelativePathBzlExtImplicit() throws Exception {
-    invalidImportTest("file.bzl", SkylarkImports.BZL_EXT_IMPLICIT_MSG);
+    invalidImportTest("file.bzl", SkylarkImports.INVALID_PATH_SYNTAX);
   }
 
   @Test
   public void testInvalidRelativePathNoSubdirs() throws Exception {
-    invalidImportTest("path/to/file", SkylarkImports.RELATIVE_PATH_NO_SUBDIRS_MSG);
+    invalidImportTest("path/to/file", SkylarkImports.INVALID_PATH_SYNTAX);
   }
 
   @Test
@@ -230,4 +230,3 @@
     invalidImportTest("\tfile", SkylarkImports.INVALID_FILENAME_PREFIX);
   }
 }
-
