dart-archive / angular_analyzer_plugin

WORK MOVED TO dart-lang/angular repository
https://github.com/dart-lang/angular/tree/master/angular_analyzer_plugin
68 stars 13 forks source link

Fuzz failure during autocompletion #504

Open MichaelRFairhurst opened 6 years ago

MichaelRFairhurst commented 6 years ago
Fuzz Failure                                                                     
<<==DART CODE==>>                                                                
import 'package:angular2/angular2.dart';                                         

@Component(                                                                      
  selector: 'my-aaa,                                                             
  templateUrl: 'test.html',                                                      
  directives: const [CounterComponent, NgIf, NgFor, NgForm, NgModel])            
class ComponentA {                                                               
  List<String> items;                                                            
  Strig header;                                                                  
}                                                                                

@Component(                                                                      
  selector: 'my-counter',                                                        
  inputs: const ['count'],                                                       
  outputs: const ['resetEvent: reset'],                                          
  template: '{{count}} <button "(click)="increment()" [value]="\'add\'"></butt   
<<==HTML CODE==>>                                                                
<!-- @ngIgnoreErrors: -->                                                        
    [maxCount]='4'                                                               
  {{x}} : {{item.trim()}}                                                        
  <fof2833a3f260b0937bater.reset()'                                              
    <my-counter></my-counter>                                                    
rm #ngForm="ngForm"></form>                                                      
    (click)='h1.hidden = !h1.hidden; coun}                                       
]),                                                                              
});                                                                              
{                                                                                
\'\'\');                                                                         
  '090cedb3f2833a3f260b0937bater.reset()'                                        
    <my-counter></my-counter>                                                    
    (reset)=''                                                                   

  <input [(ngModel)]="header" />                                                 
  {{ngFo^rm.dirty}}                                                              
</li>                                                                            
    (incremented)='items.add($event.toString())'>                                
</div>                                                                           
<div *ngIf="items.length > 0">                                                   
<h1 #h1>Showing {{items.length}} items:</h1>                                     

<li *ngFor='let item of items; let x=index' [hidden]='item != ntull'>            

  </my-counter>                                                                  
  <my-counter    #counter             
    [count]="items.length"                                                       
<<==DONE==>>                                                                     
'package:analyzer_plugin/src/utilities/completion/optype.dart': Failed assertion: line 433 pos 12: 'false': is not true.
#0      _AssertionError._doThrowNew (dart:core-patch/dart:core/errors_patch.dart:37)
#1      _AssertionError._throwNew (dart:core-patch/dart:core/errors_patch.dart:33)
#2      _OpTypeAstVisitor.visitExpression (package:analyzer_plugin/src/utilities/completion/optype.dart:433:12)
#3      GeneralizingAstVisitor.visitLiteral (package:analyzer/dart/ast/visitor.dart:400:35)
#4      GeneralizingAstVisitor.visitSymbolLiteral (package:analyzer/dart/ast/visitor.dart:521:47)
#5      SymbolLiteralImpl.accept (package:analyzer/src/dart/ast/ast.dart:10312:49)
#6      new OpType.forCompletion (package:analyzer_plugin/src/utilities/completion/optype.dart:117:10)
#7      NgInheritedReferenceContributor.defineOpType (package:angular_analyzer_plugin/src/completion.dart:310:24)
#8      NgInheritedReferenceContributor.computeSuggestions (package:angular_analyzer_plugin/src/completion.dart:264:13)
<asynchronous suspension>                                                        
#9      AbstractCompletionContributorTest.computeSuggestions (file:///home/mfairhurst/dart/angular_analyzer_plugin2/angular_analyzer_plugin/test/completion_contributor_test_util.dart:56:25)
<asynchronous suspension>                                                        
#10     CompletionFuzzTest.checkNoCrash.<anonymous closure>.<anonymous closure> (file:///home/mfairhurst/dart/angular_analyzer_plugin2/angular_analyzer_plugin/test/completion_fuzz_test.dart:45:11)
#11     _rootRunUnary (dart:async/zone.dart:1134)                                
#12     _CustomZone.runUnary (dart:async/zone.dart:1031)                         
#13     _FutureListener.handleValue (dart:async/future_impl.dart:129)            
#14     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633)
#15     _Future._propagateToListeners (dart:async/future_impl.dart:662)          
#16     _Future._complete (dart:async/future_impl.dart:467)                      
#17     _SyncCompleter.complete (dart:async/future_impl.dart:51)                 
#18     _completeOnAsyncReturn (dart:async-patch/dart:async/async_patch.dart:292)
#19     AbstractCompletionContributorTest.resolveSingleTemplate (file:///home/mfairhurst/dart/angular_analyzer_plugin2/angular_analyzer_plugin/test/completion_contributor_test_util.dart:79:9)
#20     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/dart:async/async_patch.dart:77)
#21     _rootRunUnary (dart:async/zone.dart:1134)                                
#22     _CustomZone.runUnary (dart:async/zone.dart:1031)                         
#23     _FutureListener.handleValue (dart:async/future_impl.dart:129)            
#24     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633)
#25     _Future._propagateToListeners (dart:async/future_impl.dart:662)          
#26     _Future._complete (dart:async/future_impl.dart:467)                      
#27     _SyncCompleter.complete (dart:async/future_impl.dart:51)                 
#28     _completeOnAsyncReturn (dart:async-patch/dart:async/async_patch.dart:292)
#29     AngularDriver.resolveHtml (package:angular_analyzer_plugin/src/angular_driver.dart:480:5)
#30     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/dart:async/async_patch.dart:77)
#31     _rootRunUnary (dart:async/zone.dart:1134)                                
#32     _CustomZone.runUnary (dart:async/zone.dart:1031)                         
#33     _FutureListener.handleValue (dart:async/future_impl.dart:129)            
#34     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633)
#35     _Future._propagateToListeners (dart:async/future_impl.dart:662)          
#36     _Future._complete (dart:async/future_impl.dart:467)                      
#37     _SyncCompleter.complete (dart:async/future_impl.dart:51)                 
#38     _completeOnAsyncReturn (dart:async-patch/dart:async/async_patch.dart:292)
#39     AngularDriver.resolveHtmlFrom (package:angular_analyzer_plugin/src/angular_driver.dart:603:5)
#40     _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/dart:async/async_patch.dart:77)
#41     _rootRunUnary (dart:async/zone.dart:1134)                                
#42     _CustomZone.runUnary (dart:async/zone.dart:1031)                         
#43     _FutureListener.handleValue (dart:async/future_impl.dart:129)            
#44     _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633)                                           
MichaelRFairhurst commented 6 years ago

This seems to be a race condition or something. Have reproed it twice in my fuzzer (seeds 1384179290 and 3939120087) and neither have seemed to fail more than once.