@@ -805,6 +805,10 @@ defaultMethods.get.compile = function (data, buildState) {
805805 obj = data [ 0 ]
806806 key = data [ 1 ]
807807 defaultValue = typeof data [ 2 ] === 'undefined' ? null : data [ 2 ]
808+
809+ // Bail out if the key is dynamic; dynamic keys are not really optimized by this block.
810+ if ( key && typeof key === 'object' ) return false
811+
808812 key = key . toString ( )
809813 const pieces = key . split ( '.' )
810814 if ( ! chainingSupported ) {
@@ -813,11 +817,11 @@ defaultMethods.get.compile = function (data, buildState) {
813817 return `(${ text } ||0)[${ JSON . stringify ( i ) } ]`
814818 } ,
815819 `(${ buildString ( obj , buildState ) } ||0)`
816- ) } , ${ JSON . stringify ( defaultValue ) } ))`
820+ ) } , ${ buildString ( defaultValue , buildState ) } ))`
817821 }
818822 return `((${ buildString ( obj , buildState ) } )${ pieces
819- . map ( ( i ) => `?.[${ JSON . stringify ( i ) } ]` )
820- . join ( '' ) } ?? ${ JSON . stringify ( defaultValue ) } )`
823+ . map ( ( i ) => `?.[${ buildString ( i , buildState ) } ]` )
824+ . join ( '' ) } ?? ${ buildString ( defaultValue , buildState ) } )`
821825 }
822826 return false
823827}
@@ -860,11 +864,11 @@ defaultMethods.var.compile = function (data, buildState) {
860864 return `(${ text } ||0)[${ JSON . stringify ( i ) } ]`
861865 } ,
862866 '(context||0)'
863- ) } , ${ JSON . stringify ( defaultValue ) } ))`
867+ ) } , ${ buildString ( defaultValue , buildState ) } ))`
864868 }
865869 return `(context${ pieces
866870 . map ( ( i ) => `?.[${ JSON . stringify ( i ) } ]` )
867- . join ( '' ) } ?? ${ JSON . stringify ( defaultValue ) } )`
871+ . join ( '' ) } ?? ${ buildString ( defaultValue , buildState ) } )`
868872 }
869873 buildState . useContext = true
870874 return false
0 commit comments