llvm / llvm-project / 0c1b18f0f3e526da7dcbbd5a9e363dca85a90c95 / . / flang / test / Semantics / resolve64.f90

! RUN: %python %S/test_errors.py %s %flang -flogical-abbreviations -fxor-operator | |

! Like m4 in resolve63 but compiled with different options. | |

! Alternate operators are enabled so treat these as intrinsic. | |

module m4 | |

contains | |

subroutine s1(x, y, z) | |

logical :: x | |

real :: y, z | |

!ERROR: Operands of .AND. must be LOGICAL; have REAL(4) and REAL(4) | |

x = y .a. z | |

!ERROR: Operands of .OR. must be LOGICAL; have REAL(4) and REAL(4) | |

x = y .o. z | |

!ERROR: Operand of .NOT. must be LOGICAL; have REAL(4) | |

x = .n. y | |

!ERROR: Operands of .NEQV. must be LOGICAL; have REAL(4) and REAL(4) | |

x = y .xor. z | |

!ERROR: Operands of .NEQV. must be LOGICAL; have REAL(4) and REAL(4) | |

x = y .x. y | |

end | |

end | |

! Like m4 in resolve63 but compiled with different options. | |

! Alternate operators are enabled so treat .A. as .AND. | |

module m5 | |

interface operator(.A.) | |

logical function f1(x, y) | |

integer, intent(in) :: x, y | |

end | |

end interface | |

interface operator(.and.) | |

logical function f2(x, y) | |

real, intent(in) :: x, y | |

end | |

end interface | |

contains | |

subroutine s1(x, y, z) | |

logical :: x | |

complex :: y, z | |

!ERROR: No intrinsic or user-defined OPERATOR(.A.) matches operand types COMPLEX(4) and COMPLEX(4) | |

x = y .and. z | |

!ERROR: No intrinsic or user-defined OPERATOR(.A.) matches operand types COMPLEX(4) and COMPLEX(4) | |

x = y .a. z | |

end | |

end |