{"action":"created","comment":{"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments/71107211","id":71107211,"diff_hunk":"@@ -75,85 +77,82 @@ internal ProgramState SetConstraint(SymbolicValueConstraint constraint, ProgramS\n             return new ProgramState(\n                 programState.Values,\n                 programState.Constraints.SetItem(this, constraint),\n-                programState.ProgramPointVisitCounts);\n+                programState.ProgramPointVisitCounts,\n+                programState.ExpressionStack);\n         }\n \n-        public bool TrySetConstraint(SymbolicValueConstraint constraint, ProgramState currentProgramState, out ProgramState newProgramState)\n+        public bool HasConstraint(SymbolicValueConstraint constraint, ProgramState programState)\n         {\n-            newProgramState = null;\n+            return programState.Constraints.ContainsKey(this) &&\n+                programState.Constraints[this].Implies(constraint);\n+        }\n \n+        public virtual IEnumerable<ProgramState> TrySetConstraint(SymbolicValueConstraint constraint, ProgramState currentProgramState)\n+        {\n             SymbolicValueConstraint oldConstraint;\n             if (!currentProgramState.Constraints.TryGetValue(this, out oldConstraint))\n             {\n-                newProgramState = SetConstraint(constraint, currentProgramState);\n-                return true;\n+                return new[] { SetConstraint(constraint, currentProgramState) };\n             }\n \n             var boolConstraint = constraint as BoolConstraint;\n             if (boolConstraint != null)\n             {\n-                return TrySetConstraint(boolConstraint, oldConstraint, currentProgramState, out newProgramState);\n+                return TrySetConstraint(boolConstraint, oldConstraint, currentProgramState);\n             }\n \n             var objectConstraint = constraint as ObjectConstraint;\n             if (objectConstraint != null)\n             {\n-                return TrySetConstraint(objectConstraint, oldConstraint, currentProgramState, out newProgramState);\n+                return TrySetConstraint(objectConstraint, oldConstraint, currentProgramState);\n             }\n \n             throw new NotSupportedException($\"Neither {nameof(BoolConstraint)}, nor {nameof(ObjectConstraint)}\");","path":"src/SonarLint/Helpers/SymbolicExecution/SymbolicValues/SymbolicValue.cs","position":50,"original_position":50,"commit_id":"9da2584102cc9aa0e7e1e99534c44371c8e848be","original_commit_id":"9da2584102cc9aa0e7e1e99534c44371c8e848be","user":{"login":"SonarTech","id":1842438,"avatar_url":"https://avatars.githubusercontent.com/u/1842438?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarTech","html_url":"https://github.com/SonarTech","followers_url":"https://api.github.com/users/SonarTech/followers","following_url":"https://api.github.com/users/SonarTech/following{/other_user}","gists_url":"https://api.github.com/users/SonarTech/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarTech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarTech/subscriptions","organizations_url":"https://api.github.com/users/SonarTech/orgs","repos_url":"https://api.github.com/users/SonarTech/repos","events_url":"https://api.github.com/users/SonarTech/events{/privacy}","received_events_url":"https://api.github.com/users/SonarTech/received_events","type":"User","site_admin":false},"body":"![MAJOR](https://raw.githubusercontent.com/SonarCommunity/sonar-github/master/images/severity-major.png) Correct the spelling of the unrecognized token 'BoolConstraint' in the literal '\"BoolConstraint\"'. [![rule](https://raw.githubusercontent.com/SonarCommunity/sonar-github/master/images/rule.png)](https://dory.sonarsource.com/sonarqube/coding_rules#rule_key=fxcop%3ALiteralsShouldBeSpelledCorrectly)\n![MAJOR](https://raw.githubusercontent.com/SonarCommunity/sonar-github/master/images/severity-major.png) Correct the spelling of the unrecognized token 'ObjectConstraint' in the literal '\"ObjectConstraint\"'. [![rule](https://raw.githubusercontent.com/SonarCommunity/sonar-github/master/images/rule.png)](https://dory.sonarsource.com/sonarqube/coding_rules#rule_key=fxcop%3ALiteralsShouldBeSpelledCorrectly)\n","created_at":"2016-07-18T07:24:27Z","updated_at":"2016-07-18T07:24:27Z","html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/948#discussion_r71107211","pull_request_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948","_links":{"self":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments/71107211"},"html":{"href":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/948#discussion_r71107211"},"pull_request":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948"}}},"pull_request":{"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948","id":77765439,"html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/948","diff_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/948.diff","patch_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/948.patch","issue_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/948","number":948,"state":"open","locked":false,"title":"SLVS-939","user":{"login":"tvsonar","id":11485373,"avatar_url":"https://avatars.githubusercontent.com/u/11485373?v=3","gravatar_id":"","url":"https://api.github.com/users/tvsonar","html_url":"https://github.com/tvsonar","followers_url":"https://api.github.com/users/tvsonar/followers","following_url":"https://api.github.com/users/tvsonar/following{/other_user}","gists_url":"https://api.github.com/users/tvsonar/gists{/gist_id}","starred_url":"https://api.github.com/users/tvsonar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tvsonar/subscriptions","organizations_url":"https://api.github.com/users/tvsonar/orgs","repos_url":"https://api.github.com/users/tvsonar/repos","events_url":"https://api.github.com/users/tvsonar/events{/privacy}","received_events_url":"https://api.github.com/users/tvsonar/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-07-18T06:48:51Z","updated_at":"2016-07-18T07:24:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c0f497602859714cf00d2db9160ec6cc4be7741e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948/commits","review_comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948/comments","review_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/948/comments","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/statuses/9da2584102cc9aa0e7e1e99534c44371c8e848be","head":{"label":"tvsonar:issue-939","ref":"issue-939","sha":"9da2584102cc9aa0e7e1e99534c44371c8e848be","user":{"login":"tvsonar","id":11485373,"avatar_url":"https://avatars.githubusercontent.com/u/11485373?v=3","gravatar_id":"","url":"https://api.github.com/users/tvsonar","html_url":"https://github.com/tvsonar","followers_url":"https://api.github.com/users/tvsonar/followers","following_url":"https://api.github.com/users/tvsonar/following{/other_user}","gists_url":"https://api.github.com/users/tvsonar/gists{/gist_id}","starred_url":"https://api.github.com/users/tvsonar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tvsonar/subscriptions","organizations_url":"https://api.github.com/users/tvsonar/orgs","repos_url":"https://api.github.com/users/tvsonar/repos","events_url":"https://api.github.com/users/tvsonar/events{/privacy}","received_events_url":"https://api.github.com/users/tvsonar/received_events","type":"User","site_admin":false},"repo":{"id":35810200,"name":"sonarlint-roslyn-analyzer","full_name":"tvsonar/sonarlint-roslyn-analyzer","owner":{"login":"tvsonar","id":11485373,"avatar_url":"https://avatars.githubusercontent.com/u/11485373?v=3","gravatar_id":"","url":"https://api.github.com/users/tvsonar","html_url":"https://github.com/tvsonar","followers_url":"https://api.github.com/users/tvsonar/followers","following_url":"https://api.github.com/users/tvsonar/following{/other_user}","gists_url":"https://api.github.com/users/tvsonar/gists{/gist_id}","starred_url":"https://api.github.com/users/tvsonar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tvsonar/subscriptions","organizations_url":"https://api.github.com/users/tvsonar/orgs","repos_url":"https://api.github.com/users/tvsonar/repos","events_url":"https://api.github.com/users/tvsonar/events{/privacy}","received_events_url":"https://api.github.com/users/tvsonar/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tvsonar/sonarlint-roslyn-analyzer","description":"","fork":true,"url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer","forks_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/forks","keys_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/teams","hooks_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/hooks","issue_events_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/issues/events{/number}","events_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/events","assignees_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/assignees{/user}","branches_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/branches{/branch}","tags_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/tags","blobs_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/refs{/sha}","trees_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/statuses/{sha}","languages_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/languages","stargazers_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/stargazers","contributors_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/contributors","subscribers_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/subscribers","subscription_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/subscription","commits_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/commits{/sha}","git_commits_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/commits{/sha}","comments_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/comments{/number}","issue_comment_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/issues/comments{/number}","contents_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/contents/{+path}","compare_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/merges","archive_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/downloads","issues_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/issues{/number}","pulls_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/pulls{/number}","milestones_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/milestones{/number}","notifications_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/labels{/name}","releases_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/releases{/id}","deployments_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/deployments","created_at":"2015-05-18T09:55:28Z","updated_at":"2016-02-04T12:57:11Z","pushed_at":"2016-07-18T07:20:21Z","git_url":"git://github.com/tvsonar/sonarlint-roslyn-analyzer.git","ssh_url":"git@github.com:tvsonar/sonarlint-roslyn-analyzer.git","clone_url":"https://github.com/tvsonar/sonarlint-roslyn-analyzer.git","svn_url":"https://github.com/tvsonar/sonarlint-roslyn-analyzer","homepage":null,"size":67323,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"SonarSource-VisualStudio:master","ref":"master","sha":"82599ab3f2875e98f278ddad0b41f0f01bee819c","user":{"login":"SonarSource-VisualStudio","id":16780579,"avatar_url":"https://avatars.githubusercontent.com/u/16780579?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarSource-VisualStudio","html_url":"https://github.com/SonarSource-VisualStudio","followers_url":"https://api.github.com/users/SonarSource-VisualStudio/followers","following_url":"https://api.github.com/users/SonarSource-VisualStudio/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource-VisualStudio/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource-VisualStudio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource-VisualStudio/subscriptions","organizations_url":"https://api.github.com/users/SonarSource-VisualStudio/orgs","repos_url":"https://api.github.com/users/SonarSource-VisualStudio/repos","events_url":"https://api.github.com/users/SonarSource-VisualStudio/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource-VisualStudio/received_events","type":"Organization","site_admin":false},"repo":{"id":33920958,"name":"sonaranalyzer-csharp","full_name":"SonarSource-VisualStudio/sonaranalyzer-csharp","owner":{"login":"SonarSource-VisualStudio","id":16780579,"avatar_url":"https://avatars.githubusercontent.com/u/16780579?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarSource-VisualStudio","html_url":"https://github.com/SonarSource-VisualStudio","followers_url":"https://api.github.com/users/SonarSource-VisualStudio/followers","following_url":"https://api.github.com/users/SonarSource-VisualStudio/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource-VisualStudio/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource-VisualStudio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource-VisualStudio/subscriptions","organizations_url":"https://api.github.com/users/SonarSource-VisualStudio/orgs","repos_url":"https://api.github.com/users/SonarSource-VisualStudio/repos","events_url":"https://api.github.com/users/SonarSource-VisualStudio/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource-VisualStudio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp","description":"Analyzers for C# used in both SonarLint for Visual Studio and the SonarQube C# Plugin","fork":false,"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp","forks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/forks","keys_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/teams","hooks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/hooks","issue_events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/events{/number}","events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/events","assignees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/assignees{/user}","branches_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/branches{/branch}","tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/tags","blobs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/refs{/sha}","trees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/statuses/{sha}","languages_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/languages","stargazers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/stargazers","contributors_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/contributors","subscribers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/subscribers","subscription_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/subscription","commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/commits{/sha}","git_commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/commits{/sha}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/comments{/number}","issue_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/comments{/number}","contents_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/contents/{+path}","compare_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/merges","archive_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/downloads","issues_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues{/number}","pulls_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls{/number}","milestones_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/milestones{/number}","notifications_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/labels{/name}","releases_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/releases{/id}","deployments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/deployments","created_at":"2015-04-14T08:51:34Z","updated_at":"2016-07-11T23:56:08Z","pushed_at":"2016-07-18T07:20:21Z","git_url":"git://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp.git","ssh_url":"git@github.com:SonarSource-VisualStudio/sonaranalyzer-csharp.git","clone_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp.git","svn_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp","homepage":"","size":69753,"stargazers_count":87,"watchers_count":87,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":36,"mirror_url":null,"open_issues_count":6,"forks":36,"open_issues":6,"watchers":87,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948"},"html":{"href":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/948"},"issue":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/948"},"comments":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/948/comments"},"review_comments":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948/comments"},"review_comment":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/948/commits"},"statuses":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/statuses/9da2584102cc9aa0e7e1e99534c44371c8e848be"}}}}
{"actor":{"display_login":"SonarTech"}}