cppclean icon indicating copy to clipboard operation
cppclean copied to clipboard

AST Crash

Open jcelerier opened this issue 7 years ago • 2 comments

Traceback (most recent call last):
  File "/usr/bin/cppclean", line 145, in <module>
    sys.exit(main())
  File "/usr/bin/cppclean", line 138, in main
    quiet=args.quiet):
  File "/usr/lib/python3.6/site-packages/cpp/static_data.py", line 117, in run
    _find_warnings(filename, lines, entire_ast, True) +
  File "/usr/lib/python3.6/site-packages/cpp/static_data.py", line 67, in _find_warnings
    find_static(node)
  File "/usr/lib/python3.6/site-packages/cpp/static_data.py", line 48, in find_static
    ast.ASTBuilder(iter(tokens), filename).generate())
  File "/usr/lib/python3.6/site-packages/cpp/ast.py", line 651, in generate
    result = self._generate_one(token)
  File "/usr/lib/python3.6/site-packages/cpp/ast.py", line 726, in _generate_one
    return self._get_method(temp_tokens, 0, None, False)
  File "/usr/lib/python3.6/site-packages/cpp/ast.py", line 1092, in _get_method
    (token, return_type_and_name, parameters))
  File "/usr/lib/python3.6/site-packages/cpp/ast.py", line 1569, in assert_parse
    raise ParseError(message)
cpp.ast.ParseError: (Token(',', 2622, 2623), [], [Token('"color"', 2614, 2621)])

To reproduce:

git clone https://github.com/OSSIA/libossia -b master --depth=1
cppclean libossia/OSSIA/ossia/editor/dataspace/dataspace_visitors.cpp

jcelerier avatar Oct 30 '17 15:10 jcelerier

I get a similar error when running cppclean on the following project: https://github.com/arashpartow/exprtk/

command: cppclean .

Traceback (most recent call last):
  File "/usr/local/bin/cppclean", line 145, in <module>
    sys.exit(main())
  File "/usr/local/bin/cppclean", line 138, in main
    quiet=args.quiet):
  File "/usr/local/lib/python2.7/dist-packages/cpp/static_data.py", line 117, in run
    _find_warnings(filename, lines, entire_ast, True) +
  File "/usr/local/lib/python2.7/dist-packages/cpp/static_data.py", line 69, in _find_warnings
    _find_warnings(filename, lines, node.body, False)
  File "/usr/local/lib/python2.7/dist-packages/cpp/static_data.py", line 69, in _find_warnings
    _find_warnings(filename, lines, node.body, False)
  File "/usr/local/lib/python2.7/dist-packages/cpp/static_data.py", line 67, in _find_warnings
    find_static(node)
  File "/usr/local/lib/python2.7/dist-packages/cpp/static_data.py", line 48, in find_static
    ast.ASTBuilder(iter(tokens), filename).generate())
  File "/usr/local/lib/python2.7/dist-packages/cpp/ast.py", line 647, in generate
    if self.namespaces.pop():
IndexError: pop from empty list

ArashPartow avatar Oct 31 '17 02:10 ArashPartow

I get this error running cppclean on this code snippet:

void do_something (int value) { static const struct { int an_int; int another_int; } a={1,2}; }

Removing the word static avoids the error.

The code compiles in g++ 12.

callahanp avatar Dec 02 '22 23:12 callahanp