xsharp.eu • System.Diagnostics.Debug.WriteLine(c)
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