{"action":"created","issue":{"url":"https://api.github.com/repos/cfengine/core/issues/2095","labels_url":"https://api.github.com/repos/cfengine/core/issues/2095/labels{/name}","comments_url":"https://api.github.com/repos/cfengine/core/issues/2095/comments","events_url":"https://api.github.com/repos/cfengine/core/issues/2095/events","html_url":"https://github.com/cfengine/core/pull/2095","id":54948449,"number":2095,"title":"foo!bar should not be interpretted as a valid class statement","user":{"login":"worr","id":183837,"avatar_url":"https://avatars.githubusercontent.com/u/183837?v=3","gravatar_id":"","url":"https://api.github.com/users/worr","html_url":"https://github.com/worr","followers_url":"https://api.github.com/users/worr/followers","following_url":"https://api.github.com/users/worr/following{/other_user}","gists_url":"https://api.github.com/users/worr/gists{/gist_id}","starred_url":"https://api.github.com/users/worr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/worr/subscriptions","organizations_url":"https://api.github.com/users/worr/orgs","repos_url":"https://api.github.com/users/worr/repos","events_url":"https://api.github.com/users/worr/events{/privacy}","received_events_url":"https://api.github.com/users/worr/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-01-20T22:16:50Z","updated_at":"2015-01-22T17:48:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/cfengine/core/pulls/2095","html_url":"https://github.com/cfengine/core/pull/2095","diff_url":"https://github.com/cfengine/core/pull/2095.diff","patch_url":"https://github.com/cfengine/core/pull/2095.patch"},"body":"Adds stricter token parsing. Only certain symbols should legally follow\r\nvalid tokens. ParseToken now checks the following character to ensure\r\nthat we aren't writing invalid class statements.\r\n\r\nBefore, `foo!bar` or `default:!foo` would be interpreted as valid class statements. It's unlikely that a user would encounter the former, but we had a case at LinkedIn where we encountered the latter. The old behavior was to just resolve that class as false *all* the time. Now, it triggers a parse error.\r\n\r\n@nickanderson: this was the bug that I was talking to you about at the bar"},"comment":{"url":"https://api.github.com/repos/cfengine/core/issues/comments/71064212","html_url":"https://github.com/cfengine/core/pull/2095#issuecomment-71064212","issue_url":"https://api.github.com/repos/cfengine/core/issues/2095","id":71064212,"user":{"login":"basvandervlies","id":431367,"avatar_url":"https://avatars.githubusercontent.com/u/431367?v=3","gravatar_id":"","url":"https://api.github.com/users/basvandervlies","html_url":"https://github.com/basvandervlies","followers_url":"https://api.github.com/users/basvandervlies/followers","following_url":"https://api.github.com/users/basvandervlies/following{/other_user}","gists_url":"https://api.github.com/users/basvandervlies/gists{/gist_id}","starred_url":"https://api.github.com/users/basvandervlies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/basvandervlies/subscriptions","organizations_url":"https://api.github.com/users/basvandervlies/orgs","repos_url":"https://api.github.com/users/basvandervlies/repos","events_url":"https://api.github.com/users/basvandervlies/events{/privacy}","received_events_url":"https://api.github.com/users/basvandervlies/received_events","type":"User","site_admin":false},"created_at":"2015-01-22T17:48:14Z","updated_at":"2015-01-22T17:48:14Z","body":"```foo!bar``` must be detected and is not a a valid class statement. That is because the class operators are also included in lexer to detect a a class statement. "}}