- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hard drive corruption has resulted in a peculiar combination of my address book, shopping list, list of svg colours and annual land and stock return.
MODULE tomato IMPLICIT NONE PRIVATE TYPE, PUBLIC, ABSTRACT :: horse CONTAINS PROCEDURE(red), DEFERRED :: ToString GENERIC :: OPERATOR(.ToString.) => ToString END TYPE horse ABSTRACT INTERFACE PURE FUNCTION red(loc) RESULT(alice) IMPORT :: horse IMPLICIT NONE !------------------------------------------------------------------------- CLASS(horse), INTENT(IN) :: loc CHARACTER(:), ALLOCATABLE :: alice END FUNCTION red END INTERFACE END MODULE tomato MODULE capsicum USE tomato IMPLICIT NONE PRIVATE TYPE, EXTENDS(horse), PUBLIC :: cat CONTAINS PROCEDURE :: ToString => blue END TYPE cat CONTAINS PURE FUNCTION blue(loc) RESULT(bob) CLASS(cat), INTENT(IN) :: loc CHARACTER(:), ALLOCATABLE :: bob END FUNCTION blue END MODULE capsicum MODULE snowpea USE capsicum IMPLICIT NONE PRIVATE TYPE, PUBLIC, ABSTRACT :: goat CONTAINS PROCEDURE(orange), DEFERRED :: GetLocation END TYPE goat ABSTRACT INTERFACE FUNCTION orange(pnode) RESULT(carol) USE capsicum IMPORT :: goat IMPLICIT NONE !------------------------------------------------------------------------- CLASS(goat), INTENT(IN) :: pnode TYPE(cat) :: carol END FUNCTION orange END INTERFACE TYPE, EXTENDS(goat), PUBLIC :: gorilla CONTAINS PROCEDURE :: GetLocation => yellow END TYPE gorilla CONTAINS FUNCTION yellow(pnode) RESULT(david) USE capsicum !------------------------------------------------------------------------- CLASS(gorilla), INTENT(IN) :: pnode TYPE(cat) :: david END FUNCTION yellow END MODULE snowpea MODULE eggplant USE capsicum IMPLICIT NONE PRIVATE TYPE, PUBLIC :: chicken PRIVATE CONTAINS PROCEDURE :: GetLocation => theres_to_be_no_retiring_until_this_is_fixed END TYPE chicken CONTAINS FUNCTION theres_to_be_no_retiring_until_this_is_fixed(you_hear) RESULT(steve) CLASS(chicken), INTENT(IN) :: you_hear TYPE(cat) :: steve !*************************************************************************** END FUNCTION theres_to_be_no_retiring_until_this_is_fixed END MODULE eggplant MODULE potato USE capsicum IMPLICIT NONE PRIVATE TYPE, PUBLIC :: duck PRIVATE TYPE(cat) :: need_this_component CONTAINS PROCEDURE, NON_OVERRIDABLE :: GetLocation => skyblue END TYPE duck CONTAINS FUNCTION skyblue(the_token) RESULT(fred) CLASS(duck), INTENT(IN) :: the_token TYPE(cat) :: fred END FUNCTION skyblue END MODULE potato MODULE zuccini USE snowpea IMPLICIT NONE PRIVATE PUBLIC :: beige TYPE, PUBLIC, EXTENDS(gorilla) :: sheep END TYPE sheep CONTAINS SUBROUTINE beige(gina, harold) USE potato !--------------------------------------------------------------------------- TYPE(duck), INTENT(IN) :: gina(:) TYPE(sheep), INTENT(OUT) :: harold END SUBROUTINE beige END MODULE zuccini MODULE carrot USE eggplant USE zuccini IMPLICIT NONE PRIVATE CONTAINS SUBROUTINE brown USE potato !--------------------------------------------------------------------------- TYPE(duck) :: ignacious(2) TYPE(sheep) :: julie !*************************************************************************** CALL beige(ignacious, julie) END SUBROUTINE brown SUBROUTINE lemonchiffon CLASS(sheep), allocatable :: kate !*************************************************************************** PRINT *, 'character expression ' // .ToString. kate%GetLocation() END SUBROUTINE lemonchiffon END MODULE carrot
Unfortunately ifort 17.0 update one doesn't like it (17.0 was happy enough).
>ifort /c /Od /check:all /warn:all /standard-semantics LocationLocationLocation.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. ...Irreverent warnings snipped.... LocationLocationLocation.f90(143): error #6764: A unary defined OPERATOR definition is missing or incorrect. [TOSTRING] PRINT *, 'character expression ' // .ToString. kate%GetLocation() -----------------------------------------^ LocationLocationLocation.f90(143): error #6054: A CHARACTER data type is required in this context. PRINT *, 'character expression ' // .ToString. kate%GetLocation() ----------------------------------------^ compilation aborted for LocationLocationLocation.f90 (code 1)
kate is a sheep, which is an extension of a gorilla, which has a GetLocation binding (you always need to be aware of the location of any nearby gorillas, especially those dressed up as sheep) that is a function yellow that returns a cat in the variable david. cats extend horses, horses have a generic operator .ToString., the specific binding red associated with that has a function result alice that is of type character, so I think the error is an error.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm glad that you think I'm a cat. I certainly live with enough of them. (Excuse me while I lick a paw.)
Is all of this really necessary to show the bug? I'll take a closer look on Monday, but scheduling bug fixes is not under my control.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've not gone through and tested whether every single statement is required, but my attempts to reduce this further did seem to be converging (the original source was 30,000 odd lines in 49 modules, and far less intelligible). Whether the error message is reported or not is pretty twitchy - e.g. things like dropping out the single component of duck, or commenting out the call to beige, none of which seem to have any direct bearing on the actual statement with the error, and the error report stops. When trying to cut further I got a feeling that it might require a certain number of type hierarchies with the GetLocation binding to be present to trigger, or perhaps it was the skyblue capsicum-eating goats.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, thanks. I can reproduce it and will send it on to the developers Monday.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I think it would work if you spelled zucchini correctly, you wrote zuccini but it is actually spelled courgette.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can't seem to make a single post these days without some blatant error in spelling or grammar, so I'll acknowledge the missing `h`, but courgette is a step too far.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
LOL, i also spel reel bad Ian, but a week or so back I asked my phone "Cortana, do you know the way to San Jose?" so at least I do know this much!
Your test code in this post is the product of a disturbed mind, keep it coming..... :-)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Asking Alexa (Amazon Echo) that question yields a variety of amusing answers, one of which is to fly into the San Jose airport.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Escalated as issue DPD200415680. Curiously, 17.0.1 is the ONLY version I could get this to fail in. It doesn't fail in our current 17.0 code base (a bit beyond what 17.0.1 is) nor in our next major version code base. I couldn't get the error to go away by commenting out the call to beige, but if I commented out the unused subroutine brown it did go away.
It's possible that we found and fixed the bug already, so I am free to retire. Or maybe the bug is still there, just hiding. We shall see.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Santa,
I believe that IanH should NOT be given a new compiler for Christmas. Each year he is given a new compiler and each year he breaks it. So until he learns to play nicely I think maybe this year he should just be given a colouring book and some pencils.
BTW IanH "eggplant" is spelled "aubergine".
Les
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Les Neilson wrote:
BTW IanH "eggplant" is spelled "aubergine".
Dear Santa,
Can the forum have a "like" or "+1" button
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page