@@ -266,7 +266,6 @@ private List<Snippet> processEnhancedVarDecl(String userSource, Tree unitTree, S
266266 // short circuit since inference is expensive
267267 boolean hasAnyVars = false ;
268268 for (JCTree .JCBindingPattern bp : patternBindings ) {
269- String bindingName = bp .getVariable ().getName ().toString ();
270269 Tree bindingTypeTree = bp .getVariable ().getType ();
271270 if (bindingTypeTree .getKind () == Tree .Kind .VAR_TYPE ) {
272271 hasAnyVars = true ;
@@ -289,31 +288,49 @@ private List<Snippet> processEnhancedVarDecl(String userSource, Tree unitTree, S
289288 bindings = ExpressionToTypeInfo .enhancedLocalVariableDeclInferBindings (userSource , state , false );
290289 }
291290
292- Wrap guts = Wrap .enhancedLocalVariableDeclWrap (compileSource , bindings );
293- DiagList dl = trialCompile (guts );
291+ if (bindings .isEmpty ()) {
292+ Wrap guts = Wrap .simpleWrap (compileSource );
293+ return List .of (new StatementSnippet (state .keyMap .keyForStatement (), userSource , guts ));
294+ }
295+
296+ List <Snippet > result = new ArrayList <>();
297+
298+ Wrap primaryGuts = Wrap .primaryEnhancedLocalVariableDeclWrap (compileSource , bindings );
299+ DiagList dl = trialCompile (primaryGuts );
294300 if (dl .hasErrors ()){
295301 return compileFailResult (dl , userSource , kindOfTree (unitTree ));
296302 }
297303 TreeDependencyScanner tds = new TreeDependencyScanner ();
298304 tds .scan (unitTree );
299305
300- BindingInfo primary = bindings .getFirst ();
301- Set <String > additionalStaticImportNames =
302- bindings .stream ().skip (1 ).map (BindingInfo ::bindingName ).collect (Collectors .toSet ());
306+ BindingInfo primaryBinding = bindings .getFirst ();
303307
304- Snippet snip = new VarSnippet (
305- state .keyMap .keyForVariable ((primary .bindingName ())),
308+ VarSnippet primarySnippet = new VarSnippet (
309+ state .keyMap .keyForVariable ((primaryBinding .bindingName ())),
306310 userSource ,
307- guts ,
308- primary .bindingName (),
309- primary .bindingName (),
310- SubKind .VAR_DECLARATION_WITH_INITIALIZER_SUBKIND ,
311- primary .displayTypeName (),
312- primary .hasEnhancedType () ? primary .fullTypeName () : null ,
313- additionalStaticImportNames ,
314- tds .declareReferences (), null );
315-
316- return singletonList (snip );
311+ primaryGuts ,
312+ primaryBinding .bindingName (),
313+ primaryBinding .bindingName (),
314+ SubKind .VAR_BINDING_SUBKIND ,
315+ primaryBinding .displayTypeName (),
316+ primaryBinding .hasEnhancedType () ? primaryBinding .fullTypeName () : null ,
317+ Set .of (),
318+ tds .declareReferences (), null , List .of ());
319+ result .add (primarySnippet );
320+ bindings .stream ().skip (1 ).map (bi -> new VarSnippet (
321+ state .keyMap .keyForVariable ((bi .bindingName ())),
322+ userSource ,
323+ Wrap .secondaryEnhancedLocalVariableDeclWrap (compileSource , bi ),
324+ bi .bindingName (),
325+ bi .bindingName (),
326+ SubKind .VAR_BINDING_SUBKIND ,
327+ bi .displayTypeName (),
328+ bi .hasEnhancedType () ? bi .fullTypeName () : null ,
329+ Set .of (),
330+ tds .declareReferences (), null , List .of (new Snippet .ExtraImport (primarySnippet , bi .bindingName ()))))
331+ .forEach (result ::add );
332+
333+ return result ;
317334 }
318335 // where
319336 static void gatherBindings (JCTree pattern , Consumer <JCTree .JCBindingPattern > sink ) {
@@ -505,7 +522,7 @@ private List<Snippet> processVariables(String userSource, List<? extends Tree> u
505522 DiagList modDiag = modifierDiagnostics (vt .getModifiers (), dis , true );
506523 Snippet snip = new VarSnippet (state .keyMap .keyForVariable (name ), userSource , guts ,
507524 name , fieldName , subkind , displayType , hasEnhancedType ? fullTypeName : null , additionalStaticImportNames ,
508- tds .declareReferences (), modDiag );
525+ tds .declareReferences (), modDiag , List . of () );
509526 snippets .add (snip );
510527 }
511528 return snippets ;
@@ -766,7 +783,7 @@ private List<Snippet> processExpression(String userSource, Tree tree, String com
766783 Collection <String > declareReferences = null ; //TODO
767784 snip = new VarSnippet (state .keyMap .keyForVariable (name ), userSource , guts ,
768785 name , name , SubKind .TEMP_VAR_EXPRESSION_SUBKIND , displayTypeName , fullTypeName ,
769- additionalStaticImportNames , declareReferences , null );
786+ additionalStaticImportNames , declareReferences , null , List . of () );
770787 } else {
771788 guts = Wrap .methodReturnWrap (compileSource );
772789 snip = new ExpressionSnippet (state .keyMap .keyForExpression (name , typeName ), userSource , guts ,
0 commit comments