Browse Source

Displaying error message in Repl

Sebastien Ros 11 years ago
parent
commit
886f59c3a3

+ 1 - 1
Jint.Repl/Program.cs

@@ -32,7 +32,7 @@ namespace Jint.Repl
                 catch (JavaScriptException je)
                 {
                     Console.ForegroundColor = ConsoleColor.Red;
-                    Console.WriteLine("Error => {0}", engine.Json.Stringify(engine.Json, Arguments.From(je.Error, Undefined.Instance, "  ")));
+                    Console.WriteLine(je.ToString());
                 }
                 
             }

+ 1 - 1
Jint/Engine.cs

@@ -367,7 +367,7 @@ namespace Jint
 
             if (reference.IsUnresolvableReference())
             {
-                throw new JavaScriptException(ReferenceError);
+                throw new JavaScriptException(ReferenceError, reference.GetReferencedName() + " is not defined");
             }
 
             var baseValue = reference.GetBase();

+ 6 - 0
Jint/Native/Error/ErrorInstance.cs

@@ -1,4 +1,5 @@
 using Jint.Native.Object;
+using Jint.Runtime;
 
 namespace Jint.Native.Error
 {
@@ -18,5 +19,10 @@ namespace Jint.Native.Error
                 return "Error";
             }
         }
+
+        public override string ToString()
+        {
+            return Engine.Error.PrototypeObject.ToString(this, Arguments.Empty).ToObject().ToString();
+        }
     }
 }

+ 1 - 1
Jint/Native/Error/ErrorPrototype.cs

@@ -33,7 +33,7 @@ namespace Jint.Native.Error
             FastAddProperty("toString", new ClrFunctionInstance(Engine, ToString), true, false, true);
         }
 
-        private JsValue ToString(JsValue thisObject, JsValue[] arguments)
+        public JsValue ToString(JsValue thisObject, JsValue[] arguments)
         {
             var o = thisObject.TryCast<ObjectInstance>();
             if (o == null)

+ 23 - 0
Jint/Native/JsValue.cs

@@ -352,6 +352,29 @@ namespace Jint.Native
             }
         }
 
+        public override string ToString()
+        {
+            switch (Type)
+            {
+                case Types.None:
+                    return "None";
+                case Types.Undefined:
+                    return "undefined";
+                case Types.Null:
+                    return "null";
+                case Types.Boolean:
+                    return _bool.ToString();
+                case Types.String:
+                    return _string;
+                case Types.Number:
+                    return _double.ToString();
+                case Types.Object:
+                    return _object.ToString();
+                default:
+                    return string.Empty;
+            }
+        }
+
         public static bool operator ==(JsValue a, JsValue b)
         {
             return a.Equals(b);

+ 5 - 1
Jint/Runtime/JavaScriptException.cs

@@ -23,7 +23,6 @@ namespace Jint.Runtime
             : base(GetErrorMessage(error))
         {
             _errorObject = error;
-            
         }
 
         private static string GetErrorMessage(JsValue error) 
@@ -39,5 +38,10 @@ namespace Jint.Runtime
         }
 
         public JsValue Error { get { return _errorObject; } }
+
+        public override string ToString()
+        {
+            return _errorObject.ToString();
+        }
     }
 }