Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #20 from krasin/dcpu16
Update clang to the upstream tip
- Loading branch information
Showing
369 changed files
with
13,073 additions
and
6,610 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
[ | ||
{ | ||
"directory": "/home/john.doe/MyProject", | ||
"command": "clang++ -o project.o -c /home/john.doe/MyProject/project.cpp", | ||
"file": "/home/john.doe/MyProject/project.cpp" | ||
}, | ||
{ | ||
"directory": "/home/john.doe/MyProjectA", | ||
"command": "clang++ -o project2.o -c /home/john.doe/MyProject/project2.cpp", | ||
"file": "/home/john.doe/MyProject/project2.cpp" | ||
}, | ||
{ | ||
"directory": "/home/john.doe/MyProjectB", | ||
"command": "clang++ -DFEATURE=1 -o project2-feature.o -c /home/john.doe/MyProject/project2.cpp", | ||
"file": "/home/john.doe/MyProject/project2.cpp" | ||
} | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
from clang.cindex import CompilationDatabase | ||
from clang.cindex import CompilationDatabaseError | ||
from clang.cindex import CompileCommands | ||
from clang.cindex import CompileCommand | ||
import os | ||
import gc | ||
|
||
kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS') | ||
|
||
def test_create_fail(): | ||
"""Check we fail loading a database with an assertion""" | ||
path = os.path.dirname(__file__) | ||
try: | ||
cdb = CompilationDatabase.fromDirectory(path) | ||
except CompilationDatabaseError as e: | ||
assert e.cdb_error == CompilationDatabaseError.ERROR_CANNOTLOADDATABASE | ||
else: | ||
assert False | ||
|
||
def test_create(): | ||
"""Check we can load a compilation database""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
|
||
def test_lookup_fail(): | ||
"""Check file lookup failure""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
assert cdb.getCompileCommands('file_do_not_exist.cpp') == None | ||
|
||
def test_lookup_succeed(): | ||
"""Check we get some results if the file exists in the db""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp') | ||
assert len(cmds) != 0 | ||
|
||
def test_1_compilecommand(): | ||
"""Check file with single compile command""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp') | ||
assert len(cmds) == 1 | ||
assert cmds[0].directory == '/home/john.doe/MyProject' | ||
expected = [ 'clang++', '-o', 'project.o', '-c', | ||
'/home/john.doe/MyProject/project.cpp'] | ||
for arg, exp in zip(cmds[0].arguments, expected): | ||
assert arg.spelling == exp | ||
|
||
def test_2_compilecommand(): | ||
"""Check file with 2 compile commands""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project2.cpp') | ||
assert len(cmds) == 2 | ||
expected = [ | ||
{ 'wd': '/home/john.doe/MyProjectA', | ||
'line': ['clang++', '-o', 'project2.o', '-c', | ||
'/home/john.doe/MyProject/project2.cpp']}, | ||
{ 'wd': '/home/john.doe/MyProjectB', | ||
'line': ['clang++', '-DFEATURE=1', '-o', 'project2-feature.o', '-c', | ||
'/home/john.doe/MyProject/project2.cpp']} | ||
] | ||
for i in range(len(cmds)): | ||
assert cmds[i].directory == expected[i]['wd'] | ||
for arg, exp in zip(cmds[i].arguments, expected[i]['line']): | ||
assert arg.spelling == exp | ||
|
||
def test_compilationDB_references(): | ||
"""Ensure CompilationsCommands are independent of the database""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp') | ||
del cdb | ||
gc.collect() | ||
workingdir = cmds[0].directory | ||
|
||
def test_compilationCommands_references(): | ||
"""Ensure CompilationsCommand keeps a reference to CompilationCommands""" | ||
cdb = CompilationDatabase.fromDirectory(kInputsDir) | ||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp') | ||
del cdb | ||
cmd0 = cmds[0] | ||
del cmds | ||
gc.collect() | ||
workingdir = cmd0.directory | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.