Bug? compile bug with constants referenced before declaration?

Discussion in 'Bugs & wishlist' started by Dave O, May 28, 2015.

  1. Dave O

    Dave O Active Member Licensed User

    In sub class_globals (perhaps in activities too, haven't tried that yet), if I dim a variable and immediately set it to the value of a constant that is declared further down in that sub:
    - the code compiles without errors or warnings
    - the variable is set to zero (not to the constant's initial value in its declaration).

    For example:
    Code:
    Private Sub Class_Globals
       
    Private internalBackgroundColor As Int = DEFAULT_BACKGROUND_COLOR
       
    Public Const DEFAULT_BACKGROUND_COLOR As Int = Colors.ARGB(190000)
       
    'internalBackgroundColor is now zero, not the color above
    I assume this is because, at the time of declaring the variable, the constant has not been declared yet, so its value is zero.

    However, because there was no compiler error/warning, I missed it completely. Later, when I looked at the code, I assumed that it was doing some kind of multiple-pass compile where order didn't matter in this case, because it wasn't complaining about an undeclared constant.

    Apparently order DOES matter (as it should), but I think it would be helpful for the compiler to raise an error (or at least a warning) that I'm referencing a constant that doesn't (yet) exist. That way, if I mistakenly declare a constant after a variable that uses it, I get warned immediately of blundering around later.

    In the meantime, I've done what I should have done in the first place to make my code work - declare my constants first. :)
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice