{"action":"created","issue":{"url":"https://api.github.com/repos/cucumber/gherkin3/issues/16","labels_url":"https://api.github.com/repos/cucumber/gherkin3/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/cucumber/gherkin3/issues/16/comments","events_url":"https://api.github.com/repos/cucumber/gherkin3/issues/16/events","html_url":"https://github.com/cucumber/gherkin3/issues/16","id":66797243,"number":16,"title":"Step.Argument and null object pattern, Node base class","user":{"login":"gasparnagy","id":144701,"avatar_url":"https://avatars.githubusercontent.com/u/144701?v=3","gravatar_id":"","url":"https://api.github.com/users/gasparnagy","html_url":"https://github.com/gasparnagy","followers_url":"https://api.github.com/users/gasparnagy/followers","following_url":"https://api.github.com/users/gasparnagy/following{/other_user}","gists_url":"https://api.github.com/users/gasparnagy/gists{/gist_id}","starred_url":"https://api.github.com/users/gasparnagy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gasparnagy/subscriptions","organizations_url":"https://api.github.com/users/gasparnagy/orgs","repos_url":"https://api.github.com/users/gasparnagy/repos","events_url":"https://api.github.com/users/gasparnagy/events{/privacy}","received_events_url":"https://api.github.com/users/gasparnagy/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-04-07T06:49:05Z","updated_at":"2015-04-07T09:53:20Z","closed_at":null,"body":"Once we mentioned that we want to use a kind of null object pattern for Step.Argument, ie have something like an EmptyStepArgument instance for those steps that neither has a DataTable nor a DocString argument. The current C# version is implemented like this, but the others not. \r\n\r\nI would like to consolidate the implementations. Shall I remove the `EmptyStepArgument`?\r\n\r\nThis is somewhat related to the `Node` base class, that has only a `Location`. As the EmptyStepArgument does not have a location, it cannot be a proper Node. \r\n\r\nIn general: is the Node base class is part of the AST definition (ie has meaning) or just an implementation helper? In C# i did not need the base class as implementation helper, but I would introduce it if we see this as part of the AST."},"comment":{"url":"https://api.github.com/repos/cucumber/gherkin3/issues/comments/90491845","html_url":"https://github.com/cucumber/gherkin3/issues/16#issuecomment-90491845","issue_url":"https://api.github.com/repos/cucumber/gherkin3/issues/16","id":90491845,"user":{"login":"aslakhellesoy","id":1000,"avatar_url":"https://avatars.githubusercontent.com/u/1000?v=3","gravatar_id":"","url":"https://api.github.com/users/aslakhellesoy","html_url":"https://github.com/aslakhellesoy","followers_url":"https://api.github.com/users/aslakhellesoy/followers","following_url":"https://api.github.com/users/aslakhellesoy/following{/other_user}","gists_url":"https://api.github.com/users/aslakhellesoy/gists{/gist_id}","starred_url":"https://api.github.com/users/aslakhellesoy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aslakhellesoy/subscriptions","organizations_url":"https://api.github.com/users/aslakhellesoy/orgs","repos_url":"https://api.github.com/users/aslakhellesoy/repos","events_url":"https://api.github.com/users/aslakhellesoy/events{/privacy}","received_events_url":"https://api.github.com/users/aslakhellesoy/received_events","type":"User","site_admin":false},"created_at":"2015-04-07T09:53:20Z","updated_at":"2015-04-07T09:53:20Z","body":"I see why it would be handy to have a null-object for this, but it creates a problem for the JSON representation of the AST. If we add it, steps with no DocString or DataTable will have an empty object here (as apposed to nothing), and that doesn't make much sense. We can't have a Location for nothing.\r\n\r\nSo I think we should leave it out in Gherkin. It can still exist in Cucumber/SpecFlow, but that's a different bounded context (and different classes).\r\n\r\nI think it's really important to not let Cucumber have any knowledge of the Gherkin AST - except perhaps for pretty printing."}}