{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/corefx/issues/4023","labels_url":"https://api.github.com/repos/dotnet/corefx/issues/4023/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/4023/comments","events_url":"https://api.github.com/repos/dotnet/corefx/issues/4023/events","html_url":"https://github.com/dotnet/corefx/pull/4023","id":112497871,"number":4023,"title":"Interpreter/compiler cross-check tests","user":{"login":"bartdesmet","id":7324746,"avatar_url":"https://avatars.githubusercontent.com/u/7324746?v=3","gravatar_id":"","url":"https://api.github.com/users/bartdesmet","html_url":"https://github.com/bartdesmet","followers_url":"https://api.github.com/users/bartdesmet/followers","following_url":"https://api.github.com/users/bartdesmet/following{/other_user}","gists_url":"https://api.github.com/users/bartdesmet/gists{/gist_id}","starred_url":"https://api.github.com/users/bartdesmet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bartdesmet/subscriptions","organizations_url":"https://api.github.com/users/bartdesmet/orgs","repos_url":"https://api.github.com/users/bartdesmet/repos","events_url":"https://api.github.com/users/bartdesmet/events{/privacy}","received_events_url":"https://api.github.com/users/bartdesmet/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/corefx/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":{"login":"VSadov","id":8218165,"avatar_url":"https://avatars.githubusercontent.com/u/8218165?v=3","gravatar_id":"","url":"https://api.github.com/users/VSadov","html_url":"https://github.com/VSadov","followers_url":"https://api.github.com/users/VSadov/followers","following_url":"https://api.github.com/users/VSadov/following{/other_user}","gists_url":"https://api.github.com/users/VSadov/gists{/gist_id}","starred_url":"https://api.github.com/users/VSadov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VSadov/subscriptions","organizations_url":"https://api.github.com/users/VSadov/orgs","repos_url":"https://api.github.com/users/VSadov/repos","events_url":"https://api.github.com/users/VSadov/events{/privacy}","received_events_url":"https://api.github.com/users/VSadov/received_events","type":"User","site_admin":false},"milestone":null,"comments":3,"created_at":"2015-10-21T02:20:57Z","updated_at":"2015-10-21T02:52:58Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/4023","html_url":"https://github.com/dotnet/corefx/pull/4023","diff_url":"https://github.com/dotnet/corefx/pull/4023.diff","patch_url":"https://github.com/dotnet/corefx/pull/4023.patch"},"body":"This addresses issue #3995 by\r\n\r\n- adding an expression catalog\r\n- using the catalog to run Compile(true) and Compile() to cross-check results\r\n\r\nThere's a total of 154428 expressions in the catalog. The large number is mostly due to the large number of variations of unary and binary expressions with primitive types and a series of interesting values for each of those types (e.g. to trigger overflow conditions etc.). A breakdown per type is shown below:\r\n\r\n| Node type             | Count |\r\n| --------------------- | ----: |\r\n| Add                   | 1669  |\r\n| AddAssign             | 7476  |\r\n| AddAssignChecked      | 7476  |\r\n| AddChecked            | 1669  |\r\n| And                   | 1470  |\r\n| AndAlso               | 50    |\r\n| AndAssign             | 6680  |\r\n| ArrayIndex            | 7     |\r\n| ArrayLength           | 3     |\r\n| Assign                | 8     |\r\n| Block                 | 18    |\r\n| Call                  | 129   |\r\n| Coalesce              | 12    |\r\n| Conditional           | 1928  |\r\n| Constant              | 11    |\r\n| Convert               | 7890  |\r\n| ConvertChecked        | 6674  |\r\n| DebugInfo             | 1     |\r\n| Decrement             | 169   |\r\n| Default               | 6     |\r\n| Divide                | 1669  |\r\n| DivideAssign          | 7476  |\r\n| Dynamic               | 0     |\r\n| Equal                 | 2016  |\r\n| ExclusiveOr           | 1470  |\r\n| ExclusiveOrAssign     | 6680  |\r\n| Extension             | 1     |\r\n| Goto                  | 3     |\r\n| GreaterThan           | 1975  |\r\n| GreaterThanOrEqual    | 1975  |\r\n| Increment             | 169   |\r\n| Index                 | 12    |\r\n| Invoke                | 11    |\r\n| IsFalse               | 14    |\r\n| IsTrue                | 14    |\r\n| Label                 | 0     |\r\n| Lambda                | 34    |\r\n| LeftShift             | 1653  |\r\n| LeftShiftAssign       | 7412  |\r\n| LessThan              | 1975  |\r\n| LessThanOrEqual       | 1975  |\r\n| ListInit              | 10    |\r\n| Loop                  | 3     |\r\n| MemberAccess          | 14    |\r\n| MemberInit            | 19    |\r\n| Modulo                | 1669  |\r\n| ModuloAssign          | 7476  |\r\n| Multiply              | 1669  |\r\n| MultiplyAssign        | 7476  |\r\n| MultiplyAssignChecked | 7476  |\r\n| MultiplyChecked       | 1669  |\r\n| Negate                | 130   |\r\n| NegateChecked         | 130   |\r\n| New                   | 13    |\r\n| NewArrayBounds        | 6     |\r\n| NewArrayInit          | 2     |\r\n| Not                   | 14    |\r\n| NotEqual              | 2016  |\r\n| OnesComplement        | 123   |\r\n| Or                    | 1470  |\r\n| OrAssign              | 6680  |\r\n| OrElse                | 50    |\r\n| Parameter             | 5     |\r\n| PostDecrementAssign   | 676   |\r\n| PostIncrementAssign   | 676   |\r\n| Power                 | 265   |\r\n| PowerAssign           | 1460  |\r\n| PreDecrementAssign    | 676   |\r\n| PreIncrementAssign    | 676   |\r\n| Quote                 | 2     |\r\n| RightShift            | 1653  |\r\n| RightShiftAssign      | 7412  |\r\n| RuntimeVariables      | 1     |\r\n| Subtract              | 1669  |\r\n| SubtractAssign        | 7476  |\r\n| SubtractAssignChecked | 7476  |\r\n| SubtractChecked       | 1669  |\r\n| Switch                | 611   |\r\n| Throw                 | 0     |\r\n| Try                   | 0     |\r\n| TypeAs                | 3775  |\r\n| TypeEqual             | 39    |\r\n| TypeIs                | 39    |\r\n| UnaryPlus             | 169   |\r\n| Unbox                 | 8     |\r\n\r\nNotice a few types lack tests, i.e. Try, Throw, Dynamic, and Label. Some have relatively few tests. All of those gaps will be addressed in a future iteration, but nothing should hold back this corpus of expressions from going in to the test suite.\r\n\r\nSome issues were found while running those tests. Those are shown below:\r\n\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Throw [SKIP]\r\n        #3995\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Dynamic [SKIP]\r\n        #3995\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Label [SKIP]\r\n        #3995\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Try [SKIP]\r\n        #3995\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_MemberInit [SKIP]\r\n        #4018\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Convert [SKIP]\r\n        #4019\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Invoke [SKIP]\r\n        #4020\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_Unbox [SKIP]\r\n        #4021\r\n     Tests.Expressions.InterpreterTests.CompileInterpretCrossCheck_ConvertChecked [SKIP]\r\n        #4022\r\n\r\nEach of those has a separate issue tracking the problem. The ones referring back to #3995 are the ones that have zero tests thus far, but that will be addressed in a future iteration as explained above."},"comment":{"url":"https://api.github.com/repos/dotnet/corefx/issues/comments/149767303","html_url":"https://github.com/dotnet/corefx/pull/4023#issuecomment-149767303","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/4023","id":149767303,"user":{"login":"bartdesmet","id":7324746,"avatar_url":"https://avatars.githubusercontent.com/u/7324746?v=3","gravatar_id":"","url":"https://api.github.com/users/bartdesmet","html_url":"https://github.com/bartdesmet","followers_url":"https://api.github.com/users/bartdesmet/followers","following_url":"https://api.github.com/users/bartdesmet/following{/other_user}","gists_url":"https://api.github.com/users/bartdesmet/gists{/gist_id}","starred_url":"https://api.github.com/users/bartdesmet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bartdesmet/subscriptions","organizations_url":"https://api.github.com/users/bartdesmet/orgs","repos_url":"https://api.github.com/users/bartdesmet/repos","events_url":"https://api.github.com/users/bartdesmet/events{/privacy}","received_events_url":"https://api.github.com/users/bartdesmet/received_events","type":"User","site_admin":false},"created_at":"2015-10-21T02:52:58Z","updated_at":"2015-10-21T02:52:58Z","body":"Note that the new tests only run when built with /p:FeatureInterpret=true."}}