Skip to content

Function dependencies not respected with --disable-main #1727

@certik

Description

@certik

import_order_01.py:

from import_order_01b import f

@ccallback
def main1():
    a: i32 = f()
    print(a)

import_order_01b.py:

from lpython import i32

def f() -> i32:
    return 42

Compile using:

$ lpython -I. --show-c --disable-main import_order_01.py
...

// Implementations
void main1()
{
    int32_t a;
    a = f();
    printf("%d\n", a);
}

int32_t f()
{
    int32_t _lpython_return_variable;
    _lpython_return_variable = 42;
    return _lpython_return_variable;
}

This then fails to compile due to:

$ clang x.c                
x.c:41:9: error: implicit declaration of function 'f' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    a = f();
        ^
1 error generated.

The issue is that main1 depends on f, but f gets generated below the function. It only happens when --disable-main is used, but we need to use it.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions