Ticket #374 (new defect)

Opened 3 years ago

Last modified 3 years ago

shared classes do not compile

Reported by: ptokremin Owned by:
Priority: major Milestone:
Component: Cobra Compiler Version: 0.9.6
Keywords: Cc:


It is not possible to declare shared (static) classes.

The following definition...

namespace CobraDebug03

class LibTools is public, shared
	def doIt as String is public, shared 
		return "great, it work's! :-)"

... produces error messages from the c# compiler (since they are in german on my system I translated them):

# cobra.bat -version
Cobra svn:3116 (post 0.9.6) / 2014-07-10 on .NET CLR v4.0.30319 on Microsoft Windows NT 6.1.7601 Service Pack 1
#cobra.bat -c  CobraDebug03.cobra
d:\tmp\nh\CobraDebug03.cobra(5): error: "CobraDebug03.LibTools._ih_invariantGuard": instance members may not be declared in a static class
d:\tmp\nh\CobraDebug03.cobra(5): error: static classes may not have an instance constructor
Compilation failed - 2 errors, 0 warnings

The messages refer to the property _ih_invariantGuard and the constructor for the c#-class. Here's the intermediate code (without the #line tags) generated by cobra:

using CobraCoreInternal = Cobra.Core;
namespace CobraDebug03 {

	public static class LibTools : global::System.Object {

		int _ih_invariantGuard;

		public static global::System.String DoIt() {
			return "greaaaat :-)";

		public   LibTools() 
			: base() {

	} // class LibTools

} // namespace CobraDebug03

A rather ugly work-around is NOT to declare the class as shared.

Change History

Changed 3 years ago by hopscc

see also ticket:179
(shared classes not supported)

Note: See TracTickets for help on using tickets.