{"action":"created","issue":{"url":"https://api.github.com/repos/ark-lang/ark/issues/646","labels_url":"https://api.github.com/repos/ark-lang/ark/issues/646/labels{/name}","comments_url":"https://api.github.com/repos/ark-lang/ark/issues/646/comments","events_url":"https://api.github.com/repos/ark-lang/ark/issues/646/events","html_url":"https://github.com/ark-lang/ark/issues/646","id":128276839,"number":646,"title":"Target-Conditional Compilation","user":{"login":"MovingtoMars","id":596124,"avatar_url":"https://avatars.githubusercontent.com/u/596124?v=3","gravatar_id":"","url":"https://api.github.com/users/MovingtoMars","html_url":"https://github.com/MovingtoMars","followers_url":"https://api.github.com/users/MovingtoMars/followers","following_url":"https://api.github.com/users/MovingtoMars/following{/other_user}","gists_url":"https://api.github.com/users/MovingtoMars/gists{/gist_id}","starred_url":"https://api.github.com/users/MovingtoMars/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MovingtoMars/subscriptions","organizations_url":"https://api.github.com/users/MovingtoMars/orgs","repos_url":"https://api.github.com/users/MovingtoMars/repos","events_url":"https://api.github.com/users/MovingtoMars/events{/privacy}","received_events_url":"https://api.github.com/users/MovingtoMars/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ark-lang/ark/labels/M-RFC","name":"M-RFC","color":"207de5"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2016-01-23T00:26:37Z","updated_at":"2016-01-30T20:06:21Z","closed_at":null,"body":"We need to decide on a way to do this."},"comment":{"url":"https://api.github.com/repos/ark-lang/ark/issues/comments/177287774","html_url":"https://github.com/ark-lang/ark/issues/646#issuecomment-177287774","issue_url":"https://api.github.com/repos/ark-lang/ark/issues/646","id":177287774,"user":{"login":"Acconut","id":1375043,"avatar_url":"https://avatars.githubusercontent.com/u/1375043?v=3","gravatar_id":"","url":"https://api.github.com/users/Acconut","html_url":"https://github.com/Acconut","followers_url":"https://api.github.com/users/Acconut/followers","following_url":"https://api.github.com/users/Acconut/following{/other_user}","gists_url":"https://api.github.com/users/Acconut/gists{/gist_id}","starred_url":"https://api.github.com/users/Acconut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Acconut/subscriptions","organizations_url":"https://api.github.com/users/Acconut/orgs","repos_url":"https://api.github.com/users/Acconut/repos","events_url":"https://api.github.com/users/Acconut/events{/privacy}","received_events_url":"https://api.github.com/users/Acconut/received_events","type":"User","site_admin":false},"created_at":"2016-01-30T20:06:21Z","updated_at":"2016-01-30T20:06:21Z","body":"> @MovingtoMars IMO, macro-based target-conditional compilation should have it's own scope, so it can't declare new variables in the function scope. That'll just lead to complexity. If you need conditional compilation of that level, if would be better to use file-level conditional compilation.\r\n\r\nIn Rust macros are, by default, not isolated in a new scope. However, you can introduce a new scope by wrapping the macros content into a block,e.g.:\r\n\r\n```rust\r\nmacro_rules! vec {\r\n    ( $( $x:expr ),* ) => {\r\n        { // Start of scope from macro\r\n            let mut temp_vec = Vec::new();\r\n            $(\r\n                temp_vec.push($x);\r\n            )*\r\n            temp_vec\r\n        } // End of scope from macro\r\n    };\r\n}\r\n```"}}