anchor.diff:      integer::y
     end type vector
     interface operator (.plus.)
  -     module procedure addw
  -  end interface operator (.plus.)
  +     module procedure addvec
  +   end interface operator (.plus.)
  +   interface assignment (=)
  +     module procedure assignvec
  +   endinterface assignment (=)
   contains
  -  function addw(a,b)
  +  function addvec(a,b)
       type(vector),intent(in)::a,b
  -    type(vector)::addw
  -    addw%x=a%x+b%x
  -    addw%y=a%y+b%y
  -  end function addw
  +    type(vector)::addvec
  +    addvec%x=a%x+b%x
  +    addvec%y=a%y+b%y
  +  end function addvec
  +  subroutine assignvec (b,a)
  +    type(vector),intent(in)::a
  +    real,intent(out)::b
  +    b = sqrt((a%x**2.0) + (a%y**2.0))
  +  endsubroutine assignvec
  +    
   end module m
   
   program t
  
positive.code:   i=8
    print *,f.plus.g
    print *,h+i
  end program t
  
negative.code:   implicit none
    type(vector)::f,g
    integer::h,i
    real::magnitude
    f%x=7
    f%y=8
    g%x=9
  