add a few more type annotations
Matt S Trout [Thu, 16 Feb 2017 19:37:20 +0000 (19:37 +0000)]
lib/DX/ResolvedPropositionSet.pm
lib/DX/Scope.pm
lib/DX/SearchState.pm
lib/DX/ShellFrontend.pm

index 357186b..74b29db 100644 (file)
@@ -1,7 +1,7 @@
 package DX::ResolvedPropositionSet;
 
 use DX::DependencyMap;
-use Types::Standard qw(ArrayRef);
+use Types::Standard qw(ArrayRef Int);
 use DX::Utils qw(deparse);
 use DX::Class;
 
@@ -9,7 +9,7 @@ has dependency_map => (is => 'ro', isa => DependencyMap, required => 1);
 
 has propositions => (is => 'ro', isa => ArrayRef[Proposition], required => 1);
 
-has scope_depth => (is => 'ro', required => 1);
+has scope_depth => (is => 'ro', isa => Int, required => 1);
 
 sub resolved_count { scalar @{$_[0]->propositions} }
 
index c18022a..ea0914f 100644 (file)
@@ -1,6 +1,6 @@
 package DX::Scope;
 
-use Types::Standard qw(HashRef ArrayRef);
+use Types::Standard qw(HashRef ArrayRef Str);
 use DX::Class;
 
 has predicates => (is => 'ro', isa => HashRef[Predicate], required => 1);
@@ -9,7 +9,7 @@ has globals => (is => 'ro', isa => DictValue, required => 1);
 
 has locals => (is => 'ro', isa => ArrayRef[DictValue], required => 1);
 
-has lex_map => (is => 'ro', isa => HashRef, required => 1);
+has lex_map => (is => 'ro', isa => HashRef[ArrayRef[Str]], required => 1);
 
 #has known_facts => (is => 'ro', required => 1);
 
index 0a306c9..ced6067 100644 (file)
@@ -1,6 +1,6 @@
 package DX::SearchState;
 
-use Types::Standard qw(Maybe);
+use Types::Standard qw(Maybe Bool);
 use DX::Step::Backtrack;
 use DX::Step::ConsiderProposition;
 use DX::Step::MarkAsSolution;
@@ -14,7 +14,7 @@ has propositions => (is => 'ro', isa => PropositionSequence, required => 1);
 
 has adjustments_made => (is => 'ro', isa => AdjustmentList, required => 1);
 
-has is_solution_state => (is => 'ro', required => 1);
+has is_solution_state => (is => 'ro', isa => Bool, required => 1);
 
 has on_exhaustion_step => (is => 'ro', isa => Maybe[Step], required => 1);
 
index 1b8c66e..29eac40 100644 (file)
@@ -1,15 +1,16 @@
 package DX::ShellFrontend;
 
+use Types::Standard qw(Enum);
 use IO::Handle;
 use Caroline;
 use DX::Class;
 
 has session => (
-  is => 'ro', required => 1,
+  is => 'ro', isa => ShellSession, required => 1,
   handles => [ qw(is_complete_command_string eval_command_string) ]
 );
 
-has session_mode => (is => 'rwp', required => 1);
+has session_mode => (is => 'rwp', isa => Enum['shell','query'], required => 1);
 
 has readline => (is => 'lazy', builder => sub { Caroline->new });