Page 1 of 1
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 7:54 am
by ArneOrtlinghaus
Hello,
I have the line
System.Diagnostics.Debug.WriteLine(c)
in my program together with
#using System.Diagnostics
This compiles under Vulcan.
I get the following error:
XS9002 Parser: unexpected input '.'
I tried substituing the '.' with ':' but I could not find a possibility to geth compiled this code.
Arne
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 8:21 am
by FFF
Strange, i get:
Compilation failed (1 error)
error XS0234: The type or namespace name 'Debug' does not exist in the namespace 'System.Diagnostics' (are you missing an assembly reference?)
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 8:30 am
by Otto
Hi Arne,
I tried to reproduce your message, but I can't, sorry
Karl, you need a reference to System
Code: Select all
#USING System.Diagnostics
BEGIN NAMESPACE XSharpClassLibrary1
CLASS Class1
CONSTRUCTOR()
RETURN
METHOD MyMethod() AS VOID STRICT
LOCAL c AS STRING
c := "test"
System.Diagnostics.Debug.WriteLine(c)
RETURN
END CLASS
END NAMESPACE
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 8:39 am
by Frank Maraite
Arne, Karl,
Vulcan includes System by default. X# does, as I know, include nothing in the reference list. I had to all those missing references in my old Vulcan code too.
Frank
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 8:40 am
by Chris
Hi Arne & guys,
This looks like a problem with a conjunction of the DEBUG symbol that is automatically defined when compiling in debug mode and the /vo8 compiler option which makes defines non case sensitive. I think we'll need to modify a bit the way the preprocessor works, will log a report about this. In the meantime, please add a @@ (which tells the preprocesor not to touch the word that follows) before Debug, as in:
System.Diagnostics.@@Debug.WriteLine(c)
or
@@Debug.WriteLine(c)
Chris
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 8:48 am
by ArneOrtlinghaus
Thanks,
this works.
Arne
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 9:03 am
by Frank Maraite
Hey, that's why I like case sensivity.
Frank
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 9:25 am
by Chris
Hi Frank,
> Hey, that's why I like case sensivity.
In general I like it, too, but I hate it that you can define (in c# for example) identifiers with the same name, different case. It is so easy for example to define both a oXml and a oXML local in the same method and then accidentally use one instead of the other..
Chris
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 9:36 am
by Frank Maraite
Chris,
just tested it. You're right, this is true for C#, but not for Vulcan. In Vulcan case sensivity was only applied to member and type names, not to LOCALs. What a mess.
But: your test's would fail for this case. And in small methods you should see it directly
.
Frank
System.Diagnostics.Debug.WriteLine(c)
Posted: Mon Nov 28, 2016 2:14 pm
by robert
Arne,
This is fixed in the next build.
Robert