Jon Meow
87e58f5db3
Switch executable semantics to use ErrorBuilder directly and relocate macros ( #1184 )
2022-04-13 09:05:21 -07:00
aa8a5f174d
Replaced std::exit() with return Carbon::ErrorOr for expected errors like invalid syntax ( #1120 )
...
* Replaced std::exit() with return llvm::Expected/llvm::Error<T> for expected errors like invalid syntax.
* Use llvm::formatv() for formatting lexer error messages.
x
* Addresed merge errors.
* Fixed impl scope.
* Made ErrorBuilder::operator<< nodiscard, to catch code forgetting 'return' in 'return FATAL_COMPILATION_ERROR()'.
* FatalComplationError() -> ParseAndLexContext::RecordLexerError().
Other usages of ERROR_TOKEN in lexer.lpp were actually supposed to be END_OF_FILE.
* Update executable_semantics/syntax/parse_and_lex_context.h
Co-authored-by: Jon Meow <jperkins@google.com >
* Code review fixes.
* Update executable_semantics/syntax/parser.ypp
Co-authored-by: Jon Meow <jperkins@google.com >
* More code review fixes.
* Update executable_semantics/interpreter/type_checker.h
Co-authored-by: Jon Meow <jperkins@google.com >
* Yet more code review fixes...
* Update executable_semantics/syntax/lexer.lpp
Co-authored-by: Jon Meow <jperkins@google.com >
* code review comments
* Update executable_semantics/interpreter/interpreter.cpp
Co-authored-by: Geoff Romer <gromer@google.com >
* Apply suggestions from code review
Co-authored-by: Jon Meow <jperkins@google.com >
* Update executable_semantics/syntax/lexer.lpp
Co-authored-by: Jon Meow <jperkins@google.com >
* code review
* code review
* Apply suggestions from code review
Co-authored-by: Jon Meow <jperkins@google.com >
* formatted code
* review comments
* Switched to the new ErrorOr<V> error implementation
* code review comments
* fixed comment
* restored ostream.h as #976 makes the change unnecesary
* review comments
Co-authored-by: Jon Meow <jperkins@google.com >
Co-authored-by: Geoff Romer <gromer@google.com >
2022-03-22 16:17:04 -04:00
7cce1bd124
interfaces, impls, and constrained generics (basics) ( #1073 )
...
* interfaces, impls, and constrained generics (basics)
* separate type checking into declare vs. type check, removing redundancy
* external impls
* added impl scopes to handle generics calling generics
* cleanup
* more cleanup
* Update executable_semantics/testdata/interface/external_impl_point_vector.carbon
Co-authored-by: josh11b <josh11b@users.noreply.github.com >
* Update executable_semantics/testdata/interface/generic_call_generic.carbon
Co-authored-by: josh11b <josh11b@users.noreply.github.com >
* Update executable_semantics/testdata/interface/tuple_vector_add_scale.carbon
Co-authored-by: josh11b <josh11b@users.noreply.github.com >
* Update executable_semantics/testdata/interface/vector_point_add_scale.carbon
Co-authored-by: josh11b <josh11b@users.noreply.github.com >
* change ImplementationDeclaration to ImplDeclaration
* remove impl_type_value
* split NamedEntity into two
* changed GetName to be a free function
* adding comments
* more edits to respond to review
* introduce ImplBinding, remove punning on GenericBinding
* new test case and some minor edits
* refactor GetMember and GetField to move impl logic to interpreter
* remove commennt
* change EntityView to ImplBinding in FieldAccess...
* move ImplBinding
* review response
* added example to impl_scope.h
* minor edits
* Update executable_semantics/interpreter/field_path.h
Co-authored-by: Geoff Romer <gromer@google.com >
* Update executable_semantics/interpreter/value.cpp
Co-authored-by: Geoff Romer <gromer@google.com >
* Update executable_semantics/interpreter/interpreter.cpp
Co-authored-by: Geoff Romer <gromer@google.com >
* Update executable_semantics/ast/expression.h
Co-authored-by: Geoff Romer <gromer@google.com >
* Update executable_semantics/ast/expression.h
Co-authored-by: Geoff Romer <gromer@google.com >
* Update executable_semantics/ast/generic_binding.h
Co-authored-by: Geoff Romer <gromer@google.com >
* more edits from review
* review response
* Update executable_semantics/ast/static_scope.h
Co-authored-by: Geoff Romer <gromer@google.com >
* remove ImplType, renamed node_view to value_node
Co-authored-by: josh11b <josh11b@users.noreply.github.com >
Co-authored-by: Geoff Romer <gromer@google.com >
2022-03-02 15:58:45 -05:00
Geoff Romer
8e6c209a28
Use resolved names in typechecker ( #974 )
...
As a byproduct, replace NamedEntity with a type-erasing wrapper NamedEntityView, eliminate virtual inheritance from the AST, and eliminate interfaces from gen_rtti.
2021-12-13 16:35:30 -08:00
Geoff Romer
f75b4d322f
Handle use-before-declare in static name lookup ( #967 )
...
Also remove inheritance from NamedEntity for some classes that don't need it.
2021-12-03 13:52:31 -08:00
Geoff Romer and Jon Meow
17e0a1afb9
Implement static name resolution ( #958 )
...
This doesn't actually use the results of name resolution, but it does verify that they are present.
Also ensures that name resolution and type checking are applied to deduced function parameters and the implicit call to `Main()`.
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com >
2021-11-30 13:33:54 -08:00
Geoff Romer
7a5b8434c8
Define a base class for all AST nodes. ( #947 )
...
Also implement code-generation to manage the resulting boilerplate.
2021-11-16 11:54:47 -08:00
Jon Meow and Geoff Romer
27e084d37a
Start populating named entities in relevant locations. ( #919 )
...
This starts detecting naming collisions as a consequence of being able to determine when the name is declared twice in a given scope.
Co-authored-by: Geoff Romer <gromer@google.com >
2021-11-03 08:04:13 -07:00