Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
typon-compiler
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
typon
typon-compiler
Commits
be810856
Commit
be810856
authored
Jul 07, 2023
by
Tom Niget
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Enhance error handling
parent
2be850ba
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
1 deletion
+5
-1
trans/transpiler/phases/typing/block.py
trans/transpiler/phases/typing/block.py
+5
-1
No files found.
trans/transpiler/phases/typing/block.py
View file @
be810856
...
@@ -8,6 +8,7 @@ from transpiler.phases.typing.class_ import ScoperClassVisitor
...
@@ -8,6 +8,7 @@ from transpiler.phases.typing.class_ import ScoperClassVisitor
from
transpiler.phases.typing.scope
import
VarDecl
,
VarKind
,
ScopeKind
from
transpiler.phases.typing.scope
import
VarDecl
,
VarKind
,
ScopeKind
from
transpiler.phases.typing.types
import
BaseType
,
TypeVariable
,
FunctionType
,
IncompatibleTypesError
,
\
from
transpiler.phases.typing.types
import
BaseType
,
TypeVariable
,
FunctionType
,
IncompatibleTypesError
,
\
Promise
,
TY_NONE
,
PromiseKind
,
TupleType
,
UserType
,
TypeType
,
ModuleType
Promise
,
TY_NONE
,
PromiseKind
,
TupleType
,
UserType
,
TypeType
,
ModuleType
from
transpiler.phases.utils
import
PlainBlock
@
dataclass
@
dataclass
...
@@ -23,6 +24,9 @@ class ScoperBlockVisitor(ScoperVisitor):
...
@@ -23,6 +24,9 @@ class ScoperBlockVisitor(ScoperVisitor):
def
visit_Import
(
self
,
node
:
ast
.
Import
):
def
visit_Import
(
self
,
node
:
ast
.
Import
):
for
alias
in
node
.
names
:
for
alias
in
node
.
names
:
mod
=
self
.
scope
.
get
(
alias
.
name
,
VarKind
.
MODULE
)
mod
=
self
.
scope
.
get
(
alias
.
name
,
VarKind
.
MODULE
)
if
mod
is
None
:
raise
NameError
(
alias
.
name
)
assert
isinstance
(
mod
,
VarDecl
),
mod
self
.
scope
.
vars
[
alias
.
asname
or
alias
.
name
]
=
dataclasses
.
replace
(
mod
,
kind
=
VarKind
.
LOCAL
)
self
.
scope
.
vars
[
alias
.
asname
or
alias
.
name
]
=
dataclasses
.
replace
(
mod
,
kind
=
VarKind
.
LOCAL
)
def
visit_ImportFrom
(
self
,
node
:
ast
.
ImportFrom
):
def
visit_ImportFrom
(
self
,
node
:
ast
.
ImportFrom
):
...
@@ -174,7 +178,7 @@ class ScoperBlockVisitor(ScoperVisitor):
...
@@ -174,7 +178,7 @@ class ScoperBlockVisitor(ScoperVisitor):
try
:
try
:
iter_type
=
seq_type
.
methods
[
"__iter__"
].
return_type
iter_type
=
seq_type
.
methods
[
"__iter__"
].
return_type
except
:
except
:
raise
IncompatibleTypesError
(
f"
{
seq_type
}
is not iterable"
)
raise
IncompatibleTypesError
(
f"
{
seq_type
}
is not iterable
in `
{
ast
.
unparse
(
node
.
iter
)
}
`
"
)
try
:
try
:
next_type
=
iter_type
.
methods
[
"__next__"
].
return_type
next_type
=
iter_type
.
methods
[
"__next__"
].
return_type
except
:
except
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment