Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed a errors that occurred during running unit tests for .NET Framework 4.5 version #123

Closed
wants to merge 1 commit into from

Conversation

Taritsyn
Copy link
Contributor

@Taritsyn Taritsyn commented Jan 4, 2018

No description provided.

@paulbartrum
Copy link
Owner

What errors are you seeing, exactly? I tried switching to your PR branch but I had no errors when running the unit tests.

@Taritsyn
Copy link
Contributor Author

Hello, Paul!

Errors in unit tests for .NET Framework 4.5 version was caused by the following block of code from a Compiler/Emit/ILGenerator/ILLocalVariable.cs file:

#if ENABLE_DEBUGGING
            if (name != null)
                local.SetLocalSymInfo(name);
#endif

I removed this block of code.

@paulbartrum
Copy link
Owner

This is going to result in poorer debugging support though, right? What error message are you getting?

@Taritsyn
Copy link
Contributor Author

If run a Unit Tests project, that targeted on .NET Framework 4.6.1, by using the following command:

dotnet test --framework net461

Then get the following errors (see a full version in the test.log file):

Starting test execution, please wait...
Failed   UnaryPlus
Error Message:
 Test method UnitTests.ExpressionTests.UnaryPlus threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateSet(ILGenerator generator, OptimizationInfo optimizationInfo, PrimitiveType valueType, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 440
   at Jurassic.Compiler.AssignmentExpression.GenerateAssignment(ILGenerator generator, OptimizationInfo optimizationInfo, IReferenceExpression target) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\AssignmentExpression.cs:line 195
   at Jurassic.Compiler.AssignmentExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\AssignmentExpression.cs:line 142
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.UnaryPlus() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 19

Failed   UnaryMinus
Error Message:
 Test method UnitTests.ExpressionTests.UnaryMinus threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateSet(ILGenerator generator, OptimizationInfo optimizationInfo, PrimitiveType valueType, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 440
   at Jurassic.Compiler.AssignmentExpression.GenerateAssignment(ILGenerator generator, OptimizationInfo optimizationInfo, IReferenceExpression target) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\AssignmentExpression.cs:line 195
   at Jurassic.Compiler.AssignmentExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\AssignmentExpression.cs:line 142
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.UnaryMinus() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 34

Failed   BitwiseNot
Error Message:
 Test method UnitTests.ExpressionTests.BitwiseNot threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.UnaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\UnaryExpression.cs:line 130
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.BitwiseNot() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 59

Failed   LogicalNot
Error Message:
 Test method UnitTests.ExpressionTests.LogicalNot threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.UnaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\UnaryExpression.cs:line 130
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.LogicalNot() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 80

Failed   Add
Error Message:
 Test method UnitTests.ExpressionTests.Add threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.BinaryExpression.GenerateAdd(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\BinaryExpression.cs:line 479
   at Jurassic.Compiler.BinaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\BinaryExpression.cs:line 234
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.Add() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 103

Failed   Subtract
Error Message:
 Test method UnitTests.ExpressionTests.Subtract threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.BinaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\BinaryExpression.cs:line 271
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.Subtract() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 191

Failed   Multiply
Error Message:
 Test method UnitTests.ExpressionTests.Multiply threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.BinaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\BinaryExpression.cs:line 271
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.Multiply() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 218

Failed   Divide
Error Message:
 Test method UnitTests.ExpressionTests.Divide threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.BinaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\BinaryExpression.cs:line 271
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.Divide() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 248

Failed   Remainder
Error Message:
 Test method UnitTests.ExpressionTests.Remainder threw exception: 
System.NotSupportedException: Specified method is not supported.
Stack Trace:
    at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name, Int32 startOffset, Int32 endOffset)
   at System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(String name)
   at Jurassic.Compiler.ReflectionEmitILLocalVariable..ctor(LocalBuilder local, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ILLocalVariable.cs:line 122
   at Jurassic.Compiler.ReflectionEmitILGenerator.DeclareVariable(Type type, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\ILGenerator\ReflectionEmitILGenerator.cs:line 282
   at Jurassic.Compiler.OptimizationInfo.GetGlobalPropertyReferenceVariable(ILGenerator generator, String name) in C:\Projects\jurassic\Jurassic\Compiler\Emit\OptimizationInfo.cs:line 192
   at Jurassic.Compiler.NameExpression.GenerateGet(ILGenerator generator, OptimizationInfo optimizationInfo, Boolean throwIfUnresolvable) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 222
   at Jurassic.Compiler.NameExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NameExpression.cs:line 85
   at Jurassic.Compiler.NewExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\NewExpression.cs:line 62
   at Jurassic.Compiler.BinaryExpression.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Expressions\BinaryExpression.cs:line 271
   at Jurassic.Compiler.ExpressionStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\ExpressionStatement.cs:line 74
   at Jurassic.Compiler.BlockStatement.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\Statements\BlockStatement.cs:line 45
   at Jurassic.Compiler.EvalMethodGenerator.GenerateCode(ILGenerator generator, OptimizationInfo optimizationInfo) in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\EvalMethodGenerator.cs:line 78
   at Jurassic.Compiler.MethodGenerator.GenerateCode() in C:\Projects\jurassic\Jurassic\Compiler\MethodGenerator\MethodGenerator.cs:line 242
   at Jurassic.ScriptEngine.Evaluate(ScriptSource source) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 749
   at Jurassic.ScriptEngine.Evaluate(String code) in C:\Projects\jurassic\Jurassic\Core\ScriptEngine.cs:line 708
   at UnitTests.TestBase.Evaluate(String script) in C:\Projects\jurassic\Unit Tests\Utils\TestBase.cs:line 32
   at UnitTests.ExpressionTests.Remainder() in C:\Projects\jurassic\Unit Tests\Compiler\ExpressionTests.cs:line 277

...


Total tests: 508. Passed: 65. Failed: 426. Skipped: 17.
Test execution time: 5,1603 Seconds

@Taritsyn
Copy link
Contributor Author

Any ideas how to fix these errors?

@paulbartrum
Copy link
Owner

If you're getting Specified method is not supported. that probably means you are running on .NET core, not on .NET framework. dotnet test is part of .NET core, so that's not too surprising, but in that case I'm not sure why there's a --framework net461 option.

@Taritsyn
Copy link
Contributor Author

This is a normal test practice for a multi-target project.

@Taritsyn
Copy link
Contributor Author

If you're getting Specified method is not supported. that probably means you are running on .NET core, not on .NET framework.

You can get this error in .NET Framework 4.5 version of Jurassic, even if you run the simplest console application:

using Jurassic;

namespace ConsoleApp
{
	class Program
	{
		static void Main(string[] args)
		{
			var engine = new ScriptEngine();
			engine.Execute("var engines = ['Chakra', 'Jurassic', 'SpiderMonkey', 'V8'];");
		}
	}
}

This error is caused by the following block of code from a Compiler/Emit/ILGenerator/ILLocalVariable.cs file:

if (name != null)
    local.SetLocalSymInfo(name);

This block of code is never called in .NET Standard 2.0 version of Jurassic. For a long time this block was commented out.

@paulbartrum
Copy link
Owner

You're right, I apologize. I've checked in a fix that preserves the debugging functionality (67740c1).

@Taritsyn
Copy link
Contributor Author

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants