diff mbox

Go patch committed: Don't use import path for ./ or ../ imports

Message ID mcrmx9mglaw.fsf@dhcp-172-18-216-180.mtv.corp.google.com
State New
Headers show

Commit Message

Ian Lance Taylor Jan. 17, 2012, 7:51 p.m. UTC
When importing a path which starts with ./ or ../, we should not use the
import path.  This patch implements that.  This makes gccgo compatible
with the other Go compiler in how such paths are handled.  Bootstrapped
and ran Go testsuite on x86_64-unknown-linux-gnu.  Committed to
mainline.

Ian
diff mbox

Patch

diff -r 90c1cf927434 go/import.cc
--- a/go/import.cc	Tue Jan 17 06:18:15 2012 -0800
+++ b/go/import.cc	Tue Jan 17 11:42:44 2012 -0800
@@ -42,8 +42,8 @@ 
 // returns a pointer to a Stream object to read the data that it
 // exports.  If the file is not found, it returns NULL.
 
-// When FILENAME is not an absolute path, we use the search path
-// provided by -I and -L options.
+// When FILENAME is not an absolute path and does not start with ./ or
+// ../, we use the search path provided by -I and -L options.
 
 // When FILENAME does not exist, we try modifying FILENAME to find the
 // file.  We use the first of these which exists:
@@ -61,7 +61,18 @@ 
 Import::Stream*
 Import::open_package(const std::string& filename, Location location)
 {
-  if (!IS_ABSOLUTE_PATH(filename))
+  bool is_local;
+  if (IS_ABSOLUTE_PATH(filename))
+    is_local = true;
+  else if (filename[0] == '.' && IS_DIR_SEPARATOR(filename[1]))
+    is_local = true;
+  else if (filename[0] == '.'
+	   && filename[1] == '.'
+	   && IS_DIR_SEPARATOR(filename[2]))
+    is_local = true;
+  else
+    is_local = false;
+  if (!is_local)
     {
       for (std::vector<std::string>::const_iterator p = search_path.begin();
 	   p != search_path.end();