Kaynağa Gözat

Improved cross-OS compatibility for sourcemap URL resolution.

Dmitry Panov 7 ay önce
ebeveyn
işleme
311323fba4
2 değiştirilmiş dosya ile 5 ekleme ve 2 silme
  1. 4 2
      file/file.go
  2. 1 0
      file/file_test.go

+ 4 - 2
file/file.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"net/url"
 	"path"
+	"path/filepath"
 	"sort"
 	"strings"
 	"sync"
@@ -182,9 +183,10 @@ func (fl *File) Position(offset int) Position {
 
 func ResolveSourcemapURL(basename, source string) *url.URL {
 	// if the url is absolute(has scheme) there is nothing to do
-	smURL, err := url.Parse(strings.TrimSpace(source))
+	smURL, err := url.Parse(filepath.ToSlash(strings.TrimSpace(source)))
 	if err == nil && !smURL.IsAbs() {
-		baseURL, err1 := url.Parse(strings.TrimSpace(basename))
+		basename = filepath.ToSlash(strings.TrimSpace(basename))
+		baseURL, err1 := url.Parse(basename)
 		if err1 == nil && path.IsAbs(baseURL.Path) {
 			smURL = baseURL.ResolveReference(smURL)
 		} else {

+ 1 - 0
file/file_test.go

@@ -63,6 +63,7 @@ func TestGetSourceFilename(t *testing.T) {
 		{"../test.js", "https://example.com/somewhere/else/base.js", "https://example.com/somewhere/test.js"},
 		{"\ntest.js", "base123.js", "test.js"},
 		{"\rtest2.js\t\n  ", "base123.js", "test2.js"},
+		{"z:/file.map", "a.js", "z:/file.map"},
 		// TODO find something that won't parse
 	}
 	for _, test := range tests {