Videre
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
|
||||
import unittest
|
||||
|
||||
from numba import njit
|
||||
from numba.core.funcdesc import PythonFunctionDescriptor, default_mangler
|
||||
from numba.core.compiler import run_frontend
|
||||
from numba.core.itanium_mangler import mangle_abi_tag
|
||||
|
||||
|
||||
class TestModule(unittest.TestCase):
|
||||
def test_module_not_in_namespace(self):
|
||||
""" Test of trying to run a compiled function
|
||||
where the module from which the function is being compiled
|
||||
doesn't exist in the namespace.
|
||||
"""
|
||||
filename = 'test.py'
|
||||
name = 'mypackage'
|
||||
code = """
|
||||
def f(x):
|
||||
return x
|
||||
"""
|
||||
|
||||
objs = dict(__file__=filename, __name__=name)
|
||||
compiled = compile(code, filename, 'exec')
|
||||
exec(compiled, objs)
|
||||
|
||||
compiled_f = njit(objs['f'])
|
||||
self.assertEqual(compiled_f(3), 3)
|
||||
|
||||
|
||||
class TestFuncDescMangledName(unittest.TestCase):
|
||||
def test_mangling_abi_tags(self):
|
||||
"""
|
||||
This is a minimal test for the abi-tags support in the mangler.
|
||||
"""
|
||||
def udt():
|
||||
pass
|
||||
|
||||
# run minimal frontend to create a function descriptor
|
||||
func_ir = run_frontend(udt)
|
||||
typemap = {}
|
||||
restype = None
|
||||
calltypes = ()
|
||||
mangler = default_mangler
|
||||
inline = False
|
||||
noalias = False
|
||||
|
||||
abi_tags = ("Shrubbery", "Herring")
|
||||
|
||||
fd = PythonFunctionDescriptor.from_specialized_function(
|
||||
func_ir, typemap, restype, calltypes, mangler, inline, noalias,
|
||||
abi_tags=abi_tags,
|
||||
)
|
||||
|
||||
# mangled tag must exist in the mangled name
|
||||
self.assertIn("".join([mangle_abi_tag(x) for x in abi_tags]),
|
||||
fd.mangled_name)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user