Urgent deadlock fixes [v0.3.9.5]

  • Had to fix a couple of really bad issues – there were massive leaks and infinite loops occurring when unfinished code like if(...) { was parsed
  • Implemented semantics of the with() statement
  • Fixed further concurrency bugs
  • Error messages are suppressed now when include directories could not be found.

Anyway, thanks for your constructive feedback!

4 Comments

  • #coder
    May 26, 2012 - 4:06 am | Permalink

    Another issue that I found with Mono-D.

    If you have two projects in a solution, 1 solution is the console app and other is a D library. Now if in the library project (project name firstlibd) we have following two files:

    1. myclass.d
    2. parameter.d

    so if I declare the module name in both files as
    module firstlibd.myclass;
    &
    module firstlibd.parameter;

    respectively then the intellisense won’t work in “myclass.d” if it imports:

    import firstlibd.parameter;

    if I access any enum value from parameter.d then code will compile without any issue but IDE won’t show the intellisense.

    I tried this module naming convention to solve the following issue:

    “I have two “library” project with something similar to following:

    AppFolder (AppFolder is solution folder and contains the below two folders for
    individual project)

    Lib1
    |
    —— TestFile1.d
    |
    —— TestFile2.d (import TestFile1;) // TestFile2 is importing
    TestFile1 in same library project.

    Lib2 (Lib2 has linker path to “lib1.a” and include path to
    “AppFolder”)
    |
    —— TestFile3.d (import Lib1.TestFile2).

    If I compile the Lib1 folder alone then it will work fine but now
    if I compile the Lib2 folder then the error will be in
    “TestFile2.d” of Lib1 project that “TestFile1″ is not found. If I
    change the “Import” in TestFile2 to

    import Lib1.TestFile1;

    Then the compilation of Lib2 starts to work. Now, if I try to
    compile the Lib1 project alone in Mono-D (I also tried same on
    D-IDE) then it will not compile.

    I was ok with compiling only the Lib2 but now the next issue is
    that the code completion won’t work in “Lib1.TestFile2″ after
    changing the import statement (simply because Lib1.TestFile1 is
    not valid path for it any more).

    • alex
      May 26, 2012 - 11:18 am | Permalink

      There’s (at least) one ‘trick’ to handle this:
      Create a subdirectory inside the lib project called “firstlibd” so you’ll be able to name all modules like firstlibd.module1 – and everything wil be fine, even in the executable project.

      One problem could be now that it’s not updating the include paths all the time – and I also better add dedicated project includes or something like that to handle such (typical) situations… I never really thought that this could be a problem or something.. but now it seems that it actually is.. let me try to handle this

  • #coder
    May 25, 2012 - 5:27 am | Permalink

    I think there is another bug that crashes the Mono-D on Linux. The steps are:

    “If you create a function that uses a Class as parameter (or some wrong Enum name) then the IDE crashes with memory overflow or something. My assumption is that it tries to keep looking for that symbol and gets stuck in some recursive loop or something.”

    • alex
      May 25, 2012 - 2:58 pm | Permalink

      Thx, I guess I got to play around with it for a while to figure out what obstruct kinds of syntaxes crashes it

  • Leave a Reply

    Your email address will not be published. Required fields are marked *


    2 + = three

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>