llvm/flang/test/semantics/CMakeLists.txt
Tim Keith 3133c9e7e2 [flang] Fix problems with extended derived types
When looking for a component name in a derived type, also look in the
parent type. Before adding a component to a derived type, report an
error if it already has one with that name. Check that components are
accessible when they are accessed.

Add the "parent component" to derived types (i.e. a component with the
same name as the parent type). The symbol is marked with the
`ParentComp` flag so we can avoid writing it to `.mod` files.

Add calls to `add_occurrence()` so that those particular instances of
`parser::Name` get their symbol set.

Change `DeclareObjectEntity` and `DeclareProcEntity` to use `SourceName` as
the name passed in rather than `parser::Name`.

Fix some problems in `unparse-with-symbols.cc` on statements that both
define and reference names.

Fixes flang-compiler/f18#187.

Original-commit: flang-compiler/f18@664b9627f2
Reviewed-on: https://github.com/flang-compiler/f18/pull/192
Tree-same-pre-rewrite: false
2018-09-20 14:08:59 -07:00

107 lines
2.4 KiB
CMake

# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Run tests with test_errors.sh. It compiles the test with f18 and compares
# actual errors produced with expected ones listed in the source.
# These test files have expected errors in the source
set(ERROR_TESTS
implicit01.f90
implicit02.f90
implicit03.f90
implicit04.f90
implicit05.f90
implicit06.f90
implicit07.f90
implicit08.f90
resolve01.f90
resolve02.f90
resolve03.f90
resolve04.f90
resolve05.f90
resolve06.f90
resolve07.f90
resolve08.f90
resolve09.f90
resolve10.f90
resolve11.f90
resolve12.f90
resolve13.f90
resolve14.f90
resolve15.f90
resolve16.f90
resolve17.f90
resolve18.f90
resolve19.f90
resolve20.f90
resolve21.f90
resolve22.f90
resolve23.f90
resolve24.f90
resolve25.f90
resolve26.f90
resolve27.f90
resolve28.f90
resolve29.f90
resolve30.f90
resolve31.f90
resolve32.f90
resolve33.f90
resolve34.f90
)
# These test files have expected symbols in the source
set(SYMBOL_TESTS
symbol01.f90
symbol02.f90
symbol03.f90
symbol04.f90
symbol05.f90
symbol06.f90
)
# These test files have expected .mod file contents in the source
set(MODFILE_TESTS
modfile01.f90
modfile02.f90
modfile03.f90
modfile04.f90
modfile05.f90
modfile06.f90
modfile07.f90
modfile08.f90
modfile09-*.f90
modfile10.f90
modfile11.f90
)
set(LABEL_TESTS
label*.[Ff]90
)
foreach(test ${ERROR_TESTS})
add_test(NAME ${test} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test_errors.sh ${test})
endforeach()
foreach(test ${SYMBOL_TESTS})
add_test(NAME ${test} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test_symbols.sh ${test})
endforeach()
foreach(test ${MODFILE_TESTS})
add_test(NAME ${test} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test_modfile.sh ${test})
endforeach()
foreach(test ${LABEL_TESTS})
add_test(NAME ${test} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test_any.sh ${test})
endforeach()