Skip to content

Precondition fail in interactive interpreter results in endless execution #202

@Alexwestbrook

Description

@Alexwestbrook

For example take the following function:

def func(a:int) -> int:
    """
    Renvoie un nombre positif tel quel
    Precondition: a>=0
    """
    return a

assert func(1)==1
assert func(-1)==-1

Executing it will show the following error:

-----
Erreurs à l'exécution (Interprète Python) :
-----

Erreur: ligne 9
==> Erreur de précondition
	 Fonction : func (Ligne 4)
	 Précondition : a>=0
	 Fausse avec 
		a = -1
	

===================================================

But running func(-1) in the interactive interpreter keeps on forever without any messages and I have to manually stop the execution.

EDIT:
This issue also occurs whenever the precondition fails when calling the function inside another function WHICH HAS PRECONDITIONS.
For example add this function to the script:

def func_1(a:int) -> int:
    """
    Renvoie un nombre positif tel quel
    Precondition: a>=-1
    """
    return func(a)

assert func_1(-1)==-1

It will run forever but if we changed it to remove preconditions:

def func_1(a:int) -> int:
    """
    Renvoie un nombre positif tel quel
    Precondition:
    """
    return func(a)

assert func_1(-1)==-1

It now shows the appropriate error:

-----
Erreurs à l'exécution (Interprète Python) :
-----

Erreur: ligne 16
==> Erreur de précondition
	 Fonction : func (Ligne 4)
	 Précondition : a>=0
	 Fausse avec 
		a = a
	

===================================================

Note: The last error message could be more informative than a=a

Metadata

Metadata

Assignees

No one assigned

    Labels

    todo (pstl)special label for student projects

    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