subroutinelink_project
subroutine link_project(p)
Connect what the names in the project refer to.
Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
| p | type(project_t) | inout | the project |
Calls
- progress_tick
- link_implementation
- link_calls
- link_submodule
- link_module_procedures
- link_binding
- link_constructor
- find_symbol
- link_variable
Source
Show the code
subroutine link_project(p)
type(project_t), intent(inout) :: p !! the project
integer :: k, n
n = p%list%n
do k = 1, n
call progress_tick()
if (allocated(p%list%box(k)%e%external_url)) cycle
select case (p%list%box(k)%e%kind)
case (E_SUBROUTINE, E_FUNCTION, E_MODPROC)
call link_implementation(p, k)
call link_calls(p, k)
case (E_PROGRAM)
call link_calls(p, k)
case (E_SUBMODULE)
call link_submodule(p, k)
case (E_INTERFACE)
call link_module_procedures(p, k)
case (E_BOUNDPROC)
call link_binding(p, k)
case (E_TYPE)
call link_constructor(p, k)
case (E_FINAL)
p%list%box(k)%e%proto_id = find_symbol(p, k, lowercase(p%list%box(k)%e%name), 1)
case (E_VARIABLE)
call link_variable(p, k)
end select
end do
end subroutine link_project