# flake8: noqa: F821
import re
test.compile("source.cpp" )
test.computeGCTypes()
body = test.process_body(test.load_db_entry("src_body" , re.compile(r"root_arg" ))[0])
# Rendering positive and negative integers
marker1 = body.assignment_line("MARKER1" )
equal(body.edge_from_line(marker1 + 2)["Exp" ][1]["String" ], "1" )
equal(body.edge_from_line(marker1 + 3)["Exp" ][1]["String" ], "-1" )
equal(body.edge_from_point(body.assignment_point("u1" ))["Exp" ][1]["String" ], "1" )
equal(
body.edge_from_point(body.assignment_point("u2" ))["Exp" ][1]["String" ], "4294967295"
)
assert "obj" in body["Variables" ]
assert "random" in body["Variables" ]
assert "other1" in body["Variables" ]
assert "other2" in body["Variables" ]
# Test function annotations
js_GC = test.process_body(test.load_db_entry("src_body" , re.compile(r"js_GC" ))[0])
annotations = js_GC["Variables" ]["void js_GC()" ]["Annotation" ]
assert annotations
found_call_annotate = False
for annotation in annotations:
(annType, value) = annotation["Name" ]
if annType == "annotate" and value == "GC Call" :
found_call_annotate = True
assert found_call_annotate
# Test type annotations
# js::gc::Cell first
cell = test.load_db_entry("src_comp" , "js::gc::Cell" )[0]
assert cell["Kind" ] == "Struct"
annotations = cell["Annotation" ]
assert len(annotations) == 1
(tag, value) = annotations[0]["Name" ]
assert tag == "annotate"
assert value == "GC Thing"
# Check JSObject inheritance.
JSObject = test.load_db_entry("src_comp" , "JSObject" )[0]
bases = [b["Base" ] for b in JSObject["CSUBaseClass" ]]
assert "js::gc::Cell" in bases
assert "Bogon" in bases
assert len(bases) == 2
# Check type analysis
gctypes = test.load_gcTypes()
assert "js::gc::Cell" in gctypes["GCThings" ]
assert "JustACell" in gctypes["GCThings" ]
assert "JSObject" in gctypes["GCThings" ]
assert "SpecialObject" in gctypes["GCThings" ]
assert "UnrootedPointer" in gctypes["GCPointers" ]
assert "Bogon" not in gctypes["GCThings" ]
assert "Bogon" not in gctypes["GCPointers" ]
assert "ErrorResult" not in gctypes["GCPointers" ]
assert "OkContainer" not in gctypes["GCPointers" ]
assert "class Rooted" not in gctypes["GCPointers" ]
Messung V0.5 C=93 H=100 G=96
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland