(List (= scope= flags=0 words=[] bindings=[('E_BADARGS', {[LIT_CHARS 65]})]) (= scope= flags=0 words=[] bindings=[('E_FAILEDTEST', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('failed_any_test', {[SQ ]})]) (FunctionDef usage [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: "][ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]})]]} {[DQ [LIT_CHARS ""]]} {[DQ [LIT_CHARS ""]]}) (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " Runs all the libFindBadConstructs unit tests"]]}) (Com {[LIT_CHARS echo]} {[DQ ]}) ) ) (FunctionDef do_testcase [] (List (= scope= flags=0 words=[] bindings=[('flags', {[DQ ]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[DQ [VarSub 3]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('flags', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub 3]]})]]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]})]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS Darwin]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('flags', {[DQ [VarSub flags][LIT_CHARS " -isysroot "][ComSub (Com {[LIT_CHARS xcrun]} {[LIT_CHARS --show-sdk-path]})][LIT_CHARS " -stdlib=libstdc++"]]})]) ) (= scope= flags=0 words=[] bindings=[('output', {[DQ [ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2)]{[DQ [VarSub CLANG_PATH]]} {[LIT_CHARS -fsyntax-only]} {[LIT_CHARS -Wno-c] [LIT_OTHER "+"] [LIT_OTHER "+"] [LIT_CHARS 11-extensions]} {[LIT_CHARS -Wno-inconsistent-missing-override]} {[LIT_CHARS -Xclang]} {[LIT_CHARS -load]} {[LIT_CHARS -Xclang]} {[DQ [VarSub PLUGIN_PATH]]} {[LIT_CHARS -Xclang]} {[LIT_CHARS -add-plugin]} {[LIT_CHARS -Xclang]} {[LIT_CHARS find-bad-constructs]} {[VarSub flags]} {[VarSub 1]})]]})]) (= scope= flags=0 words=[] bindings=[('diffout', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub output]]}) (Com {[LIT_CHARS diff]} {[LIT_CHARS -]} {[DQ [VarSub 2]]}) )]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub diffout]]} {[LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PASS: "][VarSub 1]]}) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('failed_any_test', {[LIT_CHARS yes]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "FAIL: "][VarSub 1]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Output of compiler:"]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub output]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub 2] [LIT_CHARS -actual]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [VarSub output][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected output:"]]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS echo]}) ) ) ) ) (If (DBracket {B1 UNARY_STRING_z {[DQ [VarSub 1]]}}) (List (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS exit]} {[VarSub E_BADARGS]}) ) (DBracket {B1 UNARY_STRING_z {[DQ [VarSub 2]]}}) (List (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS exit]} {[VarSub E_BADARGS]}) ) (DBracket {B! {B1 UNARY_FILE_x {[DQ [VarSub 1]]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 1][LIT_CHARS " is not an executable"]]}) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS exit]} {[VarSub E_BADARGS]}) ) (DBracket {B! {B1 UNARY_FILE_f {[DQ [VarSub 2]]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 2][LIT_CHARS " could not be found"]]}) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS exit]} {[VarSub E_BADARGS]}) ) (ElseTrue) (List (= scope= flags=1 words=[] bindings=[('CLANG_PATH', {[DQ [VarSub 1]]})]) (= scope= flags=1 words=[] bindings=[('PLUGIN_PATH', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Using clang "][VarSub CLANG_PATH][LIT_CHARS ...]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Using plugin "][VarSub PLUGIN_PATH][LIT_CHARS ...]]}) (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub 0]]})]]}) ) ) (For input [{[LIT_OTHER "*"] [LIT_CHARS .cpp]}]) (Com {[LIT_CHARS do_testcase]} {[DQ [VarSub input]]} {[DQ [VarSub input transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS cpp]}]][LIT_CHARS txt]]} {[DQ [VarSub input transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS cpp]}]][LIT_CHARS flags]]}) ) (For input [{[LIT_OTHER "*"] [LIT_CHARS .c]}]) (Com {[LIT_CHARS do_testcase]} {[DQ [VarSub input]]} {[DQ [VarSub input transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS c]}]][LIT_CHARS txt]]} {[DQ [VarSub input transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS c]}]][LIT_CHARS flags]]}) ) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub failed_any_test]]}}) (Com {[LIT_CHARS exit]} {[VarSub E_FAILEDTEST]}) ) )