Skip to content

Timers cannot be compared to each other, and neither can ports be

Summary

Comparing ports and timers lead to error.

Steps and/or TTCN-3 code to reproduce

type port pt message{inout integer}with{extension "internal";}

type component oneport{
  port pt P
  port pt Q
}

testcase compporteq() runs on oneport{
  timer t := 0.5;
  timer v := 0.5;
  if(t!=v){setverdict(pass);}else{setverdict(fail);}
  if(P!=Q){setverdict(pass);}else{setverdict(fail);}
  if(P==Q){setverdict(pass);}else{setverdict(fail);}
}

What is the current bug behavior?

The above code fails to build (compile error).

What is the expected correct behavior?

pass

Relevant logs and/or screenshots

../src/datatypes.ttcn: In TTCN-3 module `datatypes':
 ../src/datatypes.ttcn:757.1-779.1: In testcase definition `compporteq':
  ../src/datatypes.ttcn:776.3-29: In if statement:
   ../src/datatypes.ttcn:776.6: error: Reference to a value was expected instead of timer `t'
  ../src/datatypes.ttcn:777.3-29: In if statement:
   ../src/datatypes.ttcn:777.6: error: Reference to a value was expected instead of port `@datatypes.oneport.P'
  ../src/datatypes.ttcn:778.3-29: In if statement:
   ../src/datatypes.ttcn:778.6: error: Reference to a value was expected instead of port `@datatypes.oneport.P'

Possible fixes

Titan version

8.1.0

Platform details (OS type and version)

Microsoft Windows 10 Enterprise 10.0.19042

/cc @aknappqwt @mmagyari