tracker issue : CF-4206403

select a category, or use search below
(searches all categories and all time range)

Certain syntax breaks the interpreter (compiler)

| View in Tracker

Status/Resolution/Reason: To Fix//BugVerified

Reporter/Name(from Bugbase): Roman G. / ()

Created: 12/17/2019

Components: Language, Application Framework

Versions: 2016,2018

Failure Type: Crash

Found In Build/Fixed In Build: 2016 UPDATE 12, 2016 UPDATE 13 /

Priority/Frequency: Normal / All users will encounter

Locale/System: English / Linux

Vote Count: 0

Problem Description:
With 2016 UPDATE 12 or 13 we discovered a strange and unpredictable behavior that only happens for certain Code structures. 
It can best be explained by the following example. 

Steps to Reproduce:
I was able to reproduce it with this simple pice of code:

<cffunction name="givemesomething">
    <cfargument name="somestruct">

    <cfreturn arguments.somestruct.device>

    <cfif isDefined("url.udid")>
        <cfset local.device.udid = url.udid>
        #givemesomething({ device = local.device.udid })#
        No udid given.

Call this code with the url-paramter udid=123

Actual Result:
Server Error with message:
Variable LOCAL is undefined.

Expected Result:

Any Workarounds:
If you remove the <cfelse> part this code works as expected. This makes absolutely no sense to me and it would break some of our code in production if we update to 12 or 13.