Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

error #6227: This symbol has multiple POINTER statement/attribute declarations which is not allowed

Andrew_Smith
Valued Contributor I
443 Views

This used to coumple but XE2017 update 2 breaks it. I cannot find a workaround.

Simplest example. The submodule would normally be in a sepeeate file but it makes no difference to the bug:

module A
   implicit none
   interface
      module function getItem(id)
         integer, intent(in) :: id
         real, pointer :: getItem
      end
   end interface
   real, target :: items(10)
end module

submodule(A) A1
   implicit none
contains
   module function getItem(id)
      integer, intent(in) :: id
      real, pointer :: getItem
      getItem => items(id)
   end
end submodule

 

0 Kudos
2 Replies
Andrew_Smith
Valued Contributor I
443 Views

I found a workaround if I make the interface declaration and and implementer use a "result" type of return.

I had re-written most of my functions similar to this already because of similar bugs in earlier compiler handling of submodule functions.

module function getItem(id) result(foo)
   real, pointer :: foo

 

0 Kudos
Devorah_H_Intel
Moderator
443 Views

Hi Andrew,

Thank you for the report, I will escalate this to our Fortran Engineering team. There shouldn't be an error.

Regards,

 

0 Kudos
Reply