Skip to content

Commit

Permalink
Start getting types resolving at parse time
Browse files Browse the repository at this point in the history
For now they also resolve via the legacy resolve-with.
  • Loading branch information
jnthn committed Jun 5, 2023
1 parent 7b80520 commit ace8532
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/Raku/ast/code.rakumod
Expand Up @@ -1421,9 +1421,9 @@ class RakuAST::Routine
# Make sure that our signature has resolutions performed.
if $!signature {
$!signature.set-default-type(
RakuAST::Type::Simple.new(
RakuAST::Type::Setting.new(
RakuAST::Name.from-identifier('Any'),
),
).to-begin-time($resolver, $context)
);
$!signature.IMPL-ENSURE-IMPLICITS;
$!signature.IMPL-CHECK($resolver, $context, True);
Expand Down Expand Up @@ -1776,9 +1776,9 @@ class RakuAST::Methodish
my $signature := self.signature;
if $signature {
$signature.set-default-type(
RakuAST::Type::Simple.new(
RakuAST::Type::Setting.new(
RakuAST::Name.from-identifier('Any'),
),
).to-begin-time($resolver, $context)
);
$signature.set-is-on-method(True);
$signature.set-is-on-named-method(True) if self.name;
Expand Down
8 changes: 8 additions & 0 deletions src/Raku/ast/type.rakumod
Expand Up @@ -40,6 +40,7 @@ class RakuAST::Type
# A simple type name, e.g. Int, Foo::Bar, etc.
class RakuAST::Type::Simple
is RakuAST::Type
is RakuAST::ParseTime
is RakuAST::Lookup
{
has RakuAST::Name $.name;
Expand All @@ -58,6 +59,13 @@ class RakuAST::Type::Simple
Nil
}

method PERFORM-PARSE(RakuAST::Resolver $resolver, RakuAST::IMPL::QASTContext $context) {
my $resolved := $resolver.resolve-name-constant-in-setting(self.name);
if $resolved {
self.set-resolution($resolved);
}
}

method PRODUCE-META-OBJECT() {
self.resolution.compile-time-value
}
Expand Down

0 comments on commit ace8532

Please sign in to comment.