Skip to content

Commit

Permalink
Type casting functions to classes to support type checking.
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric-Vin committed Jun 25, 2024
1 parent d7679fb commit 7c24395
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 11 deletions.
25 changes: 14 additions & 11 deletions src/scenic/syntax/veneer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2074,24 +2074,27 @@ def helper(context):
# functions seems to break pickling/unpickling


@distributionFunction
def filter(function, iterable):
return list(builtins.filter(function, iterable))
class str(str):
@distributionFunction
def __call__(*args, **kwargs):
return builtins.str(*args, **kwargs)


@distributionFunction
def str(*args, **kwargs):
return builtins.str(*args, **kwargs)
class float(float):
@distributionFunction
def __call__(*args, **kwargs):
return builtins.float(*args, **kwargs)


@distributionFunction
def float(*args, **kwargs):
return builtins.float(*args, **kwargs)
class int(int):
@distributionFunction
def __call__(*args, **kwargs):
return builtins.int(*args, **kwargs)


@distributionFunction
def int(*args, **kwargs):
return builtins.int(*args, **kwargs)
def filter(function, iterable):
return list(builtins.filter(function, iterable))


@distributionFunction
Expand Down
33 changes: 33 additions & 0 deletions tests/syntax/test_typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,36 @@ def test_list_as_vector_3():
param p = distance to [-2, -2, 0, 6]
"""
)


# isinstance Tests


def test_isinstance_str():
p = sampleParamPFrom(
"""
param p = str(1)
assert isinstance(globalParameters.p, str)
"""
)
assert isinstance(p, str)


def test_isinstance_float():
p = sampleParamPFrom(
"""
param p = float(1)
assert isinstance(globalParameters.p, float)
"""
)
assert isinstance(p, float)


def test_isinstance_int():
p = sampleParamPFrom(
"""
param p = int(1.5)
assert isinstance(globalParameters.p, int)
"""
)
assert isinstance(p, int)

0 comments on commit 7c24395

Please sign in to comment.