Эх сурвалжийг харах

Only emit Atomic.d.ts when building desktop, use search paths to locate map files

Josh Engebretson 10 жил өмнө
parent
commit
2cda9feaa1

+ 1 - 1
Source/AtomicEditor/Application/AEEditorApp.cpp

@@ -147,7 +147,7 @@ void AEEditorApp::HandleJSError(StringHash eventType, VariantMap& eventData)
     String errMessage = eventData[P_ERRORMESSAGE].GetString();
     String errFilename = eventData[P_ERRORFILENAME].GetString();
     //String errStack = eventData[P_ERRORSTACK].GetString();
-    int errLineNumber = vm_->GetRealLineNumber("AtomicEditor/out/" + errFilename, eventData[P_ERRORLINENUMBER].GetInt());
+    int errLineNumber = vm_->GetRealLineNumber(errFilename, eventData[P_ERRORLINENUMBER].GetInt());
     
     String errorString = ToString("%s - %s - Line: %i", errFilename.CString(), errMessage.CString(), errLineNumber);
 

+ 31 - 4
Source/AtomicJS/Javascript/JSVM.cpp

@@ -248,19 +248,46 @@ void JSVM::SendJSErrorEvent(const String& filename)
 }
 
 int JSVM::GetRealLineNumber(const String& fileName, const int lineNumber) {
+
     int realLineNumber = lineNumber;
-    String path = fileName;
-    if (!path.EndsWith(".js.map"))
-        path += ".js.map";
-    if (path.EndsWith(".js")) {
+
+    String mapPath = fileName;
+
+    if (!mapPath.EndsWith(".js.map"))
+        mapPath += ".js.map";
+
+    if (mapPath.EndsWith(".js")) {
         return realLineNumber;
     }
+
+    ResourceCache* cache = GetSubsystem<ResourceCache>();
+
+    String path;
+    const Vector<String>& searchPaths = GetModuleSearchPaths();
+    for (unsigned i = 0; i < searchPaths.Size(); i++)
+    {
+        String checkPath = searchPaths[i] + mapPath;
+
+        if (cache->Exists(checkPath))
+        {
+            path = checkPath;
+            break;
+        }
+
+    }
+
+    if (!path.Length())
+        return realLineNumber;
+
+
     SharedPtr<File> mapFile(GetSubsystem<ResourceCache>()->GetFile(path));
+
     //if there's no source map file, maybe you use a pure js, so give an error, or maybe forgot to generate source-maps :(
     if (mapFile.Null()) 
     {
         return realLineNumber;
     }    
+
     String map;
     mapFile->ReadText(map);
     int top = duk_get_top(ctx_);

+ 9 - 6
Source/ToolCore/JSBind/JSBPackage.cpp

@@ -78,14 +78,17 @@ void JSBPackage::GenerateSource(const String &outPath)
 
     JSBind* jsbind = GetSubsystem<JSBind>();
 
-    JSBDoc jdoc;
-    jdoc.Emit(this, jsbind->GetSourceRootFolder() + "Artifacts/JSDoc/" + name_ + ".js");
+    if (jsbind->GetPlatform() == "MACOSX" || jsbind->GetPlatform() == "WINDOWS" || jsbind->GetPlatform() == "LINUX")
+    {
+        JSBDoc jdoc;
+        jdoc.Emit(this, jsbind->GetSourceRootFolder() + "Artifacts/JSDoc/" + name_ + ".js");
 
-    JSBTypeScript ts;
-    ts.Emit(this, jsbind->GetSourceRootFolder() + "Script/TypeScript/" + name_ + ".d.ts");
+        JSBTypeScript ts;
+        ts.Emit(this, jsbind->GetSourceRootFolder() + "Script/TypeScript/" + name_ + ".d.ts");
 
-    JSBHaxe hx;
-    hx.Emit(this, jsbind->GetSourceRootFolder() + "Script/Haxe/" + name_ + ".hx");
+        JSBHaxe hx;
+        hx.Emit(this, jsbind->GetSourceRootFolder() + "Script/Haxe/" + name_ + ".hx");
+    }
 }
 
 JSBClass* JSBPackage::GetClass(const String& name)