@@ -13,7 +13,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
1313    def  symbol (implicit  ctx : Context ):  Symbol  =  tree.symbol
1414  }
1515
16-   object  IsPackageClause  extends  IsPackageClauseExtractor  {
16+   object  IsPackageClause  extends  IsPackageClauseModule  {
1717    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [PackageClause ] =  tree match  {
1818      case  x : tpd.PackageDef  =>  Some (x)
1919      case  _ =>  None 
@@ -47,7 +47,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
4747
4848  //  ----- Definitions ----------------------------------------------
4949
50-   object  IsDefinition  extends  IsDefinitionExtractor  {
50+   object  IsDefinition  extends  IsDefinitionModule  {
5151    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [Definition ] =  tree match  {
5252      case  tree : tpd.MemberDef  =>  Some (tree)
5353      case  tree : PackageDefinition  =>  Some (tree)
@@ -61,7 +61,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
6161
6262  //  ClassDef
6363
64-   object  IsClassDef  extends  IsClassDefExtractor  {
64+   object  IsClassDef  extends  IsClassDefModule  {
6565    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [ClassDef ] =  tree match  {
6666      case  x : tpd.TypeDef  if  x.isClassDef =>  Some (x)
6767      case  _ =>  None 
@@ -87,7 +87,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
8787
8888  //  DefDef
8989
90-   object  IsDefDef  extends  IsDefDefExtractor  {
90+   object  IsDefDef  extends  IsDefDefModule  {
9191    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [DefDef ] =  tree match  {
9292      case  x : tpd.DefDef  =>  Some (x)
9393      case  _ =>  None 
@@ -112,7 +112,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
112112
113113  //  ValDef
114114
115-   object  IsValDef  extends  IsValDefExtractor  {
115+   object  IsValDef  extends  IsValDefModule  {
116116    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [ValDef ] =  tree match  {
117117      case  x : tpd.ValDef  =>  Some (x)
118118      case  _ =>  None 
@@ -135,7 +135,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
135135
136136  //  TypeDef
137137
138-   object  IsTypeDef  extends  IsTypeDefExtractor  {
138+   object  IsTypeDef  extends  IsTypeDefModule  {
139139    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [TypeDef ] =  tree match  {
140140      case  x : tpd.TypeDef  if  ! x.symbol.isClass =>  Some (x)
141141      case  _ =>  None 
@@ -168,7 +168,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
168168    def  symbol (implicit  ctx : Context ):  PackageSymbol  =  pdef.symbol
169169  }
170170
171-   object  IsPackageDef  extends  IsPackageDefExtractor  {
171+   object  IsPackageDef  extends  IsPackageDefModule  {
172172    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [PackageDef ] =  tree match  {
173173      case  x : PackageDefinition  =>  Some (x)
174174      case  _ =>  None 
@@ -193,7 +193,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
193193    def  underlying (implicit  ctx : Context ):  Term  =  term.underlying
194194  }
195195
196-   object  IsTerm  extends  IsTermExtractor  {
196+   object  IsTerm  extends  IsTermModule  {
197197    def  unapply (tree : Tree )(implicit  ctx : Context ):  Option [Term ] = 
198198      if  (tree.isTerm) Some (tree) else  None 
199199    def  unapply (termOrTypeTree : TermOrTypeTree )(implicit  ctx : Context , dummy : DummyImplicit ):  Option [Term ] = 
@@ -202,13 +202,27 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
202202
203203  object  Term  extends  TermModule  with  TermCoreModuleImpl  {
204204
205+     object  IsIdent  extends  IsIdentModule  {
206+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Ident ] =  x match  {
207+         case  x : tpd.Ident  if  x.isTerm =>  Some (x)
208+         case  _ =>  None 
209+       }
210+     }
211+ 
205212    object  Ident  extends  IdentExtractor  {
206213      def  unapply (x : Term )(implicit  ctx : Context ):  Option [String ] =  x match  {
207214        case  x : tpd.Ident  if  x.isTerm =>  Some (x.name.show)
208215        case  _ =>  None 
209216      }
210217    }
211218
219+     object  IsSelect  extends  IsSelectModule  {
220+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Select ] =  x match  {
221+         case  x : tpd.Select  if  x.isTerm =>  Some (x)
222+         case  _ =>  None 
223+       }
224+     }
225+ 
212226    object  Select  extends  SelectExtractor  {
213227      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , String , Option [Signature ])] =  x match  {
214228        case  x : tpd.Select  if  x.isTerm => 
@@ -220,69 +234,139 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
220234      }
221235    }
222236
237+     object  IsLiteral  extends  IsLiteralModule  {
238+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Literal ] =  x match  {
239+         case  x : tpd.Literal  =>  Some (x)
240+         case  _ =>  None 
241+       }
242+     }
243+ 
223244    object  Literal  extends  LiteralExtractor  {
224245      def  unapply (x : Term )(implicit  ctx : Context ):  Option [Constant ] =  x match  {
225246        case  Trees .Literal (const) =>  Some (const)
226247        case  _ =>  None 
227248      }
228249    }
229250
251+     object  IsThis  extends  IsThisModule  {
252+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [This ] =  x match  {
253+         case  x : tpd.This  =>  Some (x)
254+         case  _ =>  None 
255+       }
256+     }
257+ 
230258    object  This  extends  ThisExtractor  {
231259      def  unapply (x : Term )(implicit  ctx : Context ):  Option [Option [Id ]] =  x match  {
232260        case  Trees .This (qual) =>  Some (optional(qual))
233261        case  _ =>  None 
234262      }
235263    }
236264
265+     object  IsNew  extends  IsNewModule  {
266+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [New ] =  x match  {
267+         case  x : tpd.New  =>  Some (x)
268+         case  _ =>  None 
269+       }
270+     }
271+ 
237272    object  New  extends  NewExtractor  {
238273      def  unapply (x : Term )(implicit  ctx : Context ):  Option [TypeTree ] =  x match  {
239274        case  x : tpd.New  =>  Some (x.tpt)
240275        case  _ =>  None 
241276      }
242277    }
243278
279+     object  IsNamedArg  extends  IsNamedArgModule  {
280+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [NamedArg ] =  x match  {
281+         case  x : tpd.NamedArg  if  x.name.isInstanceOf [Names .TermName ] =>  Some (x) //  TODO: Now, the name should alwas be a term name
282+         case  _ =>  None 
283+       }
284+     }
285+ 
244286    object  NamedArg  extends  NamedArgExtractor  {
245287      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(String , Term )] =  x match  {
246288        case  x : tpd.NamedArg  if  x.name.isInstanceOf [Names .TermName ] =>  Some ((x.name.toString, x.arg))
247289        case  _ =>  None 
248290      }
249291    }
250292
293+     object  IsApply  extends  IsApplyModule  {
294+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Apply ] =  x match  {
295+         case  x : tpd.Apply  =>  Some (x)
296+         case  _ =>  None 
297+       }
298+     }
299+ 
251300    object  Apply  extends  ApplyExtractor  {
252301      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , List [Term ])] =  x match  {
253302        case  x : tpd.Apply  =>  Some ((x.fun, x.args))
254303        case  _ =>  None 
255304      }
256305    }
257306
307+     object  IsTypeApply  extends  IsTypeApplyModule  {
308+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [TypeApply ] =  x match  {
309+         case  x : tpd.TypeApply  =>  Some (x)
310+         case  _ =>  None 
311+       }
312+     }
313+ 
258314    object  TypeApply  extends  TypeApplyExtractor  {
259315      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , List [TypeTree ])] =  x match  {
260316        case  x : tpd.TypeApply  =>  Some ((x.fun, x.args))
261317        case  _ =>  None 
262318      }
263319    }
264320
321+     object  IsSuper  extends  IsSuperModule  {
322+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Super ] =  x match  {
323+         case  x : tpd.Super  =>  Some (x)
324+         case  _ =>  None 
325+       }
326+     }
327+ 
265328    object  Super  extends  SuperExtractor  {
266329      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , Option [Id ])] =  x match  {
267330        case  x : tpd.Super  =>  Some ((x.qual, if  (x.mix.isEmpty) None  else  Some (x.mix)))
268331        case  _ =>  None 
269332      }
270333    }
271334
335+     object  IsTyped  extends  IsTypedModule  {
336+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Typed ] =  x match  {
337+         case  x : tpd.Typed  =>  Some (x)
338+         case  _ =>  None 
339+       }
340+     }
341+ 
272342    object  Typed  extends  TypedExtractor  {
273343      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , TypeTree )] =  x match  {
274344        case  x : tpd.Typed  =>  Some ((x.expr, x.tpt))
275345        case  _ =>  None 
276346      }
277347    }
278348
349+     object  IsAssign  extends  IsAssignModule  {
350+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Assign ] =  x match  {
351+         case  x : tpd.Assign  =>  Some (x)
352+         case  _ =>  None 
353+       }
354+     }
355+ 
279356    object  Assign  extends  AssignExtractor  {
280357      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , Term )] =  x match  {
281358        case  x : tpd.Assign  =>  Some ((x.lhs, x.rhs))
282359        case  _ =>  None 
283360      }
284361    }
285362
363+     object  IsBlock  extends  IsBlockModule  {
364+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Block ] =  Block .normalizedLoops(x) match  {
365+         case  x : tpd.Block  =>  Some (x)
366+         case  _ =>  None 
367+       }
368+     }
369+ 
286370    object  Block  extends  BlockExtractor  {
287371      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(List [Statement ], Term )] =  normalizedLoops(x) match  {
288372        case  Trees .Block (stats, expr) =>  Some ((stats, expr))
@@ -292,7 +376,7 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
292376       *  i) Put `while` and `doWhile` loops in their own blocks: `{ def while$() = ...; while$() }` 
293377       *  ii) Put closures in their own blocks: `{ def anon$() = ...; closure(anon$, ...) }` 
294378       */  
295-       private  def  normalizedLoops (tree : tpd.Tree )(implicit  ctx : Context ):  tpd.Tree  =  tree match  {
379+       private [ Term ]  def  normalizedLoops (tree : tpd.Tree )(implicit  ctx : Context ):  tpd.Tree  =  tree match  {
296380        case  block : tpd.Block  if  block.stats.size >  1  => 
297381          def  normalizeInnerLoops (stats : List [tpd.Tree ]):  List [tpd.Tree ] =  stats match  {
298382            case  (x : tpd.DefDef ) ::  y ::  xs if  needsNormalization(y) => 
@@ -318,6 +402,13 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
318402      }
319403    }
320404
405+     object  IsInlined  extends  IsInlinedModule  {
406+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Inlined ] =  x match  {
407+         case  x : tpd.Inlined  =>  Some (x)
408+         case  _ =>  None 
409+       }
410+     }
411+ 
321412    object  Inlined  extends  InlinedExtractor  {
322413      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Option [TermOrTypeTree ], List [Statement ], Term )] =  x match  {
323414        case  x : tpd.Inlined  => 
@@ -326,48 +417,101 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
326417      }
327418    }
328419
420+     object  IsLambda  extends  IsLambdaModule  {
421+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Lambda ] =  x match  {
422+         case  x : tpd.Closure  =>  Some (x)
423+         case  _ =>  None 
424+       }
425+     }
426+ 
329427    object  Lambda  extends  LambdaExtractor  {
330428      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , Option [TypeTree ])] =  x match  {
331429        case  x : tpd.Closure  =>  Some ((x.meth, optional(x.tpt)))
332430        case  _ =>  None 
333431      }
334432    }
335433
434+     object  IsIf  extends  IsIfModule  {
435+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [If ] =  x match  {
436+         case  x : tpd.If  =>  Some (x)
437+         case  _ =>  None 
438+       }
439+     }
440+ 
336441    object  If  extends  IfExtractor  {
337442      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , Term , Term )] =  x match  {
338443        case  x : tpd.If  =>  Some ((x.cond, x.thenp, x.elsep))
339444        case  _ =>  None 
340445      }
341446    }
342447
448+     object  IsMatch  extends  IsMatchModule  {
449+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Match ] =  x match  {
450+         case  x : tpd.Match  =>  Some (x)
451+         case  _ =>  None 
452+       }
453+     }
454+ 
343455    object  Match  extends  MatchExtractor  {
344456      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , List [CaseDef ])] =  x match  {
345457        case  x : tpd.Match  =>  Some ((x.selector, x.cases))
346458        case  _ =>  None 
347459      }
348460    }
349461
462+     object  IsTry  extends  IsTryModule  {
463+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Try ] =  x match  {
464+         case  x : tpd.Try  =>  Some (x)
465+         case  _ =>  None 
466+       }
467+     }
468+ 
350469    object  Try  extends  TryExtractor  {
351470      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , List [CaseDef ], Option [Term ])] =  x match  {
352471        case  x : tpd.Try  =>  Some ((x.expr, x.cases, optional(x.finalizer)))
353472        case  _ =>  None 
354473      }
355474    }
356475
476+     object  IsReturn  extends  IsReturnModule  {
477+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Return ] =  x match  {
478+         case  x : tpd.Return  =>  Some (x)
479+         case  _ =>  None 
480+       }
481+     }
482+ 
357483    object  Return  extends  ReturnExtractor  {
358484      def  unapply (x : Term )(implicit  ctx : Context ):  Option [Term ] =  x match  {
359485        case  x : tpd.Return  =>  Some (x.expr)
360486        case  _ =>  None 
361487      }
362488    }
363489
490+     object  IsRepeated  extends  IsRepeatedModule  {
491+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [Repeated ] =  x match  {
492+         case  x : tpd.SeqLiteral  =>  Some (x)
493+         case  _ =>  None 
494+       }
495+     }
496+ 
364497    object  Repeated  extends  RepeatedExtractor  {
365498      def  unapply (x : Term )(implicit  ctx : Context ):  Option [List [Term ]] =  x match  {
366499        case  x : tpd.SeqLiteral  =>  Some (x.elems)
367500        case  _ =>  None 
368501      }
369502    }
370503
504+     object  IsSelectOuter  extends  IsSelectOuterModule  {
505+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [SelectOuter ] =  x match  {
506+         case  x : tpd.Select  => 
507+           x.name match  {
508+             case  NameKinds .OuterSelectName (_, _) =>  Some (x)
509+             case  _ =>  None 
510+           }
511+         case  _ =>  None 
512+       }
513+     }
514+ 
371515    object  SelectOuter  extends  SelectOuterExtractor  {
372516      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , Int , Type )] =  x match  {
373517        case  x : tpd.Select  => 
@@ -379,6 +523,13 @@ trait TreeOpsImpl extends scala.tasty.reflect.TreeOps with CoreImpl with Helpers
379523      }
380524    }
381525
526+     object  IsWhile  extends  IsWhileModule  {
527+       def  unapply (x : Term )(implicit  ctx : Context ):  Option [While ] =  x match  {
528+         case  x : tpd.WhileDo  =>  Some (x)
529+         case  _ =>  None 
530+       }
531+     }
532+ 
382533    object  While  extends  WhileExtractor  {
383534      def  unapply (x : Term )(implicit  ctx : Context ):  Option [(Term , Term )] =  x match  {
384535        case  x : tpd.WhileDo  =>  Some ((x.cond, x.body))
0 commit comments