Skip to content

Module name clash only yields in a warning

Summary

If the name of an identifier is the same as that of the containing module or an imported module, TITAN shows a warning and compiles the code. According to the TTCN-3 standard (Section 5.2.2, paragraph 2 and Example 3), this is not allowed, i.e. shall yield in an error.

Steps and/or TTCN-3 code to reproduce

Create a TITAN project, and the following two modules in it:

module my {
  import from my2 all;
  type component myct{
    var integer my;
  }
  function myfn() return boolean{
    const integer my := 2;
    return true;
  }
  type component myct2{
    var integer my2;
  }
  function myfn2() return boolean{
    const integer my2 := 2;
    return true;
  }
}
module my2 {

}

What is the current bug behavior?

A warning is shown after saving at all four clashes. The code is cross-compiled and then compiled to binary (both with the C++ and the Java compiler).

What is the expected correct behavior?

An error message shall be shown and cross-compilation shall fail.

Relevant logs and/or screenshots

Possible fixes

Titan version

8.1.0

Platform details (OS type and version)

Microsoft Windows 10 Enterprise 10.0.19042

/cc @aknappqwt

Edited by Levente Erős