mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-26 05:18:46 +00:00
[flang] Catch attempts to initialize allocatable components with DATA statement
Nice try, but no, you can't initialize an instance of a derived type using a structure constructor that has a component corresponding to an allocatable component. Differential Revision: https://reviews.llvm.org/D140144
This commit is contained in:
parent
852db8e97e
commit
12ec5b20c2
@ -33,6 +33,8 @@ auto InitialImage::Add(ConstantSubscript offset, std::size_t bytes,
|
||||
return SizeMismatch;
|
||||
} else if (IsPointer(component)) {
|
||||
AddPointer(offset + component.offset(), indExpr.value());
|
||||
} else if (IsAllocatable(component) || IsAutomatic(component)) {
|
||||
return NotAConstant;
|
||||
} else {
|
||||
Result added{Add(offset + component.offset(), component.size(),
|
||||
indExpr.value(), context)};
|
||||
|
@ -11,6 +11,9 @@ module m1
|
||||
integer, parameter :: repeat = -1
|
||||
integer :: myAge = 2
|
||||
type(person) associated
|
||||
type hasAlloc
|
||||
integer, allocatable :: a(:)
|
||||
end type
|
||||
end
|
||||
|
||||
subroutine CheckRepeat
|
||||
@ -63,4 +66,7 @@ subroutine CheckValue
|
||||
data y / a(i) /
|
||||
!ERROR: DATA statement value 'b(1_8)' for 'z' is not a constant
|
||||
data z / b(1) /
|
||||
type(hasAlloc) ha
|
||||
!ERROR: DATA statement value 'hasalloc(a=0_4)' for 'ha' is not a constant
|
||||
data ha / hasAlloc(0) /
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user