4c99dc2a94
Add subprogram symbols for each interface-body and set isInterface on them. Create a symbol with GenericDetails for each generic interface block and add interface specifications to the specific procedures of the generic. InterfaceVisitor takes care of this. Before processing the specification part of modules and subprograms, collect the names of module subprograms and internal subprograms and add them to the symbol table with SubprogramNameDetails. This allows us to reference them from interface blocks in the specification part. SubprogramNameDetails is converted to SubprogramDetails when the real subprogram is visited. This is achieved by setting subpNamesOnly_ and then walking the ModuleSubprogramPart or InternalSubprogramPart. Creating the symbol and scope for a module or subprogram now happens when the Module, SubroutineSubprogram, or FunctionSubprogram node is encountered so this can happen in the right order. Add BeginSubprogram and EndSubprogram to handle the parts in common between subprograms and interface specifications. Add GenericSpec to type.h to represent all possible generic specs. Only generic names are resolved so far. Add tests for new error messages. Change resolve02.f90 to reflect the new errors reported. Original-commit: flang-compiler/f18@03148b49dd Reviewed-on: https://github.com/flang-compiler/f18/pull/88 Tree-same-pre-rewrite: false |
||
---|---|---|
.. | ||
attr.cc | ||
attr.h | ||
CMakeLists.txt | ||
dump-parse-tree.h | ||
enum-set.h | ||
resolve-names.cc | ||
resolve-names.h | ||
rewrite-parse-tree.cc | ||
rewrite-parse-tree.h | ||
scope.cc | ||
scope.h | ||
symbol.cc | ||
symbol.h | ||
type.cc | ||
type.h |