lfortran icon indicating copy to clipboard operation
lfortran copied to clipboard

feat: implement `OverLoadedBoolOp`

Open Pranavchiku opened this issue 6 months ago • 1 comments

module module_operator_overloading_12
  implicit none

  public :: operator(.and.)

  interface operator(.and.)
    elemental module function and(lhs, rhs) result(diagnosis)
      implicit none
      integer, intent(in) :: lhs, rhs
      integer :: diagnosis
    end function
  end interface
contains

  elemental module function and(lhs, rhs) result(diagnosis)
    implicit none
    integer, intent(in) :: lhs, rhs
    integer :: diagnosis

    diagnosis = lhs + rhs
  end function and

end module module_operator_overloading_12

program operator_overloading_12
  use module_operator_overloading_12, only: operator(.and.)
  implicit none

  integer :: a, b, c

  a = 5
  b = 5
  c = a .and. b
  print *, "The result of a .and. b is:", c
  ! if ( c /= 10 ) error stop ! this fails with LFortran, need to introduce OverLoadedBoolOp
end program
                    (Assignment
                        (Var 5 c)
                        (LogicalBinOp
                            (Var 5 a)
                            And
                            (Var 5 b)
                            (Integer 4)
                            ()
                        )
                        ()
                        .false.
                    )

We should have OverLoadedBoolOp similar to OverloadedBinOp

                            (OverloadedBinOp
                                (Var 5 t)
                                Add
                                (Var 5 f)
                                (Logical 4)
                                ()
                                (FunctionCall
                                    5 bin_add
                                    5 ~add
                                    [((Var 5 t))
                                    ((Var 5 f))]
                                    (Integer 4)
                                    ()
                                    ()
                                )
                            )

Pranavchiku avatar Jun 20 '25 08:06 Pranavchiku

@Pranavchiku Can i work on this.

sriganeshres avatar Jun 20 '25 12:06 sriganeshres