{"action":"created","issue":{"url":"https://api.github.com/repos/universal-ctags/ctags/issues/997","repository_url":"https://api.github.com/repos/universal-ctags/ctags","labels_url":"https://api.github.com/repos/universal-ctags/ctags/issues/997/labels{/name}","comments_url":"https://api.github.com/repos/universal-ctags/ctags/issues/997/comments","events_url":"https://api.github.com/repos/universal-ctags/ctags/issues/997/events","html_url":"https://github.com/universal-ctags/ctags/issues/997","id":161770002,"number":997,"title":"Python parser stops after finding `Class(` in a string","user":{"login":"blueyed","id":9766,"avatar_url":"https://avatars.githubusercontent.com/u/9766?v=3","gravatar_id":"","url":"https://api.github.com/users/blueyed","html_url":"https://github.com/blueyed","followers_url":"https://api.github.com/users/blueyed/followers","following_url":"https://api.github.com/users/blueyed/following{/other_user}","gists_url":"https://api.github.com/users/blueyed/gists{/gist_id}","starred_url":"https://api.github.com/users/blueyed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blueyed/subscriptions","organizations_url":"https://api.github.com/users/blueyed/orgs","repos_url":"https://api.github.com/users/blueyed/repos","events_url":"https://api.github.com/users/blueyed/events{/privacy}","received_events_url":"https://api.github.com/users/blueyed/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/universal-ctags/ctags/labels/Parsers","name":"Parsers","color":"5319e7"}],"state":"open","locked":false,"assignee":{"login":"masatake","id":77077,"avatar_url":"https://avatars.githubusercontent.com/u/77077?v=3","gravatar_id":"","url":"https://api.github.com/users/masatake","html_url":"https://github.com/masatake","followers_url":"https://api.github.com/users/masatake/followers","following_url":"https://api.github.com/users/masatake/following{/other_user}","gists_url":"https://api.github.com/users/masatake/gists{/gist_id}","starred_url":"https://api.github.com/users/masatake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/masatake/subscriptions","organizations_url":"https://api.github.com/users/masatake/orgs","repos_url":"https://api.github.com/users/masatake/repos","events_url":"https://api.github.com/users/masatake/events{/privacy}","received_events_url":"https://api.github.com/users/masatake/received_events","type":"User","site_admin":false},"milestone":null,"comments":15,"created_at":"2016-06-22T19:49:59Z","updated_at":"2016-06-23T14:25:00Z","closed_at":null,"body":"Given the following test.py\r\n\r\n```python\r\nclass Foo:\r\n    def method(self):\r\n        meh = 'Foo('\r\n\r\nclass NotFound:\r\n    def notfound(self):\r\n        pass\r\n```\r\n\r\n`ctags -f- test.py` results in only this:\r\n```\r\nFoo\ttest.py\t/^class Foo:$/;\"\tc\tlanguage:Python\r\nmethod\ttest.py\t/^    def method(self):$/;\"\tm\tlanguage:Python\tclass:Foo\r\n```\r\n\r\nThat's apparently of the string `Foo(` used in a class method, where `Foo` is the class itself.\r\n\r\nI've tried to bisect it, bad it's in there since at least ~1 year ago already (cf9350b)."},"comment":{"url":"https://api.github.com/repos/universal-ctags/ctags/issues/comments/228066475","html_url":"https://github.com/universal-ctags/ctags/issues/997#issuecomment-228066475","issue_url":"https://api.github.com/repos/universal-ctags/ctags/issues/997","id":228066475,"user":{"login":"codebrainz","id":181177,"avatar_url":"https://avatars.githubusercontent.com/u/181177?v=3","gravatar_id":"","url":"https://api.github.com/users/codebrainz","html_url":"https://github.com/codebrainz","followers_url":"https://api.github.com/users/codebrainz/followers","following_url":"https://api.github.com/users/codebrainz/following{/other_user}","gists_url":"https://api.github.com/users/codebrainz/gists{/gist_id}","starred_url":"https://api.github.com/users/codebrainz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codebrainz/subscriptions","organizations_url":"https://api.github.com/users/codebrainz/orgs","repos_url":"https://api.github.com/users/codebrainz/repos","events_url":"https://api.github.com/users/codebrainz/events{/privacy}","received_events_url":"https://api.github.com/users/codebrainz/received_events","type":"User","site_admin":false},"created_at":"2016-06-23T14:25:00Z","updated_at":"2016-06-23T14:25:00Z","body":"The problem with GLib is it's quite bloated since it also includes all of GObject, GIO and several other modules that go beyond basic data structures. Why not just write a trivial dynamic array and use it everywhere in Ctags, even for vString? The GSList and GList data structures aren't very useful either, only GQueue provides a decent list interface (has head/tail pointers and length, so getting the length and appending aren't O(n) operations), but since linked lists are so trivial, it would be better to just use ad hoc intrusive lists as needed (or steal the list implementation from the Linux kernel)."}}
{"actor":{"display_login":"codebrainz"}}