https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70233
--- Comment #7 from Harald Anlauf <anlauf at gmx dot de> --- (In reply to Jerry DeLisle from comment #6) > The failures I looked at were becasue the constructors were using strings of > different sizes. So my question was going to be what are the rules. Are the > strings suppose to get padded to the length of the character array element? Other compiler give error messages (if standard conformance is required) ifort: pr70233.f90(9): warning #8208: If type specification is omitted, each ac-value expression in the array constructor of type CHARACTER must have the same length type parameters. ['def'] ch_array = [bh, "def", ch, ch, bh]! no error given --------------------^ pr70233.f90(10): warning #8208: If type specification is omitted, each ac-value expression in the array constructor of type CHARACTER must have the same length type parameters. ['def'] ch_array = ["def", bh, ch, ch, ch] ! error given ----------------^ sunf95: ch_array = [bh, "def", ch, ch, bh]! no error given ^ "pr70233.f90", Line = 9, Column = 21: ERROR: Array constructor values of type character must all have the same length. ch_array = ["def", bh, ch, ch, ch] ! error given ^ "pr70233.f90", Line = 10, Column = 24: ERROR: Array constructor values of type character must all have the same length. ^ "pr70233.f90", Line = 10, Column = 28: ERROR: Array constructor values of type character must all have the same length. ^ "pr70233.f90", Line = 10, Column = 32: ERROR: Array constructor values of type character must all have the same length. ^ "pr70233.f90", Line = 10, Column = 36: ERROR: Array constructor values of type character must all have the same length. f90comp: 16 SOURCE LINES f90comp: 5 ERRORS, 0 WARNINGS, 0 OTHER MESSAGES, 0 ANSI So I'd say it's ok to give an error message here, unless you want to make silent padding a gnu extension. ;-) > All elements must be of the same size so I assume if the length is say six, > you can not use "abc" in a constructor and one must use "abc " > > I did not check all the failures, but at least one requires the -fbackslash > and with the patch passes fine if I pad out the strings in the constructor. The patch produces misleading error messages for valid code, as in: character(4), parameter :: chr (4) = (/"abcd", "efgh", "ijkl", "mnop"/) character(4), parameter :: chr1(2) = (/chr(2)(2:3) , chr(3)(3:4)/) ! OK character(4), parameter :: chr2(2) = (/chr(2:3)(2:3)/) ! Error? character(4), parameter :: chr3(2) = (/chr(2:2)(2:3), chr(3)(3:4)/) ! Error? end pr70233b.f90:1:48: character(4), parameter :: chr (4) = (/"abcd", "efgh", "ijkl", "mnop"/) 1 Error: Different CHARACTER lengths (2/4) in array constructor at (1) Could this be an issue with substrings of array sections?