16c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1 2e17e7173SPete Steinfeldmodule m 3e17e7173SPete Steinfeld 4e17e7173SPete Steinfeld ! For C1543 5e17e7173SPete Steinfeld interface intFace 6e17e7173SPete Steinfeld !WARNING: Attribute 'MODULE' cannot be used more than once 7e17e7173SPete Steinfeld module pure module real function moduleFunc() 8e17e7173SPete Steinfeld end function moduleFunc 9e17e7173SPete Steinfeld end interface 10e17e7173SPete Steinfeld 11e17e7173SPete Steinfeldcontains 12e17e7173SPete Steinfeld 13e17e7173SPete Steinfeld! C1543 A prefix shall contain at most one of each prefix-spec. 14e17e7173SPete Steinfeld! 15e17e7173SPete Steinfeld! R1535 subroutine-stmt is 16e17e7173SPete Steinfeld! [prefix] SUBROUTINE subroutine-name [ ( [dummy-arg-list] ) 17e17e7173SPete Steinfeld! [proc-language-binding-spec] ] 18e17e7173SPete Steinfeld! 19e17e7173SPete Steinfeld! R1526 prefix is 20e17e7173SPete Steinfeld! prefix-spec[prefix-spec]... 21e17e7173SPete Steinfeld! 22e17e7173SPete Steinfeld! prefix-spec values are: 23e17e7173SPete Steinfeld! declaration-type-spec, ELEMENTAL, IMPURE, MODULE, NON_RECURSIVE, 24e17e7173SPete Steinfeld! PURE, RECURSIVE 25e17e7173SPete Steinfeld 26e17e7173SPete Steinfeld !ERROR: FUNCTION prefix cannot specify the type more than once 27e17e7173SPete Steinfeld real pure real function realFunc() 28e17e7173SPete Steinfeld end function realFunc 29e17e7173SPete Steinfeld 30e17e7173SPete Steinfeld !WARNING: Attribute 'ELEMENTAL' cannot be used more than once 31*43a263f5Speter klausler elemental real elemental function elementalFunc(x) 32*43a263f5Speter klausler real, value :: x 33*43a263f5Speter klausler elementalFunc = x 34e17e7173SPete Steinfeld end function elementalFunc 35e17e7173SPete Steinfeld 36e17e7173SPete Steinfeld !WARNING: Attribute 'IMPURE' cannot be used more than once 37e17e7173SPete Steinfeld impure real impure function impureFunc() 38e17e7173SPete Steinfeld end function impureFunc 39e17e7173SPete Steinfeld 40e17e7173SPete Steinfeld !WARNING: Attribute 'PURE' cannot be used more than once 41e17e7173SPete Steinfeld pure real pure function pureFunc() 42e17e7173SPete Steinfeld end function pureFunc 43e17e7173SPete Steinfeld 44e17e7173SPete Steinfeld !ERROR: Attributes 'PURE' and 'IMPURE' conflict with each other 45e17e7173SPete Steinfeld impure real pure function impurePureFunc() 46e17e7173SPete Steinfeld end function impurePureFunc 47e17e7173SPete Steinfeld 48e17e7173SPete Steinfeld !WARNING: Attribute 'RECURSIVE' cannot be used more than once 49e17e7173SPete Steinfeld recursive real recursive function recursiveFunc() 50e17e7173SPete Steinfeld end function recursiveFunc 51e17e7173SPete Steinfeld 52e17e7173SPete Steinfeld !WARNING: Attribute 'NON_RECURSIVE' cannot be used more than once 53e17e7173SPete Steinfeld non_recursive real non_recursive function non_recursiveFunc() 54e17e7173SPete Steinfeld end function non_recursiveFunc 55e17e7173SPete Steinfeld 56e17e7173SPete Steinfeld !ERROR: Attributes 'RECURSIVE' and 'NON_RECURSIVE' conflict with each other 57e17e7173SPete Steinfeld non_recursive real recursive function non_recursiveRecursiveFunc() 58e17e7173SPete Steinfeld end function non_recursiveRecursiveFunc 59e17e7173SPete Steinfeldend module m 60