Wiki

Ticket #194: compile-cs.patch

File compile-cs.patch, 4.1 KB (added by hopscc, 15 years ago)
  • Source/Phases/ParsePhase.cobra

     
    3232            modules.add(module) 
    3333 
    3434        didError = false 
     35        ncsfiles = 0     
    3536        for filename in .compiler.pathsToCompile 
    3637            if filename.endsWith('.cs') 
    3738                if .verbosity, print 'Noting  [filename]'  # extra space to line up with 'Parsing [filename]' 
    3839                modules.add(SharpModule(filename, .verbosity)) 
     40                ncsfiles += 1    
    3941            else 
    4042                parser = CobraParser() 
    4143                parser.verbosity = .verbosity 
     
    5658                    modules.add(module) 
    5759        assert modules.count or didError 
    5860        compiler.modules.addRange(modules) 
     61        if ncsfiles == modules.count # all modules are .cs 
     62            compiler.noCobraSources  
    5963        _parsedModules = nil 
    6064 
    6165    def parseCommandLineArgsCallBack(args as IList<of String>, isAvailable as out bool) as String? 
  • Source/Phases/IdentifyMainPhase.cobra

     
    1313    def innerRun is override 
    1414        c = .compiler 
    1515         
     16        if c.mainMethodTypeName == 'noCobraSources' 
     17            c.mainMethodTypeName = '' 
     18            return 
    1619        if .options.getDefault('target', '') to String in {'lib', 'module'}, return 
    1720        if .options.getDefault('test', '') <> '', return 
    1821        if c.mainMethodTypeName <> '', return 
     
    2124        typeName = .options.getDefault('main', '') to String 
    2225        mainList = MainCollector().collect(c, typeName) 
    2326        if mainList.count == 0 
    24             .recordError('Cannot find a "main" method.') 
     27            detail = if(typeName.length, 'in [typeName]','') 
     28            .recordError('Cannot find a "main" method [detail].') 
    2529            return 
    2630        if mainList.count > 1 
    2731            first = true 
  • Source/Compiler.cobra

     
    465465            p.startInfo.arguments = args 
    466466        return p 
    467467 
     468    def noCobraSources 
     469        """ Do special processing for no Cobra Sources. """ 
     470        # force any specified main method class to short circuit cobra source scanning 
     471        .mainMethodTypeName  = .options.getDefault('main', 'noCobraSources') 
     472             
    468473    ## 
    469474    ## ITypeProvider 
    470475    ## 
  • Tests/700-command-line/hello-cobra.cs

     
     1// compiled by 880-compile-cs.cobra 
     2using System; 
     3 
     4class Hello:  Object 
     5{ 
     6        public static void Main() { 
     7                System.Console.WriteLine("Hello - csharp compiled by cobra"); 
     8                } 
     9} 
  • Tests/700-command-line/880-compile-cs.cobra

     
     1use System.Diagnostics 
     2 
     3class TestCS 
     4 
     5    def main is shared 
     6        TestCS().run 
     7 
     8    def run 
     9 
     10        bar = '-------------------------------------------------------------------' 
     11        output = .runCobraExe('hello-cobra.cs') 
     12        try 
     13            assert 'Hello' in output 
     14            assert 'csharp' in output 
     15            assert 'csharp compiled by cobra' in output 
     16        finally 
     17            print bar 
     18            print output 
     19            print bar 
     20 
     21 
     22    def runCobraExe(args as String) as String 
     23        p as System.Diagnostics.Process? 
     24        return CobraCore.runCobraExe(args, out p) 
  • Developer/IntermediateReleaseNotes.text

     
    431431* Fixed: An uncaught exception can occur for some library calls. 
    432432 
    433433* Fixed: Cannot instantiate generic params under some circumstances. 
     434 
     435* Fixed: Unable compile csharp only sources: ticket:194