llvm/flang/lib/parser
Tim Keith 3ec5e102e2 [flang] Name resolution for defined operators
Instead of tracking just genericName_ while in a generic interface
block or generic statement, now we immediately create a symbol for it.
A parser::Name isn't good enough because a defined-operator or
defined-io-generic-spec doesn't have a name.

Change the parse tree to add a source field to GenericSpec. Use these
as names for symbols for defined-operator and defined-io-generic-spec
(e.g. "operator(+)" or "read(formatted)").

Change the source for defined-op-name to include the dots so that they
can be distinguished from normal symbols with the same name (e.g. you
can have both ".foo." and "foo"). These symbols have names in the symbol
table like ".foo.", not "operator(.foo.)", because references to them
have that form.

Add GenericKind enum to GenericDetails and GenericBindingDetails.
This allows us to know a symbol is "assignment(=)", for example,
without having to do a string comparison.

Add GenericSpecInfo to handle analyzing the various kinds of
generic-spec and generating symbol names and GenericKind for them.

Add reference to LanguageFeatureControl to SemanticsContext so that
they can be checked during semantics. For this change, if
LogicalAbbreviations is enabled, report an error if the user tries
to define an operator named ".T." or ".F.".

Add resolve-name-utils.cc to hold utility functions and classes that
don't have to be in the ResolveNamesVisitor class hierarchy. The goal
is to reduce the size of resolve-names.cc where possible.

Original-commit: flang-compiler/f18@3081f694e2
Reviewed-on: https://github.com/flang-compiler/f18/pull/338
2019-03-18 11:48:02 -07:00
..
basic-parsers.h [flang] Use std::optional<>::value() where appropriate. 2018-12-05 13:03:39 -08:00
char-block.h [flang] Add ExtendToCover() to CharBlock and Interval 2018-11-29 09:10:19 -08:00
char-buffer.cc [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
char-buffer.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
char-set.cc [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
char-set.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
characters.cc [flang] bugfixing from regression testing 2018-11-14 11:12:09 -08:00
characters.h [flang] Use std::optional<>::value() where appropriate. 2018-12-05 13:03:39 -08:00
CMakeLists.txt [flang] Remove SHARED from add_library(), use cmake command line option instead 2019-01-22 16:31:20 -08:00
debug-parser.cc [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
debug-parser.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
dump-parse-tree.h [flang] Move dump-parse-tree.h from semantics into parser. 2019-03-14 16:28:06 -07:00
features.h [flang] more spec work, handle classic C comments 2019-03-15 13:57:41 -07:00
format-specification.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
grammar.h [flang] Name resolution for defined operators 2019-03-18 11:48:02 -07:00
instrumented-parser.cc [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
instrumented-parser.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
message.cc [flang] Convert structs to classes, move some defs from variable.h to call.h 2019-01-31 16:04:17 -08:00
message.h [flang] Convert structs to classes, move some defs from variable.h to call.h 2019-01-31 16:04:17 -08:00
openmp-grammar.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
parse-state.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
parse-tree-visitor.h [flang] Use value()/has_value() on Indirection class templates instead of operator*/operator-> 2019-03-05 12:28:08 -08:00
parse-tree.cc [flang] Fix misparsings of substrings in the parse tree, not in expressions. 2019-03-09 10:25:07 -08:00
parse-tree.h [flang] Name resolution for defined operators 2019-03-18 11:48:02 -07:00
parsing.cc [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
parsing.h [flang] push for review 2019-02-15 14:26:23 -08:00
preprocessor.cc [flang] Final tweaks, can now parse all SPEC CPUv6 2019-03-15 15:01:54 -07:00
preprocessor.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
prescan.cc [flang] Improve comment 2019-03-18 13:43:03 -07:00
prescan.h [flang] more spec work, handle classic C comments 2019-03-15 13:57:41 -07:00
provenance.cc [flang] Change formatting of common::visitors{} 2018-11-29 09:27:34 -08:00
provenance.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
source.cc [flang] merge 2018-10-26 15:19:13 -07:00
source.h [flang] new refactored Fold 2018-10-26 15:19:09 -07:00
stmt-parser.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
token-parsers.h [flang] Name resolution for defined operators 2019-03-18 11:48:02 -07:00
token-sequence.cc [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
token-sequence.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
type-parsers.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
unparse.cc [flang] checkpoint 2019-03-14 14:52:44 -07:00
unparse.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00
user-state.cc [flang] Use value()/has_value() on Indirection class templates instead of operator*/operator-> 2019-03-05 12:28:08 -08:00
user-state.h [flang] Changed .clang-format so that it will not add a comment after the closing brace of each namespace. Removed all such previous comments from all .cc and .h files 2018-10-25 05:55:23 -07:00