Ejemplo n.º 1
0
    def test_generic_function_type_not_supported_different_files(self):
        with self.assertRaises(TranspilerError) as cm:
            transpile([
                Source('@generic(T)\n'
                       'def add(a: T):\n'
                       '    a.bar()\n',
                       module='foo.lib',
                       mys_path='foo/src/lib.mys'),
                Source(
                    'from foo import add\n'
                    '# Blank line for different line numbers in foo and bar.\n'
                    'def foo():\n'
                    '    add[u8](1)\n',
                    module='bar.lib',
                    mys_path='bar/src/lib.mys')
            ])

        self.assert_exception_string(
            cm, '  File "bar/src/lib.mys", line 4\n'
            '        add[u8](1)\n'
            '        ^\n'
            '  File "foo/src/lib.mys", line 3\n'
            '        a.bar()\n'
            '        ^\n'
            "CompileError: primitive type 'u8' do not have methods\n")
Ejemplo n.º 2
0
    def test_generic_class_type_not_supported_different_files(self):
        with self.assertRaises(TranspilerError) as cm:
            transpile([
                Source(
                    '@generic(T)\n'
                    'class Add:\n'
                    '    def calc(self, a: T) -> u8:\n'
                    '        return a.calc()\n',
                    module='foo.lib',
                    mys_path='foo/src/lib.mys'),
                Source(
                    'from foo import Add\n'
                    'def foo():\n'
                    '    a = Add[bool]()\n'
                    '    print(a.calc(True))\n',
                    module='bar.lib',
                    mys_path='bar/src/lib.mys')
            ])

        self.assert_exception_string(
            cm, '  File "bar/src/lib.mys", line 3\n'
            '        a = Add[bool]()\n'
            '            ^\n'
            '  File "foo/src/lib.mys", line 4\n'
            '            return a.calc()\n'
            '                   ^\n'
            "CompileError: primitive type 'bool' do not have methods\n")
Ejemplo n.º 3
0
 def test_imported_variable_usage(self):
     transpile([
         Source('from foo import BAR\n'
                '\n'
                'def fie() -> i32:\n'
                '    return 2 * BAR\n'),
         Source('BAR: i32 = 1', module='foo.lib')
     ])
Ejemplo n.º 4
0
 def test_import_function_ok(self):
     transpile([
         Source('from foo import bar\n'
                'def fie():\n'
                '    bar()\n'),
         Source('def bar():\n'
                '    pass\n', module='foo.lib')
     ])
Ejemplo n.º 5
0
    def test_import_private_function_fails(self):
        with self.assertRaises(TranspilerError) as cm:
            transpile([
                Source('from foo import _BAR\n'
                       '\n'
                       'def fie() -> i32:\n'
                       '    return 2 * _BAR\n'),
                Source('_BAR: i32 = 1', module='foo.lib')
            ])

        self.assert_exception_string(
            cm, '  File "", line 1\n'
            '    from foo import _BAR\n'
            '    ^\n'
            "CompileError: cannot import private definition '_BAR'\n")
Ejemplo n.º 6
0
    def test_imported_module_does_not_contain(self):
        with self.assertRaises(TranspilerError) as cm:
            transpile([
                Source('from foo import bar\n'
                       '\n'
                       'def fie() -> i32:\n'
                       '    return 2 * bar\n'),
                Source('BOO: i32 = 1', module='foo.lib')
            ])

        self.assert_exception_string(
            cm, '  File "", line 1\n'
            '    from foo import bar\n'
            '    ^\n'
            "CompileError: imported module 'foo.lib' does not contain 'bar'\n")
Ejemplo n.º 7
0
def transpile_source(source, filename='', module_hpp='', has_main=False):
    return transpile([
        Source(source,
               filename=filename,
               module_hpp=module_hpp,
               has_main=has_main)
    ])[0][2]
Ejemplo n.º 8
0
    def test_imported_pure_trait_method_not_implemented(self):
        with self.assertRaises(TranspilerError) as cm:
            transpile([
                Source(
                    '@trait\n'
                    'class Base:\n'
                    '    def foo(self):\n'
                    '        pass\n',
                    module='foo.lib'),
                Source('from foo import Base\n'
                       'class Foo(Base):\n'
                       '    pass\n')
            ])

        self.assert_exception_string(
            cm, '  File "", line 2\n'
            '    class Foo(Base):\n'
            '              ^\n'
            "CompileError: pure trait method 'foo' is not implemented\n")
Ejemplo n.º 9
0
Archivo: utils.py Proyecto: Dogeek/mys
def transpile_source(source,
                     mys_path='',
                     module='foo.lib',
                     module_hpp='foo/lib.mys.hpp',
                     has_main=False):
    return transpile([
        Source(source,
               mys_path=mys_path,
               module=module,
               module_hpp=module_hpp,
               has_main=has_main)
    ])[0][2]
Ejemplo n.º 10
0
Archivo: utils.py Proyecto: Dogeek/mys
def transpile_header(source, mys_path='', module_hpp=''):
    return transpile(
        [Source(source, mys_path=mys_path, module_hpp=module_hpp)])[0][1]