From 728f4079e9228f3dcf4b11182407d7208b3c5b95 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Thu, 16 Oct 2014 11:53:51 +0000 Subject: [PATCH 01/91] dart2js: restructure emitter. Collect information before hand, and then emit output units in one go. First emit the deferred units since we need their hashes in the main unit. There is still code that collects the output-unit of the emitted element, even though we know that it should/must be in the current output-unit. That code can be cleaned up in a later CL. We should not need to look up the output unit for any element in the old-emitter anymore. R=johnniwinther@google.com Review URL: https://codereview.chromium.org//656043003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41142 260f80e4-7a28-3924-810f-c04153c831b5 --- .../lib/caching_compiler.dart | 4 +- .../js_emitter/code_emitter_task.dart | 43 ++ .../js_emitter/old_emitter/class_emitter.dart | 11 +- .../js_emitter/old_emitter/emitter.dart | 504 ++++++++++-------- 4 files changed, 317 insertions(+), 245 deletions(-) diff --git a/pkg/dart2js_incremental/lib/caching_compiler.dart b/pkg/dart2js_incremental/lib/caching_compiler.dart index 38edf9791ba0..e239cb08e1d2 100644 --- a/pkg/dart2js_incremental/lib/caching_compiler.dart +++ b/pkg/dart2js_incremental/lib/caching_compiler.dart @@ -135,9 +135,11 @@ Future reuseCompiler( ..recordedMangledNames.clear() ..additionalProperties.clear() ..clearCspPrecompiledNodes() - ..hasMakeConstantList = false ..elementDescriptors.clear(); + backend.emitter + ..outputContainsConstantList = false; + backend ..preMirrorsMethodCount = 0; diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart index 253b7c712b07..2ae131f5da9e 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart @@ -25,6 +25,16 @@ class CodeEmitterTask extends CompilerTask { new Map>(); final Map> outputConstantLists = new Map>(); + final Map> outputStaticLists = + new Map>(); + final Map> outputLibraryLists = + new Map>(); + + /// True, if the output contains a constant list. + /// + /// This flag is updated in [computeNeededConstants]. + bool outputContainsConstantList = false; + final List nativeClasses = []; /// Records if a type variable is read dynamically for type tests. @@ -163,6 +173,9 @@ class CodeEmitterTask extends CompilerTask { compiler.hasIncrementalSupport ? null : emitter.compareConstants); for (ConstantValue constant in constants) { if (emitter.isConstantInlinedOrAlreadyEmitted(constant)) continue; + + if (constant.isList) outputContainsConstantList = true; + OutputUnit constantUnit = compiler.deferredLoadTask.outputUnitForConstant(constant); if (constantUnit == null) { @@ -286,6 +299,33 @@ class CodeEmitterTask extends CompilerTask { } } + void computeNeededStatics() { + bool isStaticFunction(Element element) => + !element.isInstanceMember && !element.isField; + + Iterable elements = + backend.generatedCode.keys.where(isStaticFunction); + + for (Element element in Elements.sortedByPosition(elements)) { + outputStaticLists.putIfAbsent( + compiler.deferredLoadTask.outputUnitForElement(element), + () => new List()) + .add(element); + } + } + + void computeNeededLibraries() { + void addSurroundingLibraryToSet(Element element) { + OutputUnit unit = compiler.deferredLoadTask.outputUnitForElement(element); + LibraryElement library = element.library; + outputLibraryLists.putIfAbsent(unit, () => new Set()) + .add(library); + } + + backend.generatedCode.keys.forEach(addSurroundingLibraryToSet); + neededClasses.forEach(addSurroundingLibraryToSet); +} + void assembleProgram() { measure(() { emitter.invalidateCaches(); @@ -296,6 +336,9 @@ class CodeEmitterTask extends CompilerTask { computeNeededDeclarations(); computeNeededConstants(); + computeNeededStatics(); + computeNeededLibraries(); + Program program; if (USE_NEW_EMITTER) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart index dbd361114813..13e2df190681 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart @@ -321,15 +321,10 @@ class ClassEmitter extends CodeEmitterHelper { statics.add(property); } - Map classPropertyLists = + ClassBuilder classProperties = emitter.elementDescriptors.remove(classElement); - if (classPropertyLists != null) { - for (ClassBuilder classProperties in classPropertyLists.values) { - // TODO(sigurdm): What about deferred? - if (classProperties != null) { - statics.addAll(classProperties.properties); - } - } + if (classProperties != null) { + statics.addAll(classProperties.properties); } if (!statics.isEmpty) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index b7b5e736e514..ff746b282f03 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -83,22 +83,17 @@ class OldEmitter implements Emitter { Map> _cspPrecompiledConstructorNames = new Map>(); - // True if Isolate.makeConstantList is needed. - bool hasMakeConstantList = false; - /** * Accumulate properties for classes and libraries, describing their * static/top-level members. * Later, these members are emitted when the class or library is emitted. * - * For supporting deferred loading we keep one list per output unit. - * - * See [getElementDecriptor]. + * See [getElementDescriptor]. */ // TODO(ahe): Generate statics with their class, and store only libraries in // this map. - final Map> elementDescriptors - = new Map>(); + final Map elementDescriptors = + new Map(); final bool generateSourceMap; @@ -581,7 +576,7 @@ class OldEmitter implements Emitter { // isolateProperties themselves. return js(''' function (oldIsolate) { - var isolateProperties = oldIsolate.#; + var isolateProperties = oldIsolate.#; // isolatePropertiesName function Isolate() { var hasOwnProperty = Object.prototype.hasOwnProperty; for (var staticName in isolateProperties) @@ -613,16 +608,17 @@ class OldEmitter implements Emitter { } Isolate.prototype = oldIsolate.prototype; Isolate.prototype.constructor = Isolate; - Isolate.# = isolateProperties; - if (#) - Isolate.# = oldIsolate.#; - if (#) - Isolate.# = oldIsolate.#; + Isolate.# = isolateProperties; // isolatePropertiesName + if (#) // needsDefineClass. + Isolate.# = oldIsolate.#; // finishClassesProperty * 2 + if (#) // outputContainsConstantList + Isolate.# = oldIsolate.#; // makeConstListProperty * 2 return Isolate; }''', [namer.isolatePropertiesName, namer.isolatePropertiesName, needsDefineClass, finishClassesProperty, finishClassesProperty, - hasMakeConstantList, makeConstListProperty, makeConstListProperty ]); + task.outputContainsConstantList, + makeConstListProperty, makeConstListProperty ]); } jsAst.Fun get lazyInitializerFunction { @@ -877,14 +873,8 @@ class OldEmitter implements Emitter { } } - void emitStaticFunctions() { - bool isStaticFunction(Element element) => - !element.isInstanceMember && !element.isField; - - Iterable elements = - backend.generatedCode.keys.where(isStaticFunction); - - for (Element element in Elements.sortedByPosition(elements)) { + void emitStaticFunctions(List staticFunctions) { + for (Element element in staticFunctions) { ClassBuilder builder = new ClassBuilder(element, namer); containerBuilder.addMember(element, builder); getElementDescriptor(element).properties.addAll(builder.properties); @@ -997,7 +987,6 @@ class OldEmitter implements Emitter { cachedEmittedConstants.add(constant); } String name = namer.constantName(constant); - if (constant.isList) emitMakeConstantListIfNotEmitted(buffer); jsAst.Expression init = js('#.# = #', [namer.globalObjectForConstant(constant), name, constantInitializerExpression(constant)]); @@ -1010,9 +999,7 @@ class OldEmitter implements Emitter { } } - void emitMakeConstantListIfNotEmitted(CodeBuffer buffer) { - if (hasMakeConstantList) return; - hasMakeConstantList = true; + void emitMakeConstantList(CodeBuffer buffer) { buffer.write( jsAst.prettyPrint( js.statement(r'''#.# = function(list) { @@ -1220,9 +1207,7 @@ class OldEmitter implements Emitter { mainBuffer.add(N); } - void writeLibraryDescriptors( - LibraryElement library, - Map libraryDescriptorBuffers) { + void writeLibraryDescriptors(CodeBuffer buffer, LibraryElement library) { var uri = ""; if (!compiler.enableMinification || backend.mustRetainUris) { uri = library.canonicalUri; @@ -1230,42 +1215,40 @@ class OldEmitter implements Emitter { uri = relativize(compiler.outputUri, library.canonicalUri, false); } } - Map descriptors = elementDescriptors[library]; + ClassBuilder descriptor = elementDescriptors[library]; + if (descriptor == null) { + // Nothing of the library was emitted. + // TODO(floitsch): this should not happen. We currently have an example + // with language/prefix6_negative_test.dart where we have an instance + // method without its corresponding class. + return; + } + String libraryName = (!compiler.enableMinification || backend.mustRetainLibraryNames) ? library.getLibraryName() : ""; - for (OutputUnit outputUnit in compiler.deferredLoadTask.allOutputUnits) { - if (!descriptors.containsKey(outputUnit)) continue; - - ClassBuilder descriptor = descriptors[outputUnit]; - - jsAst.Fun metadata = metadataEmitter.buildMetadataFunction(library); - - jsAst.ObjectInitializer initializers = descriptor.toObjectInitializer(); - - CodeBuffer libraryDescriptorBuffer = - libraryDescriptorBuffers.putIfAbsent(outputUnit, - () => new CodeBuffer()); - - compiler.dumpInfoTask.registerElementAst(library, metadata); - compiler.dumpInfoTask.registerElementAst(library, initializers); - libraryDescriptorBuffer - ..write('["$libraryName",$_') - ..write('"${uri}",$_') - ..write(metadata == null ? "" : jsAst.prettyPrint(metadata, - compiler, - monitor: compiler.dumpInfoTask)) - ..write(',$_') - ..write(namer.globalObjectFor(library)) - ..write(',$_') - ..write(jsAst.prettyPrint(initializers, - compiler, - monitor: compiler.dumpInfoTask)) - ..write(library == compiler.mainApp ? ',${n}1' : "") - ..write('],$n'); - } + jsAst.Fun metadata = metadataEmitter.buildMetadataFunction(library); + + jsAst.ObjectInitializer initializers = descriptor.toObjectInitializer(); + + compiler.dumpInfoTask.registerElementAst(library, metadata); + compiler.dumpInfoTask.registerElementAst(library, initializers); + buffer + ..write('["$libraryName",$_') + ..write('"${uri}",$_') + ..write(metadata == null ? "" : jsAst.prettyPrint(metadata, + compiler, + monitor: compiler.dumpInfoTask)) + ..write(',$_') + ..write(namer.globalObjectFor(library)) + ..write(',$_') + ..write(jsAst.prettyPrint(initializers, + compiler, + monitor: compiler.dumpInfoTask)) + ..write(library == compiler.mainApp ? ',${n}1' : "") + ..write('],$n'); } void emitPrecompiledConstructor(OutputUnit outputUnit, @@ -1309,13 +1292,118 @@ class OldEmitter implements Emitter { } } - void emitProgram(Program program) { - bool isProgramSplit = compiler.deferredLoadTask.isProgramSplit; - // Maps each output unit to a codebuffers with the library descriptors of - // the output unit emitted to it. - Map libraryDescriptorBuffers = - new Map(); + void emitLibraries(Iterable libraries) { + if (libraries.isEmpty) return; + + // TODO(karlklose): document what kinds of fields this loop adds to the + // library class builder. + for (LibraryElement element in libraries) { + LibraryElement library = element; + ClassBuilder builder = new ClassBuilder(library, namer); + if (classEmitter.emitFields(library, builder, null, emitStatics: true)) { + jsAst.ObjectInitializer initializer = builder.toObjectInitializer(); + compiler.dumpInfoTask.registerElementAst(builder.element, initializer); + getElementDescriptor(library).properties.addAll(initializer.properties); + } + } + } + void emitTypedefs() { + OutputUnit mainOutputUnit = compiler.deferredLoadTask.mainOutputUnit; + + // Emit all required typedef declarations into the main output unit. + // TODO(karlklose): unify required classes and typedefs to declarations + // and have builders for each kind. + for (TypedefElement typedef in typedefsNeededForReflection) { + OutputUnit mainUnit = compiler.deferredLoadTask.mainOutputUnit; + LibraryElement library = typedef.library; + // TODO(karlklose): add a TypedefBuilder and move this code there. + DartType type = typedef.alias; + int typeIndex = metadataEmitter.reifyType(type); + String typeReference = + encoding.encodeTypedefFieldDescriptor(typeIndex); + jsAst.Property descriptor = new jsAst.Property( + js.string(namer.classDescriptorProperty), + js.string(typeReference)); + jsAst.Node declaration = new jsAst.ObjectInitializer([descriptor]); + String mangledName = namer.getNameX(typedef); + String reflectionName = getReflectionName(typedef, mangledName); + getElementDescriptor(library) + ..addProperty(mangledName, declaration) + ..addProperty("+$reflectionName", js.string('')); + // Also emit a trivial constructor for CSP mode. + String constructorName = mangledName; + jsAst.Expression constructorAst = js('function() {}'); + emitPrecompiledConstructor(mainOutputUnit, + constructorName, + constructorAst); + } + } + + void emitMangledNames() { + if (!mangledFieldNames.isEmpty) { + var keys = mangledFieldNames.keys.toList(); + keys.sort(); + var properties = []; + for (String key in keys) { + var value = js.string('${mangledFieldNames[key]}'); + properties.add(new jsAst.Property(js.string(key), value)); + } + + jsAst.Expression mangledNamesAccess = + generateEmbeddedGlobalAccess(embeddedNames.MANGLED_NAMES); + var map = new jsAst.ObjectInitializer(properties); + mainBuffer.write( + jsAst.prettyPrint( + js.statement('# = #', [mangledNamesAccess, map]), + compiler, + monitor: compiler.dumpInfoTask)); + if (compiler.enableMinification) { + mainBuffer.write(';'); + } + } + if (!mangledGlobalFieldNames.isEmpty) { + var keys = mangledGlobalFieldNames.keys.toList(); + keys.sort(); + var properties = []; + for (String key in keys) { + var value = js.string('${mangledGlobalFieldNames[key]}'); + properties.add(new jsAst.Property(js.string(key), value)); + } + jsAst.Expression mangledGlobalNamesAccess = + generateEmbeddedGlobalAccess(embeddedNames.MANGLED_GLOBAL_NAMES); + var map = new jsAst.ObjectInitializer(properties); + mainBuffer.write( + jsAst.prettyPrint( + js.statement('# = #', [mangledGlobalNamesAccess, map]), + compiler, + monitor: compiler.dumpInfoTask)); + if (compiler.enableMinification) { + mainBuffer.write(';'); + } + } + } + + void checkEverythingEmitted(Iterable elements) { + List pendingStatics; + if (!compiler.hasIncrementalSupport) { + pendingStatics = + Elements.sortedByPosition(elements.where((e) => !e.isLibrary)); + + pendingStatics.forEach((element) => + compiler.reportInfo( + element, MessageKind.GENERIC, {'text': 'Pending statics.'})); + } + + if (pendingStatics != null && !pendingStatics.isEmpty) { + compiler.internalError(pendingStatics.first, + 'Pending statics (see above).'); + } + } + + void emitMainOutputUnit(Map deferredLoadHashes, + CodeBuffer nativeBuffer) { + bool isProgramSplit = compiler.deferredLoadTask.isProgramSplit; OutputUnit mainOutputUnit = compiler.deferredLoadTask.mainOutputUnit; mainBuffer.add(buildGeneratedBy()); @@ -1370,169 +1458,51 @@ class OldEmitter implements Emitter { '${globalsHolder}.$initName$_=${_}$initName$N'); } mainBuffer.add('init()$N$n'); - // Shorten the code by using [namer.currentIsolate] as temporary. - isolateProperties = namer.currentIsolate; - mainBuffer.add( - '$isolateProperties$_=$_$isolatePropertiesName$N'); + mainBuffer.add('$isolateProperties$_=$_$isolatePropertiesName$N'); - emitStaticFunctions(); + emitStaticFunctions(task.outputStaticLists[mainOutputUnit]); // Only output the classesCollector if we actually have any classes. if (!(nativeClasses.isEmpty && compiler.codegenWorld.staticFunctionsNeedingGetter.isEmpty && - outputClassLists.values.every((classList) => classList.isEmpty) && - typedefsNeededForReflection.isEmpty)) { + outputClassLists.values.every((classList) => classList.isEmpty) && + typedefsNeededForReflection.isEmpty)) { // Shorten the code by using "$$" as temporary. classesCollector = r"$$"; mainBuffer.add('var $classesCollector$_=${_}Object.create(null)$N$n'); } - // Emit native classes on [nativeBuffer]. - final CodeBuffer nativeBuffer = new CodeBuffer(); if (!nativeClasses.isEmpty) { - addComment('Native classes', nativeBuffer); addComment('Native classes', mainBuffer); - nativeEmitter.generateNativeClasses(nativeClasses, mainBuffer, - additionalProperties); } - for (List outputClassList in outputClassLists.values) { - for (ClassElement element in outputClassList) { + List classes = task.outputClassLists[mainOutputUnit]; + if (classes != null) { + for (ClassElement element in classes) { generateClass(element, getElementDescriptor(element)); } } - nativeEmitter.finishGenerateNativeClasses(); - nativeEmitter.assembleCode(nativeBuffer); - - - // After this assignment we will produce invalid JavaScript code if we use - // the classesCollector variable. - classesCollector = 'classesCollector should not be used from now on'; - - // TODO(sigurdm): Need to check this for each outputUnit. - if (!elementDescriptors.isEmpty) { - var oldClassesCollector = classesCollector; - classesCollector = r"$$"; - if (compiler.enableMinification) { - mainBuffer.write(';'); - } - - // TODO(karlklose): document what kinds of fields this loop adds to the - // library class builder. - for (Element element in elementDescriptors.keys) { - // TODO(ahe): Should iterate over all libraries. Otherwise, we will - // not see libraries that only have fields. - if (element.isLibrary) { - LibraryElement library = element; - ClassBuilder builder = new ClassBuilder(library, namer); - if (classEmitter.emitFields( - library, builder, null, emitStatics: true)) { - jsAst.ObjectInitializer initializer = - builder.toObjectInitializer(); - compiler.dumpInfoTask.registerElementAst(builder.element, - initializer); - getElementDescriptor(library) - .properties.addAll(initializer.properties); - } - } - } - - // Emit all required typedef declarations into the main output unit. - // TODO(karlklose): unify required classes and typedefs to declarations - // and have builders for each kind. - for (TypedefElement typedef in typedefsNeededForReflection) { - OutputUnit mainUnit = compiler.deferredLoadTask.mainOutputUnit; - LibraryElement library = typedef.library; - // TODO(karlklose): add a TypedefBuilder and move this code there. - DartType type = typedef.alias; - int typeIndex = metadataEmitter.reifyType(type); - String typeReference = - encoding.encodeTypedefFieldDescriptor(typeIndex); - jsAst.Property descriptor = new jsAst.Property( - js.string(namer.classDescriptorProperty), - js.string(typeReference)); - jsAst.Node declaration = new jsAst.ObjectInitializer([descriptor]); - String mangledName = namer.getNameX(typedef); - String reflectionName = getReflectionName(typedef, mangledName); - getElementDescriptor(library) - ..addProperty(mangledName, declaration) - ..addProperty("+$reflectionName", js.string('')); - // Also emit a trivial constructor for CSP mode. - String constructorName = mangledName; - jsAst.Expression constructorAst = js('function() {}'); - emitPrecompiledConstructor(mainOutputUnit, - constructorName, - constructorAst); - } - - if (!mangledFieldNames.isEmpty) { - var keys = mangledFieldNames.keys.toList(); - keys.sort(); - var properties = []; - for (String key in keys) { - var value = js.string('${mangledFieldNames[key]}'); - properties.add(new jsAst.Property(js.string(key), value)); - } - - jsAst.Expression mangledNamesAccess = - generateEmbeddedGlobalAccess(embeddedNames.MANGLED_NAMES); - var map = new jsAst.ObjectInitializer(properties); - mainBuffer.write( - jsAst.prettyPrint( - js.statement('# = #', [mangledNamesAccess, map]), - compiler, - monitor: compiler.dumpInfoTask)); - if (compiler.enableMinification) { - mainBuffer.write(';'); - } - } - if (!mangledGlobalFieldNames.isEmpty) { - var keys = mangledGlobalFieldNames.keys.toList(); - keys.sort(); - var properties = []; - for (String key in keys) { - var value = js.string('${mangledGlobalFieldNames[key]}'); - properties.add(new jsAst.Property(js.string(key), value)); - } - jsAst.Expression mangledGlobalNamesAccess = - generateEmbeddedGlobalAccess(embeddedNames.MANGLED_GLOBAL_NAMES); - var map = new jsAst.ObjectInitializer(properties); - mainBuffer.write( - jsAst.prettyPrint( - js.statement('# = #', [mangledGlobalNamesAccess, map]), - compiler, - monitor: compiler.dumpInfoTask)); - if (compiler.enableMinification) { - mainBuffer.write(';'); - } - } + if (compiler.enableMinification) { + mainBuffer.write(';'); + } - List sortedElements = - Elements.sortedByPosition(elementDescriptors.keys); + if (elementDescriptors.isNotEmpty) { + Iterable libraries = + task.outputLibraryLists[mainOutputUnit]; + if (libraries == null) libraries = []; + emitLibraries(libraries); + emitTypedefs(); + emitMangledNames(); - Iterable pendingStatics; - if (!compiler.hasIncrementalSupport) { - pendingStatics = sortedElements.where((element) { - return !element.isLibrary && - elementDescriptors[element].values.any((descriptor) => - descriptor != null); - }); + checkEverythingEmitted(elementDescriptors.keys); - pendingStatics.forEach((element) => - compiler.reportInfo( - element, MessageKind.GENERIC, {'text': 'Pending statics.'})); + CodeBuffer libraryBuffer = new CodeBuffer(); + for (LibraryElement library in Elements.sortedByPosition(libraries)) { + writeLibraryDescriptors(libraryBuffer, library); + elementDescriptors.remove(library); } - for (LibraryElement library in sortedElements.where((element) => - element.isLibrary)) { - writeLibraryDescriptors(library, libraryDescriptorBuffers); - elementDescriptors[library] = const {}; - } - if (pendingStatics != null && !pendingStatics.isEmpty) { - compiler.internalError(pendingStatics.first, - 'Pending statics (see above).'); - } mainBuffer ..write('(') ..write( @@ -1541,30 +1511,27 @@ class OldEmitter implements Emitter { compiler)) ..write(')') ..write('([$n') - ..add(libraryDescriptorBuffers[mainOutputUnit]) + ..add(libraryBuffer) ..write('])$N'); emitFinishClassesInvocationIfNecessary(mainBuffer); - classesCollector = oldClassesCollector; } + typeTestEmitter.emitRuntimeTypeSupport(mainBuffer, mainOutputUnit); interceptorEmitter.emitGetInterceptorMethods(mainBuffer); interceptorEmitter.emitOneShotInterceptors(mainBuffer); + + if (task.outputContainsConstantList) { + emitMakeConstantList(mainBuffer); + } + // Constants in checked mode call into RTI code to set type information // which may need getInterceptor (and one-shot interceptor) methods, so // we have to make sure that [emitGetInterceptorMethods] and // [emitOneShotInterceptors] have been called. emitCompileTimeConstants(mainBuffer, mainOutputUnit); - if (isProgramSplit) { - /// Map from OutputUnit to a hash of its content. The hash uniquely - /// identifies the code of the output-unit. It does not include - /// boilerplate JS code, like the sourcemap directives or the hash - /// itself. - Map deferredLoadHashes = - emitDeferredCode(libraryDescriptorBuffers); - emitDeferredBoilerPlate(mainBuffer, deferredLoadHashes); - } + emitDeferredBoilerPlate(mainBuffer, deferredLoadHashes); // Static field initializations require the classes and compile-time // constants to be set up. @@ -1573,6 +1540,7 @@ class OldEmitter implements Emitter { interceptorEmitter.emitMapTypeToInterceptor(mainBuffer); emitLazilyInitializedStaticFields(mainBuffer); + mainBuffer.writeln(); mainBuffer.add(nativeBuffer); metadataEmitter.emitMetadata(mainBuffer); @@ -1686,6 +1654,83 @@ class OldEmitter implements Emitter { ..add(cspBuffer.getText()) ..close(); } + } + + /// Returns a map from OutputUnit to a hash of its content. The hash uniquely + /// identifies the code of the output-unit. It does not include + /// boilerplate JS code, like the sourcemap directives or the hash + /// itself. + Map emitDeferredOutputUnits() { + if (!compiler.deferredLoadTask.isProgramSplit) return const {}; + + Map outputBuffers = + new Map(); + + for (OutputUnit outputUnit in compiler.deferredLoadTask.allOutputUnits) { + if (outputUnit == compiler.deferredLoadTask.mainOutputUnit) continue; + + List functions = task.outputStaticLists[outputUnit]; + if (functions != null) { + emitStaticFunctions(functions); + } + + List classes = task.outputClassLists[outputUnit]; + if (classes != null) { + for (ClassElement element in classes) { + generateClass(element, getElementDescriptor(element)); + } + } + + if (elementDescriptors.isNotEmpty) { + Iterable libraries = + task.outputLibraryLists[outputUnit]; + if (libraries == null) libraries = []; + emitLibraries(libraries); + + CodeBuffer buffer = new CodeBuffer(); + outputBuffers[outputUnit] = buffer; + for (LibraryElement library in Elements.sortedByPosition(libraries)) { + writeLibraryDescriptors(buffer, library); + elementDescriptors.remove(library); + } + } + } + + return emitDeferredCode(outputBuffers); + } + + CodeBuffer buildNativesBuffer() { + // Emit native classes on [nativeBuffer]. + final CodeBuffer nativeBuffer = new CodeBuffer(); + + if (nativeClasses.isEmpty) return nativeBuffer; + + + addComment('Native classes', nativeBuffer); + + nativeEmitter.generateNativeClasses(nativeClasses, mainBuffer, + additionalProperties); + + nativeEmitter.finishGenerateNativeClasses(); + nativeEmitter.assembleCode(nativeBuffer); + + return nativeBuffer; + } + + void emitProgram(Program program) { + // Shorten the code by using [namer.currentIsolate] as temporary. + isolateProperties = namer.currentIsolate; + + classesCollector = r"$$"; + + // Emit deferred units first, so we have their hashes. + // Map from OutputUnit to a hash of its content. The hash uniquely + // identifies the code of the output-unit. It does not include + // boilerplate JS code, like the sourcemap directives or the hash + // itself. + Map deferredLoadHashes = emitDeferredOutputUnits(); + CodeBuffer nativeBuffer = buildNativesBuffer(); + emitMainOutputUnit(deferredLoadHashes, nativeBuffer); if (backend.requiresPreamble && !backend.htmlLibraryIsLoaded) { @@ -1704,15 +1749,6 @@ class OldEmitter implements Emitter { return ''; } - ClassBuilder getElementDescriptorForOutputUnit(Element element, - OutputUnit outputUnit) { - Map descriptors = - elementDescriptors.putIfAbsent( - element, () => new Map()); - return descriptors.putIfAbsent(outputUnit, - () => new ClassBuilder(element, namer)); - } - ClassBuilder getElementDescriptor(Element element) { Element owner = element.library; if (!element.isLibrary && !element.isTopLevel && !element.isNative) { @@ -1729,8 +1765,9 @@ class OldEmitter implements Emitter { if (owner == null) { compiler.internalError(element, 'Owner is null.'); } - return getElementDescriptorForOutputUnit(owner, - compiler.deferredLoadTask.outputUnitForElement(element)); + return elementDescriptors.putIfAbsent( + owner, + () => new ClassBuilder(owner, namer)); } /// Emits support-code for deferred loading into [buffer]. @@ -1802,20 +1839,17 @@ class OldEmitter implements Emitter { /// Returns a mapping from outputUnit to a hash of the corresponding hunk that /// can be used for calling the initializer. Map emitDeferredCode( - Map libraryDescriptorBuffers) { + Map deferredBuffers) { Map hunkHashes = new Map(); for (OutputUnit outputUnit in compiler.deferredLoadTask.allOutputUnits) { if (outputUnit == compiler.deferredLoadTask.mainOutputUnit) continue; - CodeBuffer libraryDescriptorBuffer = libraryDescriptorBuffers[outputUnit]; + CodeBuffer libraryDescriptorBuffer = deferredBuffers[outputUnit]; CodeBuffer outputBuffer = new CodeBuffer(); - var oldClassesCollector = classesCollector; - classesCollector = r"$$"; - outputBuffer..write(buildGeneratedBy()) ..write('${deferredInitializers}.current$_=$_' 'function$_(${globalsHolder}) {$N'); @@ -1855,8 +1889,6 @@ class OldEmitter implements Emitter { } - classesCollector = oldClassesCollector; - // Set the currentIsolate variable to the current isolate (which is // provided as second argument). // We need to do this, because we use the same variable for setting up From bc35aaabbeee5bacc3a3b3a97d4b4de9ef2056b8 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Thu, 16 Oct 2014 12:07:56 +0000 Subject: [PATCH 02/91] dart2js: Use computed classes/statics from code-emitter-task in new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//649873003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41143 260f80e4-7a28-3924-810f-c04153c831b5 --- .../js_emitter/program_builder.dart | 4 ++-- .../implementation/js_emitter/registry.dart | 18 +++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index f5413048c955..b15bbafd38ea 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -47,8 +47,8 @@ class ProgramBuilder { Iterable neededStatics = backend.generatedCode.keys .where((Element e) => !e.isInstanceMember && !e.isField); - Elements.sortedByPosition(neededClasses).forEach(_registry.registerElement); - Elements.sortedByPosition(neededStatics).forEach(_registry.registerElement); + _task.outputClassLists.forEach(_registry.registerElements); + _task.outputStaticLists.forEach(_registry.registerElements); // TODO(kasperl): There's code that implicitly needs access to the special // $ holder so we have to register that. Can we track if we have to? diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart index ee992647d30c..a0a078dac935 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart @@ -64,22 +64,26 @@ class Registry { bool get _isProgramSplit => _deferredLoadTask.isProgramSplit; OutputUnit get _mainOutputUnit => _deferredLoadTask.mainOutputUnit; - Fragment _computeTargetFragment(Element element) { + Fragment _mapUnitToFragment(OutputUnit targetUnit) { if (mainFragment == null) { mainFragment = new Fragment.main(_deferredLoadTask.mainOutputUnit); } - if (!_isProgramSplit) return mainFragment; - OutputUnit targetUnit = _deferredLoadTask.outputUnitForElement(element); + if (!_isProgramSplit) { + assert(targetUnit == _deferredLoadTask.mainOutputUnit); + return mainFragment; + } if (targetUnit == _mainOutputUnit) return mainFragment; String name = targetUnit.name; return _deferredFragmentsMap.putIfAbsent( targetUnit, () => new Fragment.deferred(targetUnit, name)); } - /// Adds the element to the list of elements of the library in the right - /// fragment. - void registerElement(Element element) { - _computeTargetFragment(element).add(element.library, element); + /// Adds all elements to their respective libraries in the correct fragment. + void registerElements(OutputUnit outputUnit, List elements) { + Fragment targetFragment = _mapUnitToFragment(outputUnit); + for (Element element in Elements.sortedByPosition(elements)) { + targetFragment.add(element.library, element); + } } Holder registerHolder(String name) { From edbde2b1f45a0a480ce77194fa18137a57e2e8f7 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Thu, 16 Oct 2014 13:00:07 +0000 Subject: [PATCH 03/91] dart2js: Emit constants in new emitter. Currently the constants are still emitted eagerly, but it should be relatively straightforward to switch to a lazy emission. R=kasperl@google.com Review URL: https://codereview.chromium.org//642813005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41144 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/model.dart | 50 ++++++++++++++++--- .../js_emitter/new_emitter/emitter.dart | 22 +++----- .../js_emitter/new_emitter/model_emitter.dart | 25 +++++++++- .../js_emitter/program_builder.dart | 28 +++++++++-- 4 files changed, 97 insertions(+), 28 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 3ba6dacf526d..2a8748ea86c6 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -5,6 +5,7 @@ library dart2js.new_js_emitter.model; import '../js/js.dart' as js show Expression; +import '../constants/values.dart' show ConstantValue; class Program { final List outputs; @@ -14,43 +15,78 @@ class Program { Program(this.outputs, this.loadMap); } +/** + * This class represents a JavaScript object that contains static state, like + * classes or functions. + */ class Holder { final String name; final int index; Holder(this.name, this.index); } +/** + * This class represents one output file. + * + * If no library is deferred, there is only one [Output] of type [MainOutput]. + */ abstract class Output { bool get isMainOutput => mainOutput == this; MainOutput get mainOutput; final List libraries; + final List constants; /// Output file name without extension. final String outputFileName; - Output(this.outputFileName, this.libraries); + Output(this.outputFileName, + this.libraries, + this.constants); } +/** + * The main output file. + * + * This code emitted from this [Output] must be loaded first. It can then load + * other [DeferredOutput]s. + */ class MainOutput extends Output { final js.Expression main; final List holders; - MainOutput( - String outputFileName, this.main, List libraries, this.holders) - : super(outputFileName, libraries); + MainOutput(String outputFileName, + this.main, + List libraries, + List constants, + this.holders) + : super(outputFileName, libraries, constants); MainOutput get mainOutput => this; } +/** + * An output (file) for deferred code. + */ class DeferredOutput extends Output { final MainOutput mainOutput; final String name; List get holders => mainOutput.holders; - DeferredOutput(String outputFileName, this.name, - this.mainOutput, List libraries) - : super(outputFileName, libraries); + DeferredOutput(String outputFileName, + this.name, + this.mainOutput, + List libraries, + List constants) + : super(outputFileName, libraries, constants); +} + +class Constant { + final String name; + final Holder holder; + final ConstantValue value; + + Constant(this.name, this.holder, this.value); } class Library { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/emitter.dart index 9f7ea0f08ed9..91b4a399e545 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/emitter.dart @@ -9,9 +9,6 @@ import 'model_emitter.dart'; import '../../common.dart'; import '../../js/js.dart' as js; -import '../../constants/values.dart' show PrimitiveConstantValue; -import '../../tree/tree.dart' show DartString; - import '../../js_backend/js_backend.dart' show Namer, JavaScriptBackend; import '../../js_emitter/js_emitter.dart' as emitterTask show CodeEmitterTask, @@ -20,11 +17,15 @@ import '../../js_emitter/js_emitter.dart' as emitterTask show class Emitter implements emitterTask.Emitter { final Compiler _compiler; final Namer namer; + final ModelEmitter _emitter; - Emitter(this._compiler, this.namer); + Emitter(Compiler compiler, Namer namer) + : this._compiler = compiler, + this.namer = namer, + _emitter = new ModelEmitter(compiler, namer); void emitProgram(Program program) { - new ModelEmitter(_compiler).emitProgram(program); + _emitter.emitProgram(program); } // TODO(floitsch): copied from OldEmitter. Adjust or share. @@ -68,16 +69,7 @@ class Emitter implements emitterTask.Emitter { } js.Expression constantReference(ConstantValue value) { - if (!value.isPrimitive) return js.string("<>"); - PrimitiveConstantValue constant = value; - if (constant.isBool) return new js.LiteralBool(constant.isTrue); - if (constant.isString) { - DartString dartString = constant.primitiveValue; - return js.string(dartString.slowToString()); - } - if (constant.isNum) return js.number(constant.primitiveValue); - if (constant.isNull) return new js.LiteralNull(); - return js.string("<>"); + return _emitter.constantEmitter.reference(value); } void invalidateCaches() {} diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index ed94cf2f2da5..581f77e4ae94 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -6,6 +6,7 @@ library dart2js.new_js_emitter.model_emitter; import '../../dart2jslib.dart' show Compiler; import '../../js/js.dart' as js; +import '../../js_backend/js_backend.dart' show Namer, ConstantEmitter; import '../../../js_lib/shared/embedded_names.dart' show DEFERRED_LIBRARY_URIS, DEFERRED_LIBRARY_HASHES, @@ -16,6 +17,8 @@ import '../model.dart'; class ModelEmitter { final Compiler compiler; + final Namer namer; + final ConstantEmitter constantEmitter; /// For deferred loading we communicate the initializers via this global var. static const String deferredInitializersGlobal = @@ -23,7 +26,10 @@ class ModelEmitter { static const String deferredExtension = ".part.js"; - ModelEmitter(this.compiler); + ModelEmitter(Compiler compiler, Namer namer) + : this.compiler = compiler, + this.namer = namer, + constantEmitter = new ConstantEmitter(compiler, namer); void emitProgram(Program program) { List outputs = program.outputs; @@ -66,6 +72,7 @@ class ModelEmitter { [emitDeferredInitializerGlobal(loadMap), emitHolders(unit.holders), emitEmbeddedGlobals(loadMap), + emitConstants(unit.constants), unit.main, program]); } @@ -167,11 +174,24 @@ class ModelEmitter { js.Expression emitDeferredUnit(DeferredOutput unit, List holders) { // TODO(floitsch): the hash must depend on the output. int hash = this.hashCode; + if (unit.constants.isNotEmpty) { + throw new UnimplementedError("constants in deferred units"); + } js.ArrayInitializer content = new js.ArrayInitializer.from(unit.libraries.map(emitLibrary)); return js.js("$deferredInitializersGlobal[$hash] = #", content); } + js.Block emitConstants(List constants) { + Iterable statements = constants.map((Constant constant) { + js.Expression code = + constantEmitter.initializationExpression(constant.value); + return js.js.statement("#.# = #;", + [constant.holder.name, constant.name, code]); + }); + return new js.Block(statements.toList()); + } + js.Expression emitLibrary(Library library) { Iterable staticDescriptors = library.statics.expand((e) => [ js.string(e.name), js.number(e.holder.index), emitStaticMethod(e) ]); @@ -294,6 +314,9 @@ final String boilerplate = r""" // Initialize globals. #; + // Initialize constants. + #; + var end = Date.now(); print('Setup: ' + (end - start) + ' ms.'); diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index b15bbafd38ea..277fb3929961 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -42,11 +42,11 @@ class ProgramBuilder { /// generate the deferredLoadingMap (to know which hunks to load). final Map _outputs = {}; - Program buildProgram() { - Set neededClasses = _task.neededClasses; - Iterable neededStatics = backend.generatedCode.keys - .where((Element e) => !e.isInstanceMember && !e.isField); + /// Mapping from [ConstantValue] to constructed [Constant]. We need this to + /// update field-initializers to point to the ConstantModel. + final Map _constants = {}; + Program buildProgram() { _task.outputClassLists.forEach(_registry.registerElements); _task.outputStaticLists.forEach(_registry.registerElements); @@ -96,6 +96,7 @@ class ProgramBuilder { "", // The empty string is the name for the main output file. namer.elementAccess(_compiler.mainFunction), _buildLibraries(fragment), + _buildConstants(fragment), _registry.holders.toList(growable: false)); _outputs[fragment.outputUnit] = result; return result; @@ -115,11 +116,28 @@ class ProgramBuilder { Fragment fragment) { DeferredOutput result = new DeferredOutput( _outputFileName(fragment.name), fragment.name, - mainOutput, _buildLibraries(fragment)); + mainOutput, + _buildLibraries(fragment), + _buildConstants(fragment)); _outputs[fragment.outputUnit] = result; return result; } + List _buildConstants(Fragment fragment) { + List constantValues = + _task.outputConstantLists[fragment.outputUnit]; + if (constantValues == null) return const []; + return constantValues.map((ConstantValue constantValue) { + assert(!_constants.containsKey(constantValue)); + String name = namer.constantName(constantValue); + String constantObject = namer.globalObjectForConstant(constantValue); + Holder holder = _registry.registerHolder(constantObject); + Constant constant = new Constant(name, holder, constantValue); + _constants[constantValue] = constant; + return constant; + }).toList(); + } + List _buildLibraries(Fragment fragment) { List libraries = new List(fragment.length); int count = 0; From 8b1c404c16035576b6431fecbb1676469bc59780 Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Thu, 16 Oct 2014 13:09:05 +0000 Subject: [PATCH 04/91] Support local variables in analyzer2dart. BUG= R=floitsch@google.com, paulberry@google.com Review URL: https://codereview.chromium.org//661593004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41146 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/cps_generator.dart | 14 +++- .../lib/src/element_converter.dart | 6 ++ pkg/analyzer2dart/lib/src/modely.dart | 39 +++++++++-- .../lib/src/semantic_visitor.dart | 2 +- pkg/analyzer2dart/test/end2end_test.dart | 22 ++++++ .../implementation/cps_ir/cps_ir_builder.dart | 68 ++++++++++++------- 6 files changed, 120 insertions(+), 31 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart index ca4b66f5c990..c0f2b8cd2836 100644 --- a/pkg/analyzer2dart/lib/src/cps_generator.dart +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart @@ -40,7 +40,7 @@ class CpsGeneratingVisitor extends SemanticVisitor { // Visit the body directly to avoid processing the signature as expressions. node.functionExpression.body.accept(this); return irBuilder.buildFunctionDefinition( - converter.convertElement(function), const [], const []); + converter.convertElement(function), const []); } @override @@ -121,6 +121,18 @@ class CpsGeneratingVisitor extends SemanticVisitor { return handleLocalAccess(node, semantics); } + @override + visitVariableDeclaration(VariableDeclaration node) { + // TODO(johnniwinther): Handle constant local variables. + ir.Node initialValue; + if (node.initializer != null) { + initialValue = node.initializer.accept(this); + } + irBuilder.declareLocalVariable( + converter.convertElement(node.element), + initialValue: initialValue); + } + ir.Primitive handleLocalAccess(AstNode node, AccessSemantics semantics) { analyzer.Element element = semantics.element; dart2js.Element target = converter.convertElement(element); diff --git a/pkg/analyzer2dart/lib/src/element_converter.dart b/pkg/analyzer2dart/lib/src/element_converter.dart index bc46c448197e..6148b5938ba9 100644 --- a/pkg/analyzer2dart/lib/src/element_converter.dart +++ b/pkg/analyzer2dart/lib/src/element_converter.dart @@ -147,4 +147,10 @@ class ElementConverterVisitor } return null; } + + @override + dart2js.Element visitLocalVariableElement( + analyzer.LocalVariableElement input) { + return new LocalVariableElementY(converter, input); + } } diff --git a/pkg/analyzer2dart/lib/src/modely.dart b/pkg/analyzer2dart/lib/src/modely.dart index 46c1b319e172..ea65b249cc37 100644 --- a/pkg/analyzer2dart/lib/src/modely.dart +++ b/pkg/analyzer2dart/lib/src/modely.dart @@ -634,8 +634,20 @@ class TypedefElementY extends TypeDeclarationElementY get functionSignature => unsupported('functionSignature'); } +abstract class VariableElementMixin + implements ElementY, dart2js.VariableElement { + @override + get initializer => unsupported('initializer'); + + @override + get memberContext => unsupported('memberContext'); +} + class TopLevelVariableElementY extends ElementY - with AnalyzableElementY, AstElementY, TopLevelElementMixin + with AnalyzableElementY, + AstElementY, + TopLevelElementMixin, + VariableElementMixin implements dart2js.FieldElement { analyzer.TopLevelVariableElement get element => super.element; @@ -650,11 +662,30 @@ class TopLevelVariableElementY extends ElementY : super(converter, element); @override - get initializer => unsupported('initializer'); + get nestedClosures => unsupported('nestedClosures'); +} + +class LocalVariableElementY extends ElementY + with AnalyzableElementY, AstElementY, VariableElementMixin + implements dart2js.LocalVariableElement { + + analyzer.LocalVariableElement get element => super.element; + + dart2js.ElementKind get kind => dart2js.ElementKind.VARIABLE; @override - get memberContext => unsupported('memberContext'); + bool get isLocal => true; @override - get nestedClosures => unsupported('nestedClosures'); + bool get isConst => element.isConst; + + LocalVariableElementY(ElementConverter converter, + analyzer.LocalVariableElement element) + : super(converter, element); + + @override + get executableContext => unsupported('executableContext'); + + @override + dart2js.DartType get type => unsupported('type'); } \ No newline at end of file diff --git a/pkg/analyzer2dart/lib/src/semantic_visitor.dart b/pkg/analyzer2dart/lib/src/semantic_visitor.dart index 80edf47e3a80..0cc203c61280 100644 --- a/pkg/analyzer2dart/lib/src/semantic_visitor.dart +++ b/pkg/analyzer2dart/lib/src/semantic_visitor.dart @@ -31,7 +31,7 @@ abstract class SemanticVisitor extends RecursiveAstVisitor { } if (!condition) { reportMessage(node, message); - throw new AssertionError(); + return false; } return true; } diff --git a/pkg/analyzer2dart/test/end2end_test.dart b/pkg/analyzer2dart/test/end2end_test.dart index 52055e4a4cbd..11e9691d25bd 100644 --- a/pkg/analyzer2dart/test/end2end_test.dart +++ b/pkg/analyzer2dart/test/end2end_test.dart @@ -174,6 +174,28 @@ main() { main(args) { return deprecated; } +'''); + }); + + test('Local variables', () { + checkResult(''' +main() { + var a; + return a; +} +''', ''' +main() {} +'''); + + checkResult(''' +main() { + var a = 0; + return a; +} +''', ''' +main() { + return 0; +} '''); }); } diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 37cf3d2a5538..fe60714f5c13 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -165,6 +165,8 @@ class Environment { ir.Primitive lookup(Element element) { assert(!element.isConst); + assert(invariant(element, variable2index.containsKey(element), + message: "Unknown variable: $element.")); return index2value[variable2index[element]]; } @@ -237,6 +239,8 @@ class IrBuilder { /// A map from variable indexes to their values. Environment environment = new Environment.empty(); + List _localConstants = []; + // The IR builder maintains a context, which is an expression with a hole in // it. The hole represents the focus where new expressions can be added. // The context is implemented by 'root' which is the root of the expression @@ -280,6 +284,33 @@ class IrBuilder { } } + void declareLocalConstant(LocalVariableElement variableElement, + ConstantExpression value) { + _localConstants.add(new ConstDeclaration(variableElement, value)); + } + + void declareLocalVariable(LocalVariableElement variableElement, + {ir.Primitive initialValue, + bool isClosureVariable: false}) { + assert(isOpen); + if (initialValue == null) { + // TODO(kmillikin): Consider pooling constants. + // The initial value is null. + initialValue = makePrimConst(constantSystem.createNull()); + add(new ir.LetPrim(initialValue)); + } + if (isClosureVariable) { + add(new ir.SetClosureVariable(variableElement, + initialValue, + isDeclaration: true)); + } else { + // In case a primitive was introduced for the initializer expression, + // use this variable element to help derive a good name for it. + initialValue.useElementAsHint(variableElement); + environment.extend(variableElement, initialValue); + } + } + // Plug an expression into the 'hole' in the context being accumulated. The // empty context (just a hole) is represented by root (and current) being // null. Since the hole in the current context is filled by this function, @@ -378,17 +409,18 @@ class IrBuilder { /// [createParameter]. ir.FunctionDefinition buildFunctionDefinition( FunctionElement element, - List constants, List defaults) { if (!element.isAbstract) { ensureReturn(); return new ir.FunctionDefinition( - element, returnContinuation, _parameters, _root, constants, defaults); + element, returnContinuation, _parameters, _root, + _localConstants, defaults); } else { assert(invariant(element, _root == null, message: "Non-empty body for abstract method $element: $_root")); - assert(invariant(element, constants.isEmpty, - message: "Local constants for abstract method $element: $constants")); + assert(invariant(element, _localConstants.isEmpty, + message: "Local constants for abstract method $element: " + "$_localConstants")); return new ir.FunctionDefinition.abstract( element, _parameters, defaults); } @@ -453,8 +485,6 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { /// A stack of collectors for continues. final List continueCollectors; - final List localConstants; - FunctionElement currentFunction; final DetectClosureVariables closureLocals; @@ -462,7 +492,6 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { IrBuilderVisitor(TreeElements elements, this.compiler, this.sourceFile) : breakCollectors = [], continueCollectors = [], - localConstants = [], closureLocals = new DetectClosureVariables(elements), super(elements) { constantSystem = compiler.backend.constantSystem; @@ -479,12 +508,12 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { sourceFile = parent.sourceFile, breakCollectors = parent.breakCollectors, continueCollectors = parent.continueCollectors, - localConstants = parent.localConstants, currentFunction = parent.currentFunction, closureLocals = parent.closureLocals, super(parent.elements) { constantSystem = parent.constantSystem; returnContinuation = parent.returnContinuation; + _localConstants = parent._localConstants; environment = new Environment.from(parent.environment); } @@ -501,12 +530,12 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { sourceFile = parent.sourceFile, breakCollectors = parent.breakCollectors, continueCollectors = parent.continueCollectors, - localConstants = parent.localConstants, currentFunction = parent.currentFunction, closureLocals = parent.closureLocals, super(parent.elements) { constantSystem = parent.constantSystem; returnContinuation = parent.returnContinuation; + _localConstants = parent._localConstants; parent.environment.index2variable.forEach(createParameter); } @@ -543,7 +572,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { }); visit(function.body); - return buildFunctionDefinition(element, localConstants, defaults); + return buildFunctionDefinition(element, defaults); } ir.Primitive visit(ast.Node node) => node.accept(this); @@ -1141,7 +1170,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { assert(definition.arguments.tail.isEmpty); VariableElement element = elements[definition]; ConstantExpression value = getConstantForVariable(element); - localConstants.add(new ConstDeclaration(element, value)); + declareLocalConstant(element, value); } } else { for (ast.Node definition in node.definitions.nodes) { @@ -1155,21 +1184,10 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { initialValue = visit(definition.arguments.head); } else { assert(definition is ast.Identifier); - // The initial value is null. - // TODO(kmillikin): Consider pooling constants. - initialValue = makePrimConst(constantSystem.createNull()); - add(new ir.LetPrim(initialValue)); - } - if (isClosureVariable(element)) { - LocalElement local = element; - add(new ir.SetClosureVariable(local, initialValue, - isDeclaration: true)); - } else { - // In case a primitive was introduced for the initializer expression, - // use this variable element to help derive a good name for it. - initialValue.useElementAsHint(element); - environment.extend(element, initialValue); } + declareLocalVariable(element, + initialValue: initialValue, + isClosureVariable: isClosureVariable(element)); } } return null; From 32ef6273ae691e362c85ce4e1db8d13581998176 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Thu, 16 Oct 2014 13:16:09 +0000 Subject: [PATCH 05/91] Mark some analyzer/analysis_server tests as slow. R=ricow@google.com Review URL: https://codereview.chromium.org//656163004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41147 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/pkg.status | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/pkg.status b/pkg/pkg.status index 13b1e2bfdef0..fb720591bdfd 100644 --- a/pkg/pkg.status +++ b/pkg/pkg.status @@ -107,11 +107,13 @@ third_party/angular_tests/browser_test: Pass, Slow # Large dart2js compile time typed_data/test/typed_buffers_test/01: Fail # Not supporting Int64List, Uint64List. analyzer/test/generated/engine_test: Skip # Slow analyzer/test/generated/static_type_warning_code_test: Pass, Slow +analyzer/test/generated/compile_time_error_code_test: Pass, Slow analyzer/test/enum_test: Fail # Issue 21323 analysis_server/test/search/element_references_test: Pass, Slow analysis_server/test/services/index/store/codec_test: Pass, Slow +analysis_server/test/edit/assists_test: Pass, Slow # Analysis server integration tests don't make sense to run under # dart2js, since the code under test always runs in the Dart vm as a From a5bdd260ac65f79eb378c17e330c8e07666514e7 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Thu, 16 Oct 2014 13:20:06 +0000 Subject: [PATCH 06/91] Mark incremental compilation test as slow on IE. Review URL: https://codereview.chromium.org//664513002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41148 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/try/try.status | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/try/try.status b/tests/try/try.status index e3b7f96895af..cebb95e90bae 100644 --- a/tests/try/try.status +++ b/tests/try/try.status @@ -31,5 +31,5 @@ poi/serialize_test: SkipByDesign # Uses dart:io. [ $compiler == dart2js ] poi/*: Skip # http://dartbug.com/20031 -[ $runtime == ff || $checked ] +[ $runtime == ff || $runtime == ie10 || $checked ] web/incremental_compilation_update_test: Slow, Pass From 33c65f8fc68a2a90974c4df54b3ef26137637ffc Mon Sep 17 00:00:00 2001 From: "ricow@google.com" Date: Thu, 16 Oct 2014 13:20:26 +0000 Subject: [PATCH 07/91] Update bleeding edge VERSION file Review URL: https://codereview.chromium.org//658143002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41149 260f80e4-7a28-3924-810f-c04153c831b5 --- tools/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/VERSION b/tools/VERSION index b0c8e4988659..876e2f82ec7c 100644 --- a/tools/VERSION +++ b/tools/VERSION @@ -25,7 +25,7 @@ # CHANNEL be MAJOR 1 -MINOR 7 +MINOR 8 PATCH 0 PRERELEASE 0 PRERELEASE_PATCH 0 From b9116653bd989614a795eda285070d59af0c54f6 Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Thu, 16 Oct 2014 14:21:37 +0000 Subject: [PATCH 08/91] Modify dartanalyzer scripts to look more like dart2js scripts. The dartanalyzer script (and its Windows companion, dartanalyzer.bat) now support: - Executing from snapshot if present, otherwise from source (needed for buildbot tests). - Passing in the appropriate package root when executind from source. - Passing in VM tuning parameters to speed up analysis. - Passing through extra DART_VM_OPTIONS to the VM. Also, the old editor/tools/analyzer script has been removed and the test infrastructure now uses sdk/bin/dartanalyzer, in the same way that it works for dart2js. R=ahe@google.com, johnniwinther@google.com, ricow@google.com Review URL: https://codereview.chromium.org//628363002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41150 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/bin/dartanalyzer | 40 ++++++++++++-- sdk/bin/dartanalyzer.bat | 29 ++++++++++- sdk/bin/dartanalyzer_sdk | 31 +++++++++++ sdk/bin/dartanalyzer_sdk.bat | 52 +++++++++++++++++++ tools/create_sdk.py | 3 +- .../testing/dart/compiler_configuration.dart | 21 +++++++- 6 files changed, 167 insertions(+), 9 deletions(-) create mode 100755 sdk/bin/dartanalyzer_sdk create mode 100644 sdk/bin/dartanalyzer_sdk.bat diff --git a/sdk/bin/dartanalyzer b/sdk/bin/dartanalyzer index cc49a5c82931..9bd54a6413fe 100755 --- a/sdk/bin/dartanalyzer +++ b/sdk/bin/dartanalyzer @@ -3,7 +3,7 @@ # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. -# Run dartanalyzer.dart on the Dart VM. This script assumes the Dart SDK's +# Run dartanalyzer.dart on the Dart VM. This script assumes the Dart repo's # directory structure. function follow_links() { @@ -24,8 +24,38 @@ SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)" SDK_ARG="--dart-sdk=$SDK_DIR" -SNAPSHOT="$BIN_DIR/snapshots/dartanalyzer.dart.snapshot" - -# We are running the snapshot in the built SDK. DART="$BIN_DIR/dart" -exec "$DART" "$SNAPSHOT" "$SDK_ARG" "$@" + +unset EXTRA_VM_OPTIONS +declare -a EXTRA_VM_OPTIONS + +case $0 in + *_developer) + EXTRA_VM_OPTIONS+=('--checked') + ;; +esac + +# We allow extra vm options to be passed in through an environment variable. +if [[ $DART_VM_OPTIONS ]]; then + read -a OPTIONS <<< "$DART_VM_OPTIONS" + EXTRA_VM_OPTIONS+=("${OPTIONS[@]}") +fi + +DART_ROOT="$(cd "${SDK_DIR}/.." ; pwd -P)" + +ANALYZER="$DART_ROOT/pkg/analyzer/bin/analyzer.dart" + +if [ -z "$DART_CONFIGURATION" ]; +then + DART_CONFIGURATION="ReleaseIA32" +fi + +if [[ `uname` == 'Darwin' ]]; then + BUILD_DIR="$DART_ROOT/xcodebuild/$DART_CONFIGURATION" +else + BUILD_DIR="$DART_ROOT/out/$DART_CONFIGURATION" +fi + +PACKAGE_ROOT="$BUILD_DIR/packages/" + +exec "$DART" "${EXTRA_VM_OPTIONS[@]}" "--package-root=$PACKAGE_ROOT" "$ANALYZER" "$SDK_ARG" "$@" diff --git a/sdk/bin/dartanalyzer.bat b/sdk/bin/dartanalyzer.bat index bca4afbf4474..8305c8a39fa5 100644 --- a/sdk/bin/dartanalyzer.bat +++ b/sdk/bin/dartanalyzer.bat @@ -12,7 +12,6 @@ rem Get rid of surrounding quotes. for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi set DART=%BIN_DIR%\dart -set SNAPSHOT=%BIN_DIR%\snapshots\dartanalyzer.dart.snapshot rem Get absolute full name for SDK_DIR. for %%i in ("%BIN_DIR%\..\") do set SDK_DIR=%%~fi @@ -22,7 +21,33 @@ if %SDK_DIR:~-1%==\ set SDK_DIR=%SDK_DIR:~0,-1% set SDK_ARG=--dart-sdk=%SDK_DIR% -"%DART%" "%SNAPSHOT%" "%SDK_ARG%" %* +set EXTRA_VM_OPTIONS= + +if _%DARTANALYZER_DEVELOPER_MODE%_ == _1_ ( + set EXTRA_VM_OPTIONS=%EXTRA_VM_OPTIONS% --checked +) + +rem We allow extra vm options to be passed in through an environment variable. +if not "_%DART_VM_OPTIONS%_" == "__" ( + set EXTRA_VM_OPTIONS=%EXTRA_VM_OPTIONS% %DART_VM_OPTIONS% +) + +rem Get absolute full name for DART_ROOT. +for %%i in ("%SDK_DIR%\..\") do set DART_ROOT=%%~fi + +rem Remove trailing backslash if there is one +if %DART_ROOT:~-1%==\ set DART_ROOT=%DART_ROOT:~0,-1% + +set ANALYZER=%DART_ROOT%\pkg\analyzer\bin\analyzer.dart + +rem DART_CONFIGURATION defaults to ReleaseIA32 +if "%DART_CONFIGURATION%"=="" set DART_CONFIGURATION=ReleaseIA32 + +set BUILD_DIR=%DART_ROOT%\build\%DART_CONFIGURATION% + +set PACKAGE_ROOT=%BUILD_DIR%\packages + +"%DART%" %EXTRA_VM_OPTIONS% "--package-root=%PACKAGE_ROOT%" "%ANALYZER%" "%SDK_ARG%" %* endlocal diff --git a/sdk/bin/dartanalyzer_sdk b/sdk/bin/dartanalyzer_sdk new file mode 100755 index 000000000000..cc49a5c82931 --- /dev/null +++ b/sdk/bin/dartanalyzer_sdk @@ -0,0 +1,31 @@ +#!/bin/bash +# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +# for details. All rights reserved. Use of this source code is governed by a +# BSD-style license that can be found in the LICENSE file. + +# Run dartanalyzer.dart on the Dart VM. This script assumes the Dart SDK's +# directory structure. + +function follow_links() { + file="$1" + while [ -h "$file" ]; do + # On Mac OS, readlink -f doesn't work. + file="$(readlink "$file")" + done + echo "$file" +} + +# Unlike $0, $BASH_SOURCE points to the absolute path of this file. +PROG_NAME="$(follow_links "$BASH_SOURCE")" + +# Handle the case where dart-sdk/bin has been symlinked to. +BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" +SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)" + +SDK_ARG="--dart-sdk=$SDK_DIR" + +SNAPSHOT="$BIN_DIR/snapshots/dartanalyzer.dart.snapshot" + +# We are running the snapshot in the built SDK. +DART="$BIN_DIR/dart" +exec "$DART" "$SNAPSHOT" "$SDK_ARG" "$@" diff --git a/sdk/bin/dartanalyzer_sdk.bat b/sdk/bin/dartanalyzer_sdk.bat new file mode 100644 index 000000000000..bca4afbf4474 --- /dev/null +++ b/sdk/bin/dartanalyzer_sdk.bat @@ -0,0 +1,52 @@ +@echo off +REM Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +REM for details. All rights reserved. Use of this source code is governed by a +REM BSD-style license that can be found in the LICENSE file. + +setlocal +rem Handle the case where dart-sdk/bin has been symlinked to. +set DIR_NAME_WITH_SLASH=%~dp0 +set DIR_NAME=%DIR_NAME_WITH_SLASH:~0,-1%% +call :follow_links "%DIR_NAME%", RETURNED_BIN_DIR +rem Get rid of surrounding quotes. +for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi + +set DART=%BIN_DIR%\dart +set SNAPSHOT=%BIN_DIR%\snapshots\dartanalyzer.dart.snapshot + +rem Get absolute full name for SDK_DIR. +for %%i in ("%BIN_DIR%\..\") do set SDK_DIR=%%~fi + +rem Remove trailing backslash if there is one +if %SDK_DIR:~-1%==\ set SDK_DIR=%SDK_DIR:~0,-1% + +set SDK_ARG=--dart-sdk=%SDK_DIR% + +"%DART%" "%SNAPSHOT%" "%SDK_ARG%" %* + +endlocal + +exit /b %errorlevel% + +rem Follow the symbolic links (junctions points) using `dir to determine the +rem canonical path. Output with a link looks something like this +rem +rem 01/03/2013 10:11 PM abc def +rem [c:\dart_bleeding\dart-repo.9\dart\build\ReleaseIA32\dart-sdk] +rem +rem So in the output of 'dir /a:l "targetdir"' we are looking for a filename +rem surrounded by right angle bracket and left square bracket. Once we get +rem the filename, which is name of the link, we recursively follow that. +:follow_links +setlocal +for %%i in (%1) do set result=%%~fi +set current= +for /f "usebackq tokens=2 delims=[]" %%i in (`dir /a:l "%~dp1" 2^>nul ^ + ^| find "> %~n1 ["`) do ( + set current=%%i +) +if not "%current%"=="" call :follow_links "%current%", result +endlocal & set %~2=%result% +goto :eof + +:end diff --git a/tools/create_sdk.py b/tools/create_sdk.py index 2a785fdb11f1..2083f051f107 100755 --- a/tools/create_sdk.py +++ b/tools/create_sdk.py @@ -112,7 +112,8 @@ def CopyShellScript(src_file, dest_dir): def CopyDartScripts(home, sdk_root): - for executable in ['dart2js', 'dartanalyzer', 'dartfmt', 'docgen', 'pub_sdk']: + for executable in ['dart2js', 'dartanalyzer_sdk', 'dartfmt', 'docgen', + 'pub_sdk']: CopyShellScript(os.path.join(home, 'sdk', 'bin', executable), os.path.join(sdk_root, 'bin')) diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart index 978222703472..b33f5549cfde 100644 --- a/tools/testing/dart/compiler_configuration.dart +++ b/tools/testing/dart/compiler_configuration.dart @@ -392,5 +392,24 @@ class DartBasedAnalyzerCompilerConfiguration 'dart2analyzer', isDebug: isDebug, isChecked: isChecked, isHostChecked: isHostChecked, useSdk: useSdk); - String computeCompilerPath(String buildDir) => 'editor/tools/analyzer'; + String computeCompilerPath(String buildDir) { + var prefix = 'sdk/bin'; + String suffix = executableScriptSuffix; + if (isHostChecked) { + if (useSdk) { + throw "--host-checked and --use-sdk cannot be used together"; + } + // The script dartanalyzer_developer is not included in the + // shipped SDK, that is the script is not installed in + // "$buildDir/dart-sdk/bin/" + // TODO(paulberry): the script dartanalyzer_developer currently + // points to the wrong place (the Java-based analyzer). Once + // this is fixed, we should run dartanalyzer_developer when in + // isHostChecked mode. + } + if (useSdk) { + prefix = '$buildDir/dart-sdk/bin'; + } + return '$prefix/dartanalyzer$suffix'; + } } From 77613046a53a06d42dd39e4abab9ae6e58f58ef7 Mon Sep 17 00:00:00 2001 From: "brianwilkerson@google.com" Date: Thu, 16 Oct 2014 15:12:45 +0000 Subject: [PATCH 09/91] Generalize source entry R=scheglov@google.com Review URL: https://codereview.chromium.org//661603004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41151 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/lib/src/generated/engine.dart | 2247 +++++------------- pkg/analyzer/test/generated/engine_test.dart | 100 +- 2 files changed, 699 insertions(+), 1648 deletions(-) diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart index e9d12e84d06d..f95cd633cd68 100644 --- a/pkg/analyzer/lib/src/generated/engine.dart +++ b/pkg/analyzer/lib/src/generated/engine.dart @@ -1436,7 +1436,7 @@ class AnalysisContextImpl implements InternalAnalysisContext { List getLibrariesContaining(Source source) { SourceEntry sourceEntry = _getReadableSourceEntryOrNull(source); if (sourceEntry is DartEntry) { - return sourceEntry.getValue(DartEntry.CONTAINING_LIBRARIES); + return sourceEntry.containingLibraries; } return Source.EMPTY_ARRAY; } @@ -3176,7 +3176,7 @@ class AnalysisContextImpl implements InternalAnalysisContext { return _createResolveDartLibraryTask(source, dartEntry); } } - List librariesContaining = dartEntry.getValue(DartEntry.CONTAINING_LIBRARIES); + List librariesContaining = dartEntry.containingLibraries; for (Source librarySource in librariesContaining) { SourceEntry librarySourceEntry = _cache.get(librarySource); if (librarySourceEntry is DartEntry) { @@ -7308,6 +7308,32 @@ class CacheState extends Enum { const CacheState(String name, int ordinal) : super(name, ordinal); } +/** + * A `CachedResult` is a single analysis result that is stored in a + * [SourceEntry]. + */ +class CachedResult { + /** + * The state of the cached value. + */ + CacheState state; + + /** + * The value being cached, or `null` if there is no value (for example, when + * the [state] is [CacheState.INVALID]. + */ + E value; + + /** + * Initialize a newly created result holder to represent the value of data + * described by the given [descriptor]. + */ + CachedResult(DataDescriptor descriptor) { + state = CacheState.INVALID; + value = descriptor.defaultValue; + } +} + /** * The interface `ChangeNotice` defines the behavior of objects that represent a change to the * analysis results associated with a given source. @@ -7726,103 +7752,6 @@ class CycleBuilder_SourceEntryPair { * an individual Dart file. */ class DartEntry extends SourceEntry { - /** - * The state of the cached token stream. - */ - CacheState _tokenStreamState = CacheState.INVALID; - - /** - * The head of the token stream, or `null` if the token stream is not - * currently cached. - */ - Token _tokenStream; - - /** - * The state of the cached scan errors. - */ - CacheState _scanErrorsState = CacheState.INVALID; - - /** - * The errors produced while scanning the compilation unit, or an empty array - * if the errors are not currently cached. - */ - List _scanErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached source kind. - */ - CacheState _sourceKindState = CacheState.INVALID; - - /** - * The kind of this source. - */ - SourceKind _sourceKind = SourceKind.UNKNOWN; - - /** - * The state of the cached parsed compilation unit. - */ - CacheState _parsedUnitState = CacheState.INVALID; - - /** - * A flag indicating whether the parsed AST structure has been accessed since - * it was set. This is used to determine whether the structure needs to be - * copied before it is resolved. - */ - bool _parsedUnitAccessed = false; - - /** - * The parsed compilation unit, or `null` if the parsed compilation unit is - * not currently cached. - */ - CompilationUnit _parsedUnit; - - /** - * The state of the cached parse errors. - */ - CacheState _parseErrorsState = CacheState.INVALID; - - /** - * The errors produced while parsing the compilation unit, or an empty array - * if the errors are not currently cached. - */ - List _parseErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached list of imported libraries. - */ - CacheState _importedLibrariesState = CacheState.INVALID; - - /** - * The list of libraries imported by the library, or an empty array if the - * list is not currently cached. The list will be empty if the Dart file is a - * part rather than a library. - */ - List _importedLibraries = Source.EMPTY_ARRAY; - - /** - * The state of the cached list of exported libraries. - */ - CacheState _exportedLibrariesState = CacheState.INVALID; - - /** - * The list of libraries exported by the library, or an empty array if the - * list is not currently cached. The list will be empty if the Dart file is a - * part rather than a library. - */ - List _exportedLibraries = Source.EMPTY_ARRAY; - - /** - * The state of the cached list of included parts. - */ - CacheState _includedPartsState = CacheState.INVALID; - - /** - * The list of parts included in the library, or an empty array if the list is - * not currently cached. The list will be empty if the Dart file is a part - * rather than a library. - */ - List _includedParts = Source.EMPTY_ARRAY; - /** * The list of libraries that contain this compilation unit. The list will be * empty if there are no known libraries that contain this compilation unit. @@ -7838,56 +7767,33 @@ class DartEntry extends SourceEntry { = new ResolutionState(); /** - * The state of the cached library element. - */ - CacheState _elementState = CacheState.INVALID; - - /** - * The element representing the library, or `null` if the element is not - * currently cached. - */ - LibraryElement _element; - - /** - * The state of the cached public namespace. - */ - CacheState _publicNamespaceState = CacheState.INVALID; - - /** - * The public namespace of the library, or `null` if the namespace is not - * currently cached. - */ - Namespace _publicNamespace; - - /** - * The state of the cached client/ server flag. - */ - CacheState _clientServerState = CacheState.INVALID; - - /** - * The state of the cached launchable flag. + * The data descriptor representing the errors reported during Angular + * resolution. */ - CacheState _launchableState = CacheState.INVALID; + static final DataDescriptor> ANGULAR_ERRORS + = new DataDescriptor>("DartEntry.ANGULAR_ERRORS", AnalysisError.NO_ERRORS); /** - * The error produced while performing Angular resolution, or an empty array - * if there are no errors if the error are not currently cached. + * The data descriptor representing the errors resulting from building the + * element model. */ - List _angularErrors = AnalysisError.NO_ERRORS; + static final DataDescriptor> BUILD_ELEMENT_ERRORS + = new DataDescriptor>("DartEntry.BUILD_ELEMENT_ERRORS", AnalysisError.NO_ERRORS); /** - * The data descriptor representing the errors reported during Angular - * resolution. + * The data descriptor representing the AST structure after the element model + * has been built (and declarations are resolved) but before other resolution + * has been performed. */ - static final DataDescriptor> ANGULAR_ERRORS - = new DataDescriptor>("DartEntry.ANGULAR_ERRORS"); + static final DataDescriptor BUILT_UNIT + = new DataDescriptor("DartEntry.BUILT_UNIT"); /** * The data descriptor representing the list of libraries that contain this * compilation unit. */ static final DataDescriptor> CONTAINING_LIBRARIES - = new DataDescriptor>("DartEntry.CONTAINING_LIBRARIES"); + = new DataDescriptor>("DartEntry.CONTAINING_LIBRARIES", Source.EMPTY_ARRAY); /** * The data descriptor representing the library element for the library. This @@ -7903,14 +7809,14 @@ class DartEntry extends SourceEntry { * a library. */ static final DataDescriptor> EXPORTED_LIBRARIES - = new DataDescriptor>("DartEntry.EXPORTED_LIBRARIES"); + = new DataDescriptor>("DartEntry.EXPORTED_LIBRARIES", Source.EMPTY_ARRAY); /** * The data descriptor representing the hints resulting from auditing the * source. */ static final DataDescriptor> HINTS - = new DataDescriptor>("DartEntry.HINTS"); + = new DataDescriptor>("DartEntry.HINTS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the list of imported libraries. This data @@ -7918,7 +7824,7 @@ class DartEntry extends SourceEntry { * a library. */ static final DataDescriptor> IMPORTED_LIBRARIES - = new DataDescriptor>("DartEntry.IMPORTED_LIBRARIES"); + = new DataDescriptor>("DartEntry.IMPORTED_LIBRARIES", Source.EMPTY_ARRAY); /** * The data descriptor representing the list of included parts. This data is @@ -7926,7 +7832,7 @@ class DartEntry extends SourceEntry { * library. */ static final DataDescriptor> INCLUDED_PARTS - = new DataDescriptor>("DartEntry.INCLUDED_PARTS"); + = new DataDescriptor>("DartEntry.INCLUDED_PARTS", Source.EMPTY_ARRAY); /** * The data descriptor representing the client flag. This data is only @@ -7934,7 +7840,7 @@ class DartEntry extends SourceEntry { * library. */ static final DataDescriptor IS_CLIENT - = new DataDescriptor("DartEntry.IS_CLIENT"); + = new DataDescriptor("DartEntry.IS_CLIENT", false); /** * The data descriptor representing the launchable flag. This data is only @@ -7942,14 +7848,14 @@ class DartEntry extends SourceEntry { * library. */ static final DataDescriptor IS_LAUNCHABLE - = new DataDescriptor("DartEntry.IS_LAUNCHABLE"); + = new DataDescriptor("DartEntry.IS_LAUNCHABLE", false); /** * The data descriptor representing the errors resulting from parsing the * source. */ static final DataDescriptor> PARSE_ERRORS - = new DataDescriptor>("DartEntry.PARSE_ERRORS"); + = new DataDescriptor>("DartEntry.PARSE_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the parsed AST structure. @@ -7970,7 +7876,7 @@ class DartEntry extends SourceEntry { * source. */ static final DataDescriptor> RESOLUTION_ERRORS - = new DataDescriptor>("DartEntry.RESOLUTION_ERRORS"); + = new DataDescriptor>("DartEntry.RESOLUTION_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the resolved AST structure. @@ -7982,13 +7888,13 @@ class DartEntry extends SourceEntry { * The data descriptor representing the token stream. */ static final DataDescriptor> SCAN_ERRORS - = new DataDescriptor>("DartEntry.SCAN_ERRORS"); + = new DataDescriptor>("DartEntry.SCAN_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the source kind. */ static final DataDescriptor SOURCE_KIND - = new DataDescriptor("DartEntry.SOURCE_KIND"); + = new DataDescriptor("DartEntry.SOURCE_KIND", SourceKind.UNKNOWN); /** * The data descriptor representing the token stream. @@ -8001,20 +7907,7 @@ class DartEntry extends SourceEntry { * source. */ static final DataDescriptor> VERIFICATION_ERRORS - = new DataDescriptor>("DartEntry.VERIFICATION_ERRORS"); - - /** - * The index of the flag indicating whether this library is launchable - * (whether the file has a main method). - */ - static int _LAUNCHABLE_INDEX = 1; - - /** - * The index of the flag indicating whether the library is client code - * (whether the library depends on the html library). If the library is not - * "client code", then it is referred to as "server code". - */ - static int _CLIENT_CODE_INDEX = 2; + = new DataDescriptor>("DartEntry.VERIFICATION_ERRORS", AnalysisError.NO_ERRORS); /** * Add the given [librarySource] to the list of libraries that contain this @@ -8028,15 +7921,8 @@ class DartEntry extends SourceEntry { * Flush any AST structures being maintained by this entry. */ void flushAstStructures() { - if (_tokenStreamState == CacheState.VALID) { - _tokenStreamState = CacheState.FLUSHED; - _tokenStream = null; - } - if (_parsedUnitState == CacheState.VALID) { - _parsedUnitState = CacheState.FLUSHED; - _parsedUnitAccessed = false; - _parsedUnit = null; - } + _flush(TOKEN_STREAM); + _flush(PARSED_UNIT); _resolutionState.flushAstStructures(); } @@ -8046,17 +7932,17 @@ class DartEntry extends SourceEntry { */ List get allErrors { List errors = new List(); - ListUtilities.addAll(errors, _scanErrors); - ListUtilities.addAll(errors, _parseErrors); + errors.addAll(getValue(SCAN_ERRORS)); + errors.addAll(getValue(PARSE_ERRORS)); ResolutionState state = _resolutionState; while (state != null) { - ListUtilities.addAll(errors, state._buildElementErrors); - ListUtilities.addAll(errors, state._resolutionErrors); - ListUtilities.addAll(errors, state._verificationErrors); - ListUtilities.addAll(errors, state._hints); + errors.addAll(state.getValue(BUILD_ELEMENT_ERRORS)); + errors.addAll(state.getValue(RESOLUTION_ERRORS)); + errors.addAll(state.getValue(VERIFICATION_ERRORS)); + errors.addAll(state.getValue(HINTS)); state = state._nextState; } - ListUtilities.addAll(errors, _angularErrors); + errors.addAll(getValue(ANGULAR_ERRORS)); if (errors.length == 0) { return AnalysisError.NO_ERRORS; } @@ -8069,14 +7955,13 @@ class DartEntry extends SourceEntry { * or `null` if there is no parsed compilation unit available. */ CompilationUnit get anyParsedCompilationUnit { - if (_parsedUnitState == CacheState.VALID) { - _parsedUnitAccessed = true; - return _parsedUnit; + if (getState(PARSED_UNIT) == CacheState.VALID) { + return getValue(PARSED_UNIT); } ResolutionState state = _resolutionState; while (state != null) { - if (state._builtUnitState == CacheState.VALID) { - return state._builtUnit; + if (state.getState(BUILT_UNIT) == CacheState.VALID) { + return state.getValue(BUILT_UNIT); } state = state._nextState; } @@ -8091,12 +7976,11 @@ class DartEntry extends SourceEntry { CompilationUnit get anyResolvedCompilationUnit { ResolutionState state = _resolutionState; while (state != null) { - if (state._resolvedUnitState == CacheState.VALID) { - return state._resolvedUnit; + if (state.getState(RESOLVED_UNIT) == CacheState.VALID) { + return state.getValue(RESOLVED_UNIT); } state = state._nextState; } - ; return null; } @@ -8106,7 +7990,7 @@ class DartEntry extends SourceEntry { List get containingLibraries => _containingLibraries; @override - SourceKind get kind => _sourceKind; + SourceKind get kind => getValue(SOURCE_KIND); /** * The library sources containing the receiver's source. @@ -8129,129 +8013,42 @@ class DartEntry extends SourceEntry { * not been parsed. */ CompilationUnit get resolvableCompilationUnit { - if (_parsedUnitState == CacheState.VALID) { - if (_parsedUnitAccessed) { - return _parsedUnit.accept(new AstCloner()) as CompilationUnit; - } - CompilationUnit unit = _parsedUnit; - _parsedUnitState = CacheState.FLUSHED; - _parsedUnitAccessed = false; - _parsedUnit = null; + if (getState(PARSED_UNIT) == CacheState.VALID) { + CompilationUnit unit = getValue(PARSED_UNIT); + setState(PARSED_UNIT, CacheState.FLUSHED); return unit; } ResolutionState state = _resolutionState; while (state != null) { - if (state._builtUnitState == CacheState.VALID) { + if (state.getState(BUILT_UNIT) == CacheState.VALID) { // TODO(brianwilkerson) We're cloning the structure to remove any // previous resolution data, but I'm not sure that's necessary. - return state._builtUnit.accept(new AstCloner()) as CompilationUnit; + return state.getValue(BUILT_UNIT).accept(new AstCloner()) as CompilationUnit; } - if (state._resolvedUnitState == CacheState.VALID) { - return state._resolvedUnit.accept(new AstCloner()) as CompilationUnit; + if (state.getState(RESOLVED_UNIT) == CacheState.VALID) { + return state.getValue(RESOLVED_UNIT).accept(new AstCloner()) as CompilationUnit; } state = state._nextState; } - ; return null; } - @override - CacheState getState(DataDescriptor descriptor) { - if (identical(descriptor, DartEntry.ELEMENT)) { - return _elementState; - } else if (identical(descriptor, DartEntry.EXPORTED_LIBRARIES)) { - return _exportedLibrariesState; - } else if (identical(descriptor, DartEntry.IMPORTED_LIBRARIES)) { - return _importedLibrariesState; - } else if (identical(descriptor, DartEntry.INCLUDED_PARTS)) { - return _includedPartsState; - } else if (identical(descriptor, DartEntry.IS_CLIENT)) { - return _clientServerState; - } else if (identical(descriptor, DartEntry.IS_LAUNCHABLE)) { - return _launchableState; - } else if (identical(descriptor, DartEntry.PARSE_ERRORS)) { - return _parseErrorsState; - } else if (identical(descriptor, DartEntry.PARSED_UNIT)) { - return _parsedUnitState; - } else if (identical(descriptor, DartEntry.PUBLIC_NAMESPACE)) { - return _publicNamespaceState; - } else if (identical(descriptor, DartEntry.SCAN_ERRORS)) { - return _scanErrorsState; - } else if (identical(descriptor, DartEntry.SOURCE_KIND)) { - return _sourceKindState; - } else if (identical(descriptor, DartEntry.TOKEN_STREAM)) { - return _tokenStreamState; - } else { - return super.getState(descriptor); - } - } - /** * Return the state of the data represented by the given [descriptor] in the * context of the given [librarySource]. */ CacheState getStateInLibrary(DataDescriptor descriptor, Source librarySource) { + if (!_isValidLibraryDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); + } ResolutionState state = _resolutionState; while (state != null) { if (librarySource == state._librarySource) { - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS)) { - return state._resolutionErrorsState; - } else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) { - return state._resolvedUnitState; - } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) { - return state._verificationErrorsState; - } else if (identical(descriptor, DartEntry.HINTS)) { - return state._hintsState; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); - } + return state.getState(descriptor); } state = state._nextState; } - ; - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) - || identical(descriptor, DartEntry.RESOLVED_UNIT) - || identical(descriptor, DartEntry.VERIFICATION_ERRORS) - || identical(descriptor, DartEntry.HINTS)) { - return CacheState.INVALID; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); - } - } - - @override - Object getValue(DataDescriptor descriptor) { - if (identical(descriptor, DartEntry.ANGULAR_ERRORS)) { - return _angularErrors; - } else if (identical(descriptor, DartEntry.CONTAINING_LIBRARIES)) { - return new List.from(_containingLibraries); - } else if (identical(descriptor, DartEntry.ELEMENT)) { - return _element; - } else if (identical(descriptor, DartEntry.EXPORTED_LIBRARIES)) { - return _exportedLibraries; - } else if (identical(descriptor, DartEntry.IMPORTED_LIBRARIES)) { - return _importedLibraries; - } else if (identical(descriptor, DartEntry.INCLUDED_PARTS)) { - return _includedParts; - } else if (identical(descriptor, DartEntry.IS_CLIENT)) { - return getFlag(_CLIENT_CODE_INDEX); - } else if (identical(descriptor, DartEntry.IS_LAUNCHABLE)) { - return getFlag(_LAUNCHABLE_INDEX); - } else if (identical(descriptor, DartEntry.PARSE_ERRORS)) { - return _parseErrors; - } else if (identical(descriptor, DartEntry.PARSED_UNIT)) { - _parsedUnitAccessed = true; - return _parsedUnit; - } else if (identical(descriptor, DartEntry.PUBLIC_NAMESPACE)) { - return _publicNamespace; - } else if (identical(descriptor, DartEntry.SCAN_ERRORS)) { - return _scanErrors; - } else if (identical(descriptor, DartEntry.SOURCE_KIND)) { - return _sourceKind; - } else if (identical(descriptor, DartEntry.TOKEN_STREAM)) { - return _tokenStream; - } - return super.getValue(descriptor); + return CacheState.INVALID; } /** @@ -8260,33 +8057,17 @@ class DartEntry extends SourceEntry { * the descriptor is not in the cache. */ Object getValueInLibrary(DataDescriptor descriptor, Source librarySource) { + if (!_isValidLibraryDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); + } ResolutionState state = _resolutionState; while (state != null) { if (librarySource == state._librarySource) { - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS)) { - return state._resolutionErrors; - } else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) { - return state._resolvedUnit; - } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) { - return state._verificationErrors; - } else if (identical(descriptor, DartEntry.HINTS)) { - return state._hints; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); - } + return state.getValue(descriptor); } state = state._nextState; } - ; - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) - || identical(descriptor, DartEntry.VERIFICATION_ERRORS) - || identical(descriptor, DartEntry.HINTS)) { - return AnalysisError.NO_ERRORS; - } else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) { - return null; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); - } + return descriptor.defaultValue; } /** @@ -8296,50 +8077,18 @@ class DartEntry extends SourceEntry { * marked as invalid. */ bool hasInvalidData(DataDescriptor descriptor) { - if (identical(descriptor, DartEntry.ELEMENT)) { - return _elementState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.EXPORTED_LIBRARIES)) { - return _exportedLibrariesState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.IMPORTED_LIBRARIES)) { - return _importedLibrariesState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.INCLUDED_PARTS)) { - return _includedPartsState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.IS_CLIENT)) { - return _clientServerState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.IS_LAUNCHABLE)) { - return _launchableState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.PARSE_ERRORS)) { - return _parseErrorsState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.PARSED_UNIT)) { - return _parsedUnitState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.PUBLIC_NAMESPACE)) { - return _publicNamespaceState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.SCAN_ERRORS)) { - return _scanErrorsState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.SOURCE_KIND)) { - return _sourceKindState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.TOKEN_STREAM)) { - return _tokenStreamState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.RESOLUTION_ERRORS) - || identical(descriptor, DartEntry.RESOLVED_UNIT) - || identical(descriptor, DartEntry.VERIFICATION_ERRORS) - || identical(descriptor, DartEntry.HINTS)) { + if (_isValidDescriptor(descriptor)) { + return getState(descriptor) == CacheState.INVALID; + } else if (_isValidLibraryDescriptor(descriptor)) { ResolutionState state = _resolutionState; while (state != null) { - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS)) { - return state._resolutionErrorsState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) { - return state._resolvedUnitState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) { - return state._verificationErrorsState == CacheState.INVALID; - } else if (identical(descriptor, DartEntry.HINTS)) { - return state._hintsState == CacheState.INVALID; + if (state.getState(descriptor) == CacheState.INVALID) { + return true; } + state = state._nextState; } - return false; - } else { - return super.getState(descriptor) == CacheState.INVALID; } + return false; } /** @@ -8348,13 +8097,13 @@ class DartEntry extends SourceEntry { * [resolvableCompilationUnit] will return a non-`null` result. */ bool get hasResolvableCompilationUnit { - if (_parsedUnitState == CacheState.VALID) { + if (getState(PARSED_UNIT) == CacheState.VALID) { return true; } ResolutionState state = _resolutionState; while (state != null) { - if (state._builtUnitState == CacheState.VALID - || state._resolvedUnitState == CacheState.VALID) { + if (state.getState(BUILT_UNIT) == CacheState.VALID + || state.getState(RESOLVED_UNIT) == CacheState.VALID) { return true; } state = state._nextState; @@ -8366,17 +8115,11 @@ class DartEntry extends SourceEntry { @override void invalidateAllInformation() { super.invalidateAllInformation(); - _scanErrors = AnalysisError.NO_ERRORS; - _scanErrorsState = CacheState.INVALID; - _tokenStream = null; - _tokenStreamState = CacheState.INVALID; - _sourceKind = SourceKind.UNKNOWN; - _sourceKindState = CacheState.INVALID; - _parseErrors = AnalysisError.NO_ERRORS; - _parseErrorsState = CacheState.INVALID; - _parsedUnit = null; - _parsedUnitAccessed = false; - _parsedUnitState = CacheState.INVALID; + setState(SCAN_ERRORS, CacheState.INVALID); + setState(TOKEN_STREAM, CacheState.INVALID); + setState(SOURCE_KIND, CacheState.INVALID); + setState(PARSE_ERRORS, CacheState.INVALID); + setState(PARSED_UNIT, CacheState.INVALID); _discardCachedResolutionInformation(true); } @@ -8386,18 +8129,14 @@ class DartEntry extends SourceEntry { * results of converting URIs to source files should also be invalidated. */ void invalidateAllResolutionInformation(bool invalidateUris) { - if (_parsedUnitState == CacheState.FLUSHED) { + if (getState(PARSED_UNIT) == CacheState.FLUSHED) { ResolutionState state = _resolutionState; while (state != null) { - if (state._builtUnitState == CacheState.VALID) { - _parsedUnit = state._builtUnit; - _parsedUnitAccessed = true; - _parsedUnitState = CacheState.VALID; + if (state.getState(BUILT_UNIT) == CacheState.VALID) { + setValue(PARSED_UNIT, state.getValue(BUILT_UNIT)); break; - } else if (state._resolvedUnitState == CacheState.VALID) { - _parsedUnit = state._resolvedUnit; - _parsedUnitAccessed = true; - _parsedUnitState = CacheState.VALID; + } else if (state.getState(RESOLVED_UNIT) == CacheState.VALID) { + setValue(PARSED_UNIT, state.getValue(RESOLVED_UNIT)); break; } state = state._nextState; @@ -8412,7 +8151,7 @@ class DartEntry extends SourceEntry { bool get isRefactoringSafe { ResolutionState state = _resolutionState; while (state != null) { - CacheState resolvedState = state._resolvedUnitState; + CacheState resolvedState = state.getState(RESOLVED_UNIT); if (resolvedState != CacheState.VALID && resolvedState != CacheState.FLUSHED) { return false; @@ -8433,31 +8172,13 @@ class DartEntry extends SourceEntry { */ void recordBuildElementErrorInLibrary(Source librarySource, CaughtException exception) { this.exception = exception; - _element = null; - _elementState = CacheState.ERROR; - clearFlags([_LAUNCHABLE_INDEX, _CLIENT_CODE_INDEX]); - _clientServerState = CacheState.ERROR; - _launchableState = CacheState.ERROR; + setState(ELEMENT, CacheState.ERROR); + setState(IS_LAUNCHABLE, CacheState.ERROR); + setState(IS_CLIENT, CacheState.ERROR); ResolutionState state = _getOrCreateResolutionState(librarySource); state.recordBuildElementError(); } - /** - * Record that an in-process model build has stopped without recording results - * because the results were invalidated before they could be recorded. - */ - void recordBuildElementNotInProcess() { - if (_elementState == CacheState.IN_PROCESS) { - _elementState = CacheState.INVALID; - } - if (_clientServerState == CacheState.IN_PROCESS) { - _clientServerState = CacheState.INVALID; - } - if (_launchableState == CacheState.IN_PROCESS) { - _launchableState = CacheState.INVALID; - } - } - @override void recordContentError(CaughtException exception) { super.recordContentError(exception); @@ -8484,75 +8205,15 @@ class DartEntry extends SourceEntry { * including any resolution-based information, as being in error. */ void recordParseError(CaughtException exception) { - _sourceKind = SourceKind.UNKNOWN; - _sourceKindState = CacheState.ERROR; - _parseErrors = AnalysisError.NO_ERRORS; - _parseErrorsState = CacheState.ERROR; - _parsedUnit = null; - _parsedUnitAccessed = false; - _parsedUnitState = CacheState.ERROR; - _exportedLibraries = Source.EMPTY_ARRAY; - _exportedLibrariesState = CacheState.ERROR; - _importedLibraries = Source.EMPTY_ARRAY; - _importedLibrariesState = CacheState.ERROR; - _includedParts = Source.EMPTY_ARRAY; - _includedPartsState = CacheState.ERROR; + setState(SOURCE_KIND, CacheState.ERROR); + setState(PARSE_ERRORS, CacheState.ERROR); + setState(PARSED_UNIT, CacheState.ERROR); + setState(EXPORTED_LIBRARIES, CacheState.ERROR); + setState(IMPORTED_LIBRARIES, CacheState.ERROR); + setState(INCLUDED_PARTS, CacheState.ERROR); recordResolutionError(exception); } - /** - * Record that the parse-related information for the associated source is - * about to be computed by the current thread. - */ - void recordParseInProcess() { - if (_sourceKindState != CacheState.VALID) { - _sourceKindState = CacheState.IN_PROCESS; - } - if (_parseErrorsState != CacheState.VALID) { - _parseErrorsState = CacheState.IN_PROCESS; - } - if (_parsedUnitState != CacheState.VALID) { - _parsedUnitState = CacheState.IN_PROCESS; - } - if (_exportedLibrariesState != CacheState.VALID) { - _exportedLibrariesState = CacheState.IN_PROCESS; - } - if (_importedLibrariesState != CacheState.VALID) { - _importedLibrariesState = CacheState.IN_PROCESS; - } - if (_includedPartsState != CacheState.VALID) { - _includedPartsState = CacheState.IN_PROCESS; - } - } - - /** - * Record that an in-process parse has stopped without recording results - * because the results were invalidated before they could be recorded. - */ - void recordParseNotInProcess() { - if (getState(SourceEntry.LINE_INFO) == CacheState.IN_PROCESS) { - setState(SourceEntry.LINE_INFO, CacheState.INVALID); - } - if (_sourceKindState == CacheState.IN_PROCESS) { - _sourceKindState = CacheState.INVALID; - } - if (_parseErrorsState == CacheState.IN_PROCESS) { - _parseErrorsState = CacheState.INVALID; - } - if (_parsedUnitState == CacheState.IN_PROCESS) { - _parsedUnitState = CacheState.INVALID; - } - if (_exportedLibrariesState == CacheState.IN_PROCESS) { - _exportedLibrariesState = CacheState.INVALID; - } - if (_importedLibrariesState == CacheState.IN_PROCESS) { - _importedLibrariesState = CacheState.INVALID; - } - if (_includedPartsState == CacheState.IN_PROCESS) { - _includedPartsState = CacheState.INVALID; - } - } - /** * Record that an [exception] occurred while attempting to resolve the source * represented by this entry. This will set the state of all resolution-based @@ -8563,13 +8224,10 @@ class DartEntry extends SourceEntry { */ void recordResolutionError(CaughtException exception) { this.exception = exception; - _element = null; - _elementState = CacheState.ERROR; - clearFlags([_LAUNCHABLE_INDEX, _CLIENT_CODE_INDEX]); - _clientServerState = CacheState.ERROR; - _launchableState = CacheState.ERROR; - _publicNamespace = null; - _publicNamespaceState = CacheState.ERROR; + setState(ELEMENT, CacheState.ERROR); + setState(IS_CLIENT, CacheState.ERROR); + setState(IS_LAUNCHABLE, CacheState.ERROR); + setState(PUBLIC_NAMESPACE, CacheState.ERROR); _resolutionState.recordResolutionErrorsInAllLibraries(); } @@ -8583,39 +8241,14 @@ class DartEntry extends SourceEntry { */ void recordResolutionErrorInLibrary(Source librarySource, CaughtException exception) { this.exception = exception; - _element = null; - _elementState = CacheState.ERROR; - clearFlags([_LAUNCHABLE_INDEX, _CLIENT_CODE_INDEX]); - _clientServerState = CacheState.ERROR; - _launchableState = CacheState.ERROR; - _publicNamespace = null; - _publicNamespaceState = CacheState.ERROR; + setState(ELEMENT, CacheState.ERROR); + setState(IS_CLIENT, CacheState.ERROR); + setState(IS_LAUNCHABLE, CacheState.ERROR); + setState(PUBLIC_NAMESPACE, CacheState.ERROR); ResolutionState state = _getOrCreateResolutionState(librarySource); state.recordResolutionError(); } - /** - * Record that an in-process resolution has stopped without recording results because the results - * were invalidated before they could be recorded. - */ - void recordResolutionNotInProcess() { - if (_elementState == CacheState.IN_PROCESS) { - _elementState = CacheState.INVALID; - } - if (_clientServerState == CacheState.IN_PROCESS) { - _clientServerState = CacheState.INVALID; - } - if (_launchableState == CacheState.IN_PROCESS) { - _launchableState = CacheState.INVALID; - } - // TODO(brianwilkerson) Remove the code above this line after resolution and element building - // are separated. - if (_publicNamespaceState == CacheState.IN_PROCESS) { - _publicNamespaceState = CacheState.INVALID; - } - _resolutionState.recordResolutionNotInProcess(); - } - /** * Record that an [exception] occurred while attempting to scan or parse the * entry represented by this entry. This will set the state of all information, @@ -8624,45 +8257,11 @@ class DartEntry extends SourceEntry { @override void recordScanError(CaughtException exception) { super.recordScanError(exception); - _scanErrors = AnalysisError.NO_ERRORS; - _scanErrorsState = CacheState.ERROR; - _tokenStream = null; - _tokenStreamState = CacheState.ERROR; + setState(SCAN_ERRORS, CacheState.ERROR); + setState(TOKEN_STREAM, CacheState.ERROR); recordParseError(exception); } - /** - * Record that the scan-related information for the associated source is about - * to be computed by the current thread. - */ - void recordScanInProcess() { - if (getState(SourceEntry.LINE_INFO) != CacheState.VALID) { - setState(SourceEntry.LINE_INFO, CacheState.IN_PROCESS); - } - if (_scanErrorsState != CacheState.VALID) { - _scanErrorsState = CacheState.IN_PROCESS; - } - if (_tokenStreamState != CacheState.VALID) { - _tokenStreamState = CacheState.IN_PROCESS; - } - } - - /** - * Record that an in-process scan has stopped without recording results - * because the results were invalidated before they could be recorded. - */ - void recordScanNotInProcess() { - if (getState(SourceEntry.LINE_INFO) == CacheState.IN_PROCESS) { - setState(SourceEntry.LINE_INFO, CacheState.INVALID); - } - if (_scanErrorsState == CacheState.IN_PROCESS) { - _scanErrorsState = CacheState.INVALID; - } - if (_tokenStreamState == CacheState.IN_PROCESS) { - _tokenStreamState = CacheState.INVALID; - } - } - /** * Record that an [exception] occurred while attempting to generate errors and * warnings for the source represented by this entry. This will set the state @@ -8727,53 +8326,6 @@ class DartEntry extends SourceEntry { _containingLibraries.add(librarySource); } - @override - void setState(DataDescriptor descriptor, CacheState state) { - if (identical(descriptor, DartEntry.ELEMENT)) { - _element = updatedValue(state, _element, null); - _elementState = state; - } else if (identical(descriptor, DartEntry.EXPORTED_LIBRARIES)) { - _exportedLibraries = updatedValue(state, _exportedLibraries, Source.EMPTY_ARRAY); - _exportedLibrariesState = state; - } else if (identical(descriptor, DartEntry.IMPORTED_LIBRARIES)) { - _importedLibraries = updatedValue(state, _importedLibraries, Source.EMPTY_ARRAY); - _importedLibrariesState = state; - } else if (identical(descriptor, DartEntry.INCLUDED_PARTS)) { - _includedParts = updatedValue(state, _includedParts, Source.EMPTY_ARRAY); - _includedPartsState = state; - } else if (identical(descriptor, DartEntry.IS_CLIENT)) { - _updateValueOfFlag(_CLIENT_CODE_INDEX, state); - _clientServerState = state; - } else if (identical(descriptor, DartEntry.IS_LAUNCHABLE)) { - _updateValueOfFlag(_LAUNCHABLE_INDEX, state); - _launchableState = state; - } else if (identical(descriptor, DartEntry.PARSE_ERRORS)) { - _parseErrors = updatedValue(state, _parseErrors, AnalysisError.NO_ERRORS); - _parseErrorsState = state; - } else if (identical(descriptor, DartEntry.PARSED_UNIT)) { - CompilationUnit newUnit = updatedValue(state, _parsedUnit, null); - if (!identical(newUnit, _parsedUnit)) { - _parsedUnitAccessed = false; - } - _parsedUnit = newUnit; - _parsedUnitState = state; - } else if (identical(descriptor, DartEntry.PUBLIC_NAMESPACE)) { - _publicNamespace = updatedValue(state, _publicNamespace, null); - _publicNamespaceState = state; - } else if (identical(descriptor, DartEntry.SCAN_ERRORS)) { - _scanErrors = updatedValue(state, _scanErrors, AnalysisError.NO_ERRORS); - _scanErrorsState = state; - } else if (identical(descriptor, DartEntry.SOURCE_KIND)) { - _sourceKind = updatedValue(state, _sourceKind, SourceKind.UNKNOWN); - _sourceKindState = state; - } else if (identical(descriptor, DartEntry.TOKEN_STREAM)) { - _tokenStream = updatedValue(state, _tokenStream, null); - _tokenStreamState = state; - } else { - super.setState(descriptor, state); - } - } - /** * Set the state of the data represented by the given descriptor in the context of the given * library to the given state. @@ -8784,68 +8336,11 @@ class DartEntry extends SourceEntry { * @param cacheState the new state of the data represented by the given descriptor */ void setStateInLibrary(DataDescriptor descriptor, Source librarySource, CacheState cacheState) { - ResolutionState state = _getOrCreateResolutionState(librarySource); - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS)) { - state._resolutionErrors = updatedValue(cacheState, state._resolutionErrors, AnalysisError.NO_ERRORS); - state._resolutionErrorsState = cacheState; - } else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) { - state._resolvedUnit = updatedValue(cacheState, state._resolvedUnit, null); - state._resolvedUnitState = cacheState; - } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) { - state._verificationErrors = updatedValue(cacheState, state._verificationErrors, AnalysisError.NO_ERRORS); - state._verificationErrorsState = cacheState; - } else if (identical(descriptor, DartEntry.HINTS)) { - state._hints = updatedValue(cacheState, state._hints, AnalysisError.NO_ERRORS); - state._hintsState = cacheState; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); - } - } - - @override - void setValue(DataDescriptor descriptor, Object value) { - if (identical(descriptor, DartEntry.ANGULAR_ERRORS)) { - _angularErrors = value == null ? AnalysisError.NO_ERRORS : (value as List); - } else if (identical(descriptor, DartEntry.ELEMENT)) { - _element = value as LibraryElement; - _elementState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.EXPORTED_LIBRARIES)) { - _exportedLibraries = value == null ? Source.EMPTY_ARRAY : (value as List); - _exportedLibrariesState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.IMPORTED_LIBRARIES)) { - _importedLibraries = value == null ? Source.EMPTY_ARRAY : (value as List); - _importedLibrariesState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.INCLUDED_PARTS)) { - _includedParts = value == null ? Source.EMPTY_ARRAY : (value as List); - _includedPartsState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.IS_CLIENT)) { - setFlag(_CLIENT_CODE_INDEX, value as bool); - _clientServerState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.IS_LAUNCHABLE)) { - setFlag(_LAUNCHABLE_INDEX, value as bool); - _launchableState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.PARSE_ERRORS)) { - _parseErrors = value == null ? AnalysisError.NO_ERRORS : (value as List); - _parseErrorsState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.PARSED_UNIT)) { - _parsedUnit = value as CompilationUnit; - _parsedUnitAccessed = false; - _parsedUnitState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.PUBLIC_NAMESPACE)) { - _publicNamespace = value as Namespace; - _publicNamespaceState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.SCAN_ERRORS)) { - _scanErrors = value == null ? AnalysisError.NO_ERRORS : (value as List); - _scanErrorsState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.SOURCE_KIND)) { - _sourceKind = value as SourceKind; - _sourceKindState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.TOKEN_STREAM)) { - _tokenStream = value as Token; - _tokenStreamState = CacheState.VALID; - } else { - super.setValue(descriptor, value); + if (!_isValidLibraryDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); } + ResolutionState state = _getOrCreateResolutionState(librarySource); + state.setState(descriptor, cacheState); } /** @@ -8858,59 +8353,48 @@ class DartEntry extends SourceEntry { * @param value the new value of the data represented by the given descriptor and library */ void setValueInLibrary(DataDescriptor descriptor, Source librarySource, Object value) { - ResolutionState state = _getOrCreateResolutionState(librarySource); - if (identical(descriptor, DartEntry.RESOLUTION_ERRORS)) { - state._resolutionErrors = value == null ? AnalysisError.NO_ERRORS : (value as List); - state._resolutionErrorsState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.RESOLVED_UNIT)) { - state._resolvedUnit = value as CompilationUnit; - state._resolvedUnitState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.VERIFICATION_ERRORS)) { - state._verificationErrors = value == null ? AnalysisError.NO_ERRORS : (value as List); - state._verificationErrorsState = CacheState.VALID; - } else if (identical(descriptor, DartEntry.HINTS)) { - state._hints = value == null ? AnalysisError.NO_ERRORS : (value as List); - state._hintsState = CacheState.VALID; + if (!_isValidLibraryDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); } + ResolutionState state = _getOrCreateResolutionState(librarySource); + state.setValue(descriptor, value); } @override - bool get hasErrorState => super.hasErrorState || _scanErrorsState == CacheState.ERROR || _tokenStreamState == CacheState.ERROR || _sourceKindState == CacheState.ERROR || _parsedUnitState == CacheState.ERROR || _parseErrorsState == CacheState.ERROR || _importedLibrariesState == CacheState.ERROR || _exportedLibrariesState == CacheState.ERROR || _includedPartsState == CacheState.ERROR || _elementState == CacheState.ERROR || _publicNamespaceState == CacheState.ERROR || _clientServerState == CacheState.ERROR || _launchableState == CacheState.ERROR || _resolutionState.hasErrorState; - - @override - bool writeDiffOn(JavaStringBuilder builder, SourceEntry oldEntry) { - bool needsSeparator = super.writeDiffOn(builder, oldEntry); + bool _writeDiffOn(StringBuffer buffer, SourceEntry oldEntry) { + bool needsSeparator = super._writeDiffOn(buffer, oldEntry); if (oldEntry is! DartEntry) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append("entry type changed; was ${oldEntry.runtimeType.toString()}"); + buffer.write("entry type changed; was "); + buffer.write(oldEntry.runtimeType.toString()); return true; } - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.TOKEN_STREAM, "tokenStream"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.SCAN_ERRORS, "scanErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.SOURCE_KIND, "sourceKind"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.PARSED_UNIT, "parsedUnit"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.PARSE_ERRORS, "parseErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.IMPORTED_LIBRARIES, "importedLibraries"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.EXPORTED_LIBRARIES, "exportedLibraries"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.INCLUDED_PARTS, "includedParts"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.ELEMENT, "element"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.PUBLIC_NAMESPACE, "publicNamespace"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.IS_CLIENT, "clientServer"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.IS_LAUNCHABLE, "launchable"); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "tokenStream", DartEntry.TOKEN_STREAM, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "scanErrors", DartEntry.SCAN_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "sourceKind", DartEntry.SOURCE_KIND, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "parsedUnit", DartEntry.PARSED_UNIT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "parseErrors", DartEntry.PARSE_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "importedLibraries", DartEntry.IMPORTED_LIBRARIES, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "exportedLibraries", DartEntry.EXPORTED_LIBRARIES, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "includedParts", DartEntry.INCLUDED_PARTS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "element", DartEntry.ELEMENT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "publicNamespace", DartEntry.PUBLIC_NAMESPACE, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "clientServer", DartEntry.IS_CLIENT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "launchable", DartEntry.IS_LAUNCHABLE, oldEntry); // TODO(brianwilkerson) Add better support for containingLibraries. It would be nice to be able // to report on size-preserving changes. int oldLibraryCount = (oldEntry as DartEntry)._containingLibraries.length; int libraryCount = _containingLibraries.length; if (oldLibraryCount != libraryCount) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append("containingLibraryCount = "); - builder.append(oldLibraryCount); - builder.append(" -> "); - builder.append(libraryCount); + buffer.write("containingLibraryCount = "); + buffer.write(oldLibraryCount); + buffer.write(" -> "); + buffer.write(libraryCount); needsSeparator = true; } // @@ -8932,60 +8416,46 @@ class DartEntry extends SourceEntry { ResolutionState oldState = oldStateMap.remove(librarySource); if (oldState == null) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append("added resolution for "); - builder.append(librarySource.fullName); + buffer.write("added resolution for "); + buffer.write(librarySource.fullName); needsSeparator = true; } else { - needsSeparator = oldState.writeDiffOn(builder, needsSeparator, oldEntry as DartEntry); + needsSeparator = oldState._writeDiffOn(buffer, needsSeparator, oldEntry as DartEntry); } } state = state._nextState; } for (Source librarySource in oldStateMap.keys.toSet()) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append("removed resolution for "); - builder.append(librarySource.fullName); + buffer.write("removed resolution for "); + buffer.write(librarySource.fullName); needsSeparator = true; } return needsSeparator; } @override - void writeOn(JavaStringBuilder builder) { - builder.append("Dart: "); - super.writeOn(builder); - builder.append("; tokenStream = "); - builder.append(_tokenStreamState); - builder.append("; scanErrors = "); - builder.append(_scanErrorsState); - builder.append("; sourceKind = "); - builder.append(_sourceKindState); - builder.append("; parsedUnit = "); - builder.append(_parsedUnitState); - builder.append(" ("); - builder.append(_parsedUnitAccessed ? "T" : "F"); - builder.append("); parseErrors = "); - builder.append(_parseErrorsState); - builder.append("; exportedLibraries = "); - builder.append(_exportedLibrariesState); - builder.append("; importedLibraries = "); - builder.append(_importedLibrariesState); - builder.append("; includedParts = "); - builder.append(_includedPartsState); - builder.append("; element = "); - builder.append(_elementState); - builder.append("; publicNamespace = "); - builder.append(_publicNamespaceState); - builder.append("; clientServer = "); - builder.append(_clientServerState); - builder.append("; launchable = "); - builder.append(_launchableState); - // builder.append("; angularElements = "); - _resolutionState.writeOn(builder); + void _writeOn(StringBuffer buffer) { + buffer.write("Dart: "); + super._writeOn(buffer); + _writeStateOn(buffer, "tokenStream", TOKEN_STREAM); + _writeStateOn(buffer, "scanErrors", SCAN_ERRORS); + _writeStateOn(buffer, "sourceKind", SOURCE_KIND); + _writeStateOn(buffer, "parsedUnit", PARSED_UNIT); + _writeStateOn(buffer, "parseErrors", PARSE_ERRORS); + _writeStateOn(buffer, "exportedLibraries", EXPORTED_LIBRARIES); + _writeStateOn(buffer, "importedLibraries", IMPORTED_LIBRARIES); + _writeStateOn(buffer, "includedParts", INCLUDED_PARTS); + _writeStateOn(buffer, "element", ELEMENT); + _writeStateOn(buffer, "publicNamespace", PUBLIC_NAMESPACE); + _writeStateOn(buffer, "clientServer", IS_CLIENT); + _writeStateOn(buffer, "launchable", IS_LAUNCHABLE); + _writeStateOn(buffer, "angularErrors", ANGULAR_ERRORS); + _resolutionState._writeOn(buffer); } /** @@ -8995,21 +8465,15 @@ class DartEntry extends SourceEntry { * be invalidated. */ void _discardCachedResolutionInformation(bool invalidateUris) { - _element = null; - _elementState = CacheState.INVALID; - clearFlags([_LAUNCHABLE_INDEX, _CLIENT_CODE_INDEX]); - _clientServerState = CacheState.INVALID; - _launchableState = CacheState.INVALID; - _publicNamespace = null; - _publicNamespaceState = CacheState.INVALID; + setState(ELEMENT, CacheState.INVALID); + setState(IS_CLIENT, CacheState.INVALID); + setState(IS_LAUNCHABLE, CacheState.INVALID); + setState(PUBLIC_NAMESPACE, CacheState.INVALID); _resolutionState.invalidateAllResolutionInformation(); if (invalidateUris) { - _importedLibraries = Source.EMPTY_ARRAY; - _importedLibrariesState = CacheState.INVALID; - _exportedLibraries = Source.EMPTY_ARRAY; - _exportedLibrariesState = CacheState.INVALID; - _includedParts = Source.EMPTY_ARRAY; - _includedPartsState = CacheState.INVALID; + setState(EXPORTED_LIBRARIES, CacheState.INVALID); + setState(IMPORTED_LIBRARIES, CacheState.INVALID); + setState(INCLUDED_PARTS, CacheState.INVALID); } } @@ -9037,6 +8501,38 @@ class DartEntry extends SourceEntry { return state; } + @override + bool _isValidDescriptor(DataDescriptor descriptor) { + return descriptor == ANGULAR_ERRORS + || descriptor == CONTAINING_LIBRARIES + || descriptor == ELEMENT + || descriptor == EXPORTED_LIBRARIES + || descriptor == IMPORTED_LIBRARIES + || descriptor == INCLUDED_PARTS + || descriptor == IS_CLIENT + || descriptor == IS_LAUNCHABLE + || descriptor == PARSED_UNIT + || descriptor == PARSE_ERRORS + || descriptor == PUBLIC_NAMESPACE + || descriptor == SCAN_ERRORS + || descriptor == SOURCE_KIND + || descriptor == TOKEN_STREAM + || super._isValidDescriptor(descriptor); + } + + /** + * Return `true` if the [descriptor] is valid for this entry when the data is + * relative to a library. + */ + bool _isValidLibraryDescriptor(DataDescriptor descriptor) { + return descriptor == BUILD_ELEMENT_ERRORS + || descriptor == BUILT_UNIT + || descriptor == HINTS + || descriptor == RESOLUTION_ERRORS + || descriptor == RESOLVED_UNIT + || descriptor == VERIFICATION_ERRORS; + } + /** * Given that the specified flag is being transitioned to the given state, set the value of the * flag to the value that should be kept in the cache. @@ -9052,7 +8548,7 @@ class DartEntry extends SourceEntry { // If the value is in process, we can leave the current value in the cache for any 'get' // methods to access. // - setFlag(index, false); + _setFlag(index, false); } } } @@ -9068,11 +8564,15 @@ class DataDescriptor { final String _name; /** - * Initialize a newly created descriptor to have the given name. - * - * @param name the name of the descriptor + * The default value used when the data does not exist. */ - DataDescriptor(this._name); + final E defaultValue; + + /** + * Initialize a newly created descriptor to have the given [name] and + * [defaultValue]. + */ + DataDescriptor(this._name, [this.defaultValue = null]); @override String toString() => _name; @@ -9440,143 +8940,6 @@ class GetContentTask extends AnalysisTask { * an individual HTML file. */ class HtmlEntry extends SourceEntry { - /** - * The state of the cached parsed (but not resolved) HTML unit. - */ - CacheState _parsedUnitState = CacheState.INVALID; - - /** - * The parsed HTML unit, or `null` if the parsed HTML unit is not currently cached. - */ - ht.HtmlUnit _parsedUnit; - - /** - * The state of the cached resolved HTML unit. - */ - CacheState _resolvedUnitState = CacheState.INVALID; - - /** - * The resolved HTML unit, or `null` if the resolved HTML unit is not currently cached. - */ - ht.HtmlUnit _resolvedUnit; - - /** - * The state of the cached parse errors. - */ - CacheState _parseErrorsState = CacheState.INVALID; - - /** - * The errors produced while scanning and parsing the HTML, or `null` if the errors are not - * currently cached. - */ - List _parseErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached resolution errors. - */ - CacheState _resolutionErrorsState = CacheState.INVALID; - - /** - * The errors produced while resolving the HTML, or `null` if the errors are not currently - * cached. - */ - List _resolutionErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached list of referenced libraries. - */ - CacheState _referencedLibrariesState = CacheState.INVALID; - - /** - * The list of libraries referenced in the HTML, or `null` if the list is not currently - * cached. Note that this list does not include libraries defined directly within the HTML file. - */ - List _referencedLibraries = Source.EMPTY_ARRAY; - - /** - * The state of the cached HTML element. - */ - CacheState _elementState = CacheState.INVALID; - - /** - * The element representing the HTML file, or `null` if the element is not currently cached. - */ - HtmlElement _element; - - /** - * The state of the [angularApplication]. - */ - CacheState _angularApplicationState = CacheState.VALID; - - /** - * Information about the Angular Application this unit is used in. - */ - AngularApplication _angularApplication; - - /** - * The state of the [angularEntry]. - */ - CacheState _angularEntryState = CacheState.INVALID; - - /** - * Information about the Angular Application this unit is entry point for. - */ - AngularApplication _angularEntry = null; - - /** - * The state of the [angularComponent]. - */ - CacheState _angularComponentState = CacheState.VALID; - - /** - * Information about the [AngularComponentElement] this unit is used as template for. - */ - AngularComponentElement _angularComponent = null; - - /** - * The state of the Angular resolution errors. - */ - CacheState _angularErrorsState = CacheState.INVALID; - - /** - * The hints produced while performing Angular resolution, or an empty array if the error are not - * currently cached. - */ - List _angularErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached hints. - */ - CacheState _hintsState = CacheState.INVALID; - - /** - * The hints produced while auditing the compilation unit, or an empty array if the hints are not - * currently cached. - */ - List _hints = AnalysisError.NO_ERRORS; - - /** - * The state of the Polymer elements. - */ - CacheState _polymerBuildErrorsState = CacheState.INVALID; - - /** - * The hints produced while performing Polymer HTML elements building, or an empty array if the - * error are not currently cached. - */ - List _polymerBuildErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the Polymer resolution errors. - */ - CacheState _polymerResolutionErrorsState = CacheState.INVALID; - - /** - * The hints produced while performing Polymer resolution, or an empty array if the error are not - * currently cached. - */ - List _polymerResolutionErrors = AnalysisError.NO_ERRORS; - /** * The data descriptor representing the information about an Angular * application this source is used in. @@ -9603,7 +8966,7 @@ class HtmlEntry extends SourceEntry { * resolution. */ static final DataDescriptor> ANGULAR_ERRORS - = new DataDescriptor>("HtmlEntry.ANGULAR_ERRORS"); + = new DataDescriptor>("HtmlEntry.ANGULAR_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the HTML element. @@ -9616,14 +8979,14 @@ class HtmlEntry extends SourceEntry { * source. */ static final DataDescriptor> HINTS - = new DataDescriptor>("HtmlEntry.HINTS"); + = new DataDescriptor>("HtmlEntry.HINTS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the errors resulting from parsing the * source. */ static final DataDescriptor> PARSE_ERRORS - = new DataDescriptor>("HtmlEntry.PARSE_ERRORS"); + = new DataDescriptor>("HtmlEntry.PARSE_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the parsed AST structure. @@ -9641,89 +9004,55 @@ class HtmlEntry extends SourceEntry { * The data descriptor representing the list of referenced libraries. */ static final DataDescriptor> REFERENCED_LIBRARIES - = new DataDescriptor>("HtmlEntry.REFERENCED_LIBRARIES"); + = new DataDescriptor>("HtmlEntry.REFERENCED_LIBRARIES", Source.EMPTY_ARRAY); /** * The data descriptor representing the errors resulting from resolving the * source. */ static final DataDescriptor> RESOLUTION_ERRORS - = new DataDescriptor>("HtmlEntry.RESOLUTION_ERRORS"); + = new DataDescriptor>("HtmlEntry.RESOLUTION_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the status of Polymer elements in the * source. */ static final DataDescriptor> POLYMER_BUILD_ERRORS - = new DataDescriptor>("HtmlEntry.POLYMER_BUILD_ERRORS"); + = new DataDescriptor>("HtmlEntry.POLYMER_BUILD_ERRORS", AnalysisError.NO_ERRORS); /** * The data descriptor representing the errors reported during Polymer * resolution. */ static final DataDescriptor> POLYMER_RESOLUTION_ERRORS - = new DataDescriptor>("HtmlEntry.POLYMER_RESOLUTION_ERRORS"); + = new DataDescriptor>("HtmlEntry.POLYMER_RESOLUTION_ERRORS", AnalysisError.NO_ERRORS); /** * Flush any AST structures being maintained by this entry. */ void flushAstStructures() { - if (_parsedUnitState == CacheState.VALID) { - _parsedUnitState = CacheState.FLUSHED; - _parsedUnit = null; - } - if (_resolvedUnitState == CacheState.VALID) { - _resolvedUnitState = CacheState.FLUSHED; - _resolvedUnit = null; - } - if (_angularEntryState == CacheState.VALID) { - _angularEntryState = CacheState.FLUSHED; - } - if (_angularErrorsState == CacheState.VALID) { - _angularErrorsState = CacheState.FLUSHED; - } + _flush(PARSED_UNIT); + _flush(RESOLVED_UNIT); + _flush(ANGULAR_ENTRY); + _flush(ANGULAR_ERRORS); } - - /** - * Return all of the errors associated with the compilation unit that are - * currently cached. - */ - List get allErrors { - List errors = new List(); - if (_parseErrors != null) { - for (AnalysisError error in _parseErrors) { - errors.add(error); - } - } - if (_resolutionErrors != null) { - for (AnalysisError error in _resolutionErrors) { - errors.add(error); - } - } - if (_angularErrors != null) { - for (AnalysisError error in _angularErrors) { - errors.add(error); - } - } - if (_hints != null) { - for (AnalysisError error in _hints) { - errors.add(error); - } - } - if (_polymerBuildErrors != null) { - for (AnalysisError error in _polymerBuildErrors) { - errors.add(error); - } - } - if (_polymerResolutionErrors != null) { - for (AnalysisError error in _polymerResolutionErrors) { - errors.add(error); - } - } + + /** + * Return all of the errors associated with the HTML file that are currently + * cached. + */ + List get allErrors { + List errors = new List(); + errors.addAll(getValue(PARSE_ERRORS)); + errors.addAll(getValue(RESOLUTION_ERRORS)); + errors.addAll(getValue(ANGULAR_ERRORS)); + errors.addAll(getValue(HINTS)); + errors.addAll(getValue(POLYMER_BUILD_ERRORS)); + errors.addAll(getValue(POLYMER_RESOLUTION_ERRORS)); if (errors.length == 0) { return AnalysisError.NO_ERRORS; } - return new List.from(errors); + return errors; } /** @@ -9732,13 +9061,11 @@ class HtmlEntry extends SourceEntry { * available. */ ht.HtmlUnit get anyParsedUnit { - if (_parsedUnitState == CacheState.VALID) { - // parsedUnitAccessed = true; - return _parsedUnit; + if (getState(PARSED_UNIT) == CacheState.VALID) { + return getValue(PARSED_UNIT); } - if (_resolvedUnitState == CacheState.VALID) { - // resovledUnitAccessed = true; - return _resolvedUnit; + if (getState(RESOLVED_UNIT) == CacheState.VALID) { + return getValue(RESOLVED_UNIT); } return null; } @@ -9746,106 +9073,30 @@ class HtmlEntry extends SourceEntry { @override SourceKind get kind => SourceKind.HTML; - @override - CacheState getState(DataDescriptor descriptor) { - if (identical(descriptor, HtmlEntry.ANGULAR_APPLICATION)) { - return _angularApplicationState; - } else if (identical(descriptor, HtmlEntry.ANGULAR_COMPONENT)) { - return _angularComponentState; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ENTRY)) { - return _angularEntryState; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ERRORS)) { - return _angularErrorsState; - } else if (identical(descriptor, HtmlEntry.ELEMENT)) { - return _elementState; - } else if (identical(descriptor, HtmlEntry.PARSE_ERRORS)) { - return _parseErrorsState; - } else if (identical(descriptor, HtmlEntry.PARSED_UNIT)) { - return _parsedUnitState; - } else if (identical(descriptor, HtmlEntry.RESOLVED_UNIT)) { - return _resolvedUnitState; - } else if (identical(descriptor, HtmlEntry.REFERENCED_LIBRARIES)) { - return _referencedLibrariesState; - } else if (identical(descriptor, HtmlEntry.RESOLUTION_ERRORS)) { - return _resolutionErrorsState; - } else if (identical(descriptor, HtmlEntry.HINTS)) { - return _hintsState; - } else if (identical(descriptor, HtmlEntry.POLYMER_BUILD_ERRORS)) { - return _polymerBuildErrorsState; - } else if (identical(descriptor, HtmlEntry.POLYMER_RESOLUTION_ERRORS)) { - return _polymerResolutionErrorsState; - } - return super.getState(descriptor); - } - - @override - Object getValue(DataDescriptor descriptor) { - if (identical(descriptor, HtmlEntry.ANGULAR_APPLICATION)) { - return _angularApplication; - } else if (identical(descriptor, HtmlEntry.ANGULAR_COMPONENT)) { - return _angularComponent; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ENTRY)) { - return _angularEntry; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ERRORS)) { - return _angularErrors; - } else if (identical(descriptor, HtmlEntry.ELEMENT)) { - return _element; - } else if (identical(descriptor, HtmlEntry.PARSE_ERRORS)) { - return _parseErrors; - } else if (identical(descriptor, HtmlEntry.PARSED_UNIT)) { - return _parsedUnit; - } else if (identical(descriptor, HtmlEntry.RESOLVED_UNIT)) { - return _resolvedUnit; - } else if (identical(descriptor, HtmlEntry.REFERENCED_LIBRARIES)) { - return _referencedLibraries; - } else if (identical(descriptor, HtmlEntry.RESOLUTION_ERRORS)) { - return _resolutionErrors; - } else if (identical(descriptor, HtmlEntry.HINTS)) { - return _hints; - } else if (identical(descriptor, HtmlEntry.POLYMER_BUILD_ERRORS)) { - return _polymerBuildErrors; - } else if (identical(descriptor, HtmlEntry.POLYMER_RESOLUTION_ERRORS)) { - return _polymerResolutionErrors; - } - return super.getValue(descriptor); - } - @override void invalidateAllInformation() { super.invalidateAllInformation(); - _parseErrors = AnalysisError.NO_ERRORS; - _parseErrorsState = CacheState.INVALID; - _parsedUnit = null; - _parsedUnitState = CacheState.INVALID; - _resolvedUnit = null; - _resolvedUnitState = CacheState.INVALID; + setState(PARSE_ERRORS, CacheState.INVALID); + setState(PARSED_UNIT, CacheState.INVALID); + setState(RESOLVED_UNIT, CacheState.INVALID); invalidateAllResolutionInformation(true); } /** * Invalidate all of the resolution information associated with the HTML file. - * - * @param invalidateUris true if the cached results of converting URIs to source files should also - * be invalidated. + * If [invalidateUris] is `true`, the cached results of converting URIs to + * source files should also be invalidated. */ void invalidateAllResolutionInformation(bool invalidateUris) { - _angularEntry = null; - _angularEntryState = CacheState.INVALID; - _angularErrors = AnalysisError.NO_ERRORS; - _angularErrorsState = CacheState.INVALID; - _polymerBuildErrors = AnalysisError.NO_ERRORS; - _polymerBuildErrorsState = CacheState.INVALID; - _polymerResolutionErrors = AnalysisError.NO_ERRORS; - _polymerResolutionErrorsState = CacheState.INVALID; - _element = null; - _elementState = CacheState.INVALID; - _resolutionErrors = AnalysisError.NO_ERRORS; - _resolutionErrorsState = CacheState.INVALID; - _hints = AnalysisError.NO_ERRORS; - _hintsState = CacheState.INVALID; + setState(ANGULAR_ENTRY, CacheState.INVALID); + setState(ANGULAR_ERRORS, CacheState.INVALID); + setState(POLYMER_BUILD_ERRORS, CacheState.INVALID); + setState(POLYMER_RESOLUTION_ERRORS, CacheState.INVALID); + setState(ELEMENT, CacheState.INVALID); + setState(RESOLUTION_ERRORS, CacheState.INVALID); + setState(HINTS, CacheState.INVALID); if (invalidateUris) { - _referencedLibraries = Source.EMPTY_ARRAY; - _referencedLibrariesState = CacheState.INVALID; + setState(REFERENCED_LIBRARIES, CacheState.INVALID); } } @@ -9856,195 +9107,93 @@ class HtmlEntry extends SourceEntry { } /** - * Record that an error was encountered while attempting to parse the source associated with this - * entry. - * - * @param exception the exception that shows where the error occurred + * Record that an [exception] was encountered while attempting to parse the + * source associated with this entry. */ void recordParseError(CaughtException exception) { // If the scanning and parsing of HTML are separated, the following line can be removed. recordScanError(exception); - _parseErrors = AnalysisError.NO_ERRORS; - _parseErrorsState = CacheState.ERROR; - _parsedUnit = null; - _parsedUnitState = CacheState.ERROR; - _referencedLibraries = Source.EMPTY_ARRAY; - _referencedLibrariesState = CacheState.ERROR; + setState(PARSE_ERRORS, CacheState.ERROR); + setState(PARSED_UNIT, CacheState.ERROR); + setState(REFERENCED_LIBRARIES, CacheState.ERROR); recordResolutionError(exception); } /** - * Record that an error was encountered while attempting to resolve the source associated with - * this entry. - * - * @param exception the exception that shows where the error occurred + * Record that an [exception] was encountered while attempting to resolve the + * source associated with this entry. */ void recordResolutionError(CaughtException exception) { this.exception = exception; - _angularErrors = AnalysisError.NO_ERRORS; - _angularErrorsState = CacheState.ERROR; - _resolvedUnit = null; - _resolvedUnitState = CacheState.ERROR; - _element = null; - _elementState = CacheState.ERROR; - _resolutionErrors = AnalysisError.NO_ERRORS; - _resolutionErrorsState = CacheState.ERROR; - _hints = AnalysisError.NO_ERRORS; - _hintsState = CacheState.ERROR; - _polymerBuildErrors = AnalysisError.NO_ERRORS; - _polymerBuildErrorsState = CacheState.ERROR; - _polymerResolutionErrors = AnalysisError.NO_ERRORS; - _polymerResolutionErrorsState = CacheState.ERROR; - } - - @override - void setState(DataDescriptor descriptor, CacheState state) { - if (identical(descriptor, HtmlEntry.ANGULAR_APPLICATION)) { - _angularApplication = updatedValue(state, _angularApplication, null); - _angularApplicationState = state; - } else if (identical(descriptor, HtmlEntry.ANGULAR_COMPONENT)) { - _angularComponent = updatedValue(state, _angularComponent, null); - _angularComponentState = state; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ENTRY)) { - _angularEntry = updatedValue(state, _angularEntry, null); - _angularEntryState = state; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ERRORS)) { - _angularErrors = updatedValue(state, _angularErrors, null); - _angularErrorsState = state; - } else if (identical(descriptor, HtmlEntry.ELEMENT)) { - _element = updatedValue(state, _element, null); - _elementState = state; - } else if (identical(descriptor, HtmlEntry.PARSE_ERRORS)) { - _parseErrors = updatedValue(state, _parseErrors, null); - _parseErrorsState = state; - } else if (identical(descriptor, HtmlEntry.PARSED_UNIT)) { - _parsedUnit = updatedValue(state, _parsedUnit, null); - _parsedUnitState = state; - } else if (identical(descriptor, HtmlEntry.RESOLVED_UNIT)) { - _resolvedUnit = updatedValue(state, _resolvedUnit, null); - _resolvedUnitState = state; - } else if (identical(descriptor, HtmlEntry.REFERENCED_LIBRARIES)) { - _referencedLibraries = updatedValue(state, _referencedLibraries, Source.EMPTY_ARRAY); - _referencedLibrariesState = state; - } else if (identical(descriptor, HtmlEntry.RESOLUTION_ERRORS)) { - _resolutionErrors = updatedValue(state, _resolutionErrors, AnalysisError.NO_ERRORS); - _resolutionErrorsState = state; - } else if (identical(descriptor, HtmlEntry.HINTS)) { - _hints = updatedValue(state, _hints, AnalysisError.NO_ERRORS); - _hintsState = state; - } else if (identical(descriptor, HtmlEntry.POLYMER_BUILD_ERRORS)) { - _polymerBuildErrors = updatedValue(state, _polymerBuildErrors, null); - _polymerBuildErrorsState = state; - } else if (identical(descriptor, HtmlEntry.POLYMER_RESOLUTION_ERRORS)) { - _polymerResolutionErrors = updatedValue(state, _polymerResolutionErrors, null); - _polymerResolutionErrorsState = state; - } else { - super.setState(descriptor, state); - } - } - - @override - void setValue(DataDescriptor descriptor, Object value) { - if (identical(descriptor, HtmlEntry.ANGULAR_APPLICATION)) { - _angularApplication = value as AngularApplication; - _angularApplicationState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.ANGULAR_COMPONENT)) { - _angularComponent = value as AngularComponentElement; - _angularComponentState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ENTRY)) { - _angularEntry = value as AngularApplication; - _angularEntryState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.ANGULAR_ERRORS)) { - _angularErrors = value as List; - _angularErrorsState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.ELEMENT)) { - _element = value as HtmlElement; - _elementState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.PARSE_ERRORS)) { - _parseErrors = value as List; - _parseErrorsState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.PARSED_UNIT)) { - _parsedUnit = value as ht.HtmlUnit; - _parsedUnitState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.RESOLVED_UNIT)) { - _resolvedUnit = value as ht.HtmlUnit; - _resolvedUnitState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.REFERENCED_LIBRARIES)) { - _referencedLibraries = value == null ? Source.EMPTY_ARRAY : (value as List); - _referencedLibrariesState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.RESOLUTION_ERRORS)) { - _resolutionErrors = value as List; - _resolutionErrorsState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.HINTS)) { - _hints = value as List; - _hintsState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.POLYMER_BUILD_ERRORS)) { - _polymerBuildErrors = value as List; - _polymerBuildErrorsState = CacheState.VALID; - } else if (identical(descriptor, HtmlEntry.POLYMER_RESOLUTION_ERRORS)) { - _polymerResolutionErrors = value as List; - _polymerResolutionErrorsState = CacheState.VALID; - } else { - super.setValue(descriptor, value); - } - } - - @override - bool get hasErrorState => super.hasErrorState || _parsedUnitState == CacheState.ERROR || _resolvedUnitState == CacheState.ERROR || _parseErrorsState == CacheState.ERROR || _resolutionErrorsState == CacheState.ERROR || _referencedLibrariesState == CacheState.ERROR || _elementState == CacheState.ERROR || _angularErrorsState == CacheState.ERROR || _hintsState == CacheState.ERROR || _polymerBuildErrorsState == CacheState.ERROR || _polymerResolutionErrorsState == CacheState.ERROR; - - @override - bool writeDiffOn(JavaStringBuilder builder, SourceEntry oldEntry) { - bool needsSeparator = super.writeDiffOn(builder, oldEntry); + setState(ANGULAR_ERRORS, CacheState.ERROR); + setState(RESOLVED_UNIT, CacheState.ERROR); + setState(ELEMENT, CacheState.ERROR); + setState(RESOLUTION_ERRORS, CacheState.ERROR); + setState(HINTS, CacheState.ERROR); + setState(POLYMER_BUILD_ERRORS, CacheState.ERROR); + setState(POLYMER_RESOLUTION_ERRORS, CacheState.ERROR); + } + + @override + bool _isValidDescriptor(DataDescriptor descriptor) { + return descriptor == ANGULAR_APPLICATION + || descriptor == ANGULAR_COMPONENT + || descriptor == ANGULAR_ENTRY + || descriptor == ANGULAR_ERRORS + || descriptor == ELEMENT + || descriptor == HINTS + || descriptor == PARSED_UNIT + || descriptor == PARSE_ERRORS + || descriptor == POLYMER_BUILD_ERRORS + || descriptor == POLYMER_RESOLUTION_ERRORS + || descriptor == REFERENCED_LIBRARIES + || descriptor == RESOLUTION_ERRORS + || descriptor == RESOLVED_UNIT + || super._isValidDescriptor(descriptor); + } + + @override + bool _writeDiffOn(StringBuffer buffer, SourceEntry oldEntry) { + bool needsSeparator = super._writeDiffOn(buffer, oldEntry); if (oldEntry is! HtmlEntry) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append("entry type changed; was ${oldEntry.runtimeType.toString()}"); + buffer.write("entry type changed; was "); + buffer.write(oldEntry.runtimeType); return true; } - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.PARSE_ERRORS, "parseErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.PARSED_UNIT, "parsedUnit"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.RESOLVED_UNIT, "resolvedUnit"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.RESOLUTION_ERRORS, "resolutionErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.REFERENCED_LIBRARIES, "referencedLibraries"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.ELEMENT, "element"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.ANGULAR_APPLICATION, "angularApplicationState"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.ANGULAR_COMPONENT, "angularComponent"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.ANGULAR_ENTRY, "angularEntry"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.ANGULAR_ERRORS, "angularErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.POLYMER_BUILD_ERRORS, "polymerBuildErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, HtmlEntry.POLYMER_RESOLUTION_ERRORS, "polymerResolutionErrors"); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "parseErrors", HtmlEntry.PARSE_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "parsedUnit", HtmlEntry.PARSED_UNIT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "resolvedUnit", HtmlEntry.RESOLVED_UNIT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "resolutionErrors", HtmlEntry.RESOLUTION_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "referencedLibraries", HtmlEntry.REFERENCED_LIBRARIES, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "element", HtmlEntry.ELEMENT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "angularApplicationState", HtmlEntry.ANGULAR_APPLICATION, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "angularComponent", HtmlEntry.ANGULAR_COMPONENT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "angularEntry", HtmlEntry.ANGULAR_ENTRY, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "angularErrors", HtmlEntry.ANGULAR_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "polymerBuildErrors", HtmlEntry.POLYMER_BUILD_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "polymerResolutionErrors", HtmlEntry.POLYMER_RESOLUTION_ERRORS, oldEntry); return needsSeparator; } @override - void writeOn(JavaStringBuilder builder) { - builder.append("Html: "); - super.writeOn(builder); - builder.append("; parseErrors = "); - builder.append(_parseErrorsState); - builder.append("; parsedUnit = "); - builder.append(_parsedUnitState); - builder.append("; resolvedUnit = "); - builder.append(_resolvedUnitState); - builder.append("; resolutionErrors = "); - builder.append(_resolutionErrorsState); - builder.append("; referencedLibraries = "); - builder.append(_referencedLibrariesState); - builder.append("; element = "); - builder.append(_elementState); - builder.append("; angularApplication = "); - builder.append(_angularApplicationState); - builder.append("; angularComponent = "); - builder.append(_angularComponentState); - builder.append("; angularEntry = "); - builder.append(_angularEntryState); - builder.append("; angularErrors = "); - builder.append(_angularErrorsState); - builder.append("; polymerBuildErrors = "); - builder.append(_polymerBuildErrorsState); - builder.append("; polymerResolutionErrors = "); - builder.append(_polymerResolutionErrorsState); + void _writeOn(StringBuffer buffer) { + buffer.write("Html: "); + super._writeOn(buffer); + _writeStateOn(buffer, "parseErrors", PARSE_ERRORS); + _writeStateOn(buffer, "parsedUnit", PARSED_UNIT); + _writeStateOn(buffer, "resolvedUnit", RESOLVED_UNIT); + _writeStateOn(buffer, "resolutionErrors", RESOLUTION_ERRORS); + _writeStateOn(buffer, "referencedLibraries", REFERENCED_LIBRARIES); + _writeStateOn(buffer, "element", ELEMENT); + _writeStateOn(buffer, "angularApplication", ANGULAR_APPLICATION); + _writeStateOn(buffer, "angularComponent", ANGULAR_COMPONENT); + _writeStateOn(buffer, "angularEntry", ANGULAR_ENTRY); + _writeStateOn(buffer, "angularErrors", ANGULAR_ERRORS); + _writeStateOn(buffer, "polymerBuildErrors", POLYMER_BUILD_ERRORS); + _writeStateOn(buffer, "polymerResolutionErrors", POLYMER_RESOLUTION_ERRORS); } } @@ -12754,108 +11903,70 @@ class ResolutionState { Source _librarySource; /** - * The state of the cached compilation unit that contains references to the built element model. - */ - CacheState _builtUnitState = CacheState.INVALID; - - /** - * The compilation unit that contains references to the built element model, or `null` if - * that compilation unit is not currently cached. - */ - CompilationUnit _builtUnit; - - /** - * The state of the cached errors reported while building an element model. - */ - CacheState _buildElementErrorsState = CacheState.INVALID; - - /** - * The errors produced while building an element model, or an empty array if the errors are not - * currently cached. - */ - List _buildElementErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached resolved compilation unit. - */ - CacheState _resolvedUnitState = CacheState.INVALID; - - /** - * The resolved compilation unit, or `null` if the resolved compilation unit is not - * currently cached. - */ - CompilationUnit _resolvedUnit; - - /** - * The state of the cached resolution errors. - */ - CacheState _resolutionErrorsState = CacheState.INVALID; - - /** - * The errors produced while resolving the compilation unit, or an empty array if the errors are - * not currently cached. - */ - List _resolutionErrors = AnalysisError.NO_ERRORS; - - /** - * The state of the cached verification errors. + * A table mapping data descriptors to the cached results for those + * descriptors. */ - CacheState _verificationErrorsState = CacheState.INVALID; + Map resultMap + = new HashMap(); /** - * The errors produced while verifying the compilation unit, or an empty array if the errors are - * not currently cached. + * Flush any AST structures being maintained by this state. */ - List _verificationErrors = AnalysisError.NO_ERRORS; + void flushAstStructures() { + _flush(DartEntry.BUILT_UNIT); + _flush(DartEntry.RESOLVED_UNIT); + if (_nextState != null) { + _nextState.flushAstStructures(); + } + } /** - * The state of the cached hints. + * Return the state of the data represented by the given [descriptor]. */ - CacheState _hintsState = CacheState.INVALID; + CacheState getState(DataDescriptor descriptor) { + CachedResult result = resultMap[descriptor]; + if (result == null) { + return CacheState.INVALID; + } + return result.state; + } /** - * The hints produced while auditing the compilation unit, or an empty array if the hints are - * not currently cached. + * Return the value of the data represented by the given [descriptor], or + * `null` if the data represented by the descriptor is not valid. */ - List _hints = AnalysisError.NO_ERRORS; + /**/ dynamic /*V*/ getValue(DataDescriptor/**/ descriptor) { + CachedResult result = resultMap[descriptor]; + if (result == null) { + return descriptor.defaultValue; + } + return result.value; + } /** - * Flush any AST structures being maintained by this state. + * Return `true` if the state of any data value is [CacheState.ERROR]. */ - void flushAstStructures() { - if (_builtUnitState == CacheState.VALID) { - _builtUnitState = CacheState.FLUSHED; - _builtUnit = null; - } - if (_resolvedUnitState == CacheState.VALID) { - _resolvedUnitState = CacheState.FLUSHED; - _resolvedUnit = null; - } - if (_nextState != null) { - _nextState.flushAstStructures(); + bool hasErrorState() { + for (CachedResult result in resultMap.values) { + if (result.state == CacheState.ERROR) { + return true; + } } + return false; } - bool get hasErrorState => _builtUnitState == CacheState.ERROR || _buildElementErrorsState == CacheState.ERROR || _resolvedUnitState == CacheState.ERROR || _resolutionErrorsState == CacheState.ERROR || _verificationErrorsState == CacheState.ERROR || _hintsState == CacheState.ERROR || (_nextState != null && _nextState.hasErrorState); - /** * Invalidate all of the resolution information associated with the compilation unit. */ void invalidateAllResolutionInformation() { _nextState = null; _librarySource = null; - _builtUnitState = CacheState.INVALID; - _builtUnit = null; - _buildElementErrorsState = CacheState.INVALID; - _buildElementErrors = AnalysisError.NO_ERRORS; - _resolvedUnitState = CacheState.INVALID; - _resolvedUnit = null; - _resolutionErrorsState = CacheState.INVALID; - _resolutionErrors = AnalysisError.NO_ERRORS; - _verificationErrorsState = CacheState.INVALID; - _verificationErrors = AnalysisError.NO_ERRORS; - _hintsState = CacheState.INVALID; - _hints = AnalysisError.NO_ERRORS; + setState(DartEntry.BUILT_UNIT, CacheState.INVALID); + setState(DartEntry.BUILD_ELEMENT_ERRORS, CacheState.INVALID); + setState(DartEntry.RESOLVED_UNIT, CacheState.INVALID); + setState(DartEntry.RESOLUTION_ERRORS, CacheState.INVALID); + setState(DartEntry.VERIFICATION_ERRORS, CacheState.INVALID); + setState(DartEntry.HINTS, CacheState.INVALID); } /** @@ -12863,10 +11974,8 @@ class ResolutionState { * represented by this state. */ void recordBuildElementError() { - _builtUnitState = CacheState.ERROR; - _builtUnit = null; - _buildElementErrorsState = CacheState.ERROR; - _buildElementErrors = AnalysisError.NO_ERRORS; + setState(DartEntry.BUILT_UNIT, CacheState.ERROR); + setState(DartEntry.BUILD_ELEMENT_ERRORS, CacheState.ERROR); recordResolutionError(); } @@ -12875,8 +11984,7 @@ class ResolutionState { * by this entry. This will set the state of all verification information as being in error. */ void recordHintError() { - _hints = AnalysisError.NO_ERRORS; - _hintsState = CacheState.ERROR; + setState(DartEntry.HINTS, CacheState.ERROR); } /** @@ -12884,10 +11992,8 @@ class ResolutionState { * state. */ void recordResolutionError() { - _resolvedUnitState = CacheState.ERROR; - _resolvedUnit = null; - _resolutionErrorsState = CacheState.ERROR; - _resolutionErrors = AnalysisError.NO_ERRORS; + setState(DartEntry.RESOLVED_UNIT, CacheState.ERROR); + setState(DartEntry.RESOLUTION_ERRORS, CacheState.ERROR); recordVerificationError(); } @@ -12897,51 +12003,64 @@ class ResolutionState { * will not change the state of any parse results. */ void recordResolutionErrorsInAllLibraries() { - _builtUnitState = CacheState.ERROR; - _builtUnit = null; - _buildElementErrorsState = CacheState.ERROR; - _buildElementErrors = AnalysisError.NO_ERRORS; - _resolvedUnitState = CacheState.ERROR; - _resolvedUnit = null; - _resolutionErrorsState = CacheState.ERROR; - _resolutionErrors = AnalysisError.NO_ERRORS; - recordVerificationError(); + recordBuildElementError(); if (_nextState != null) { _nextState.recordResolutionErrorsInAllLibraries(); } } /** - * Record that an in-process parse has stopped without recording results because the results - * were invalidated before they could be recorded. + * Record that an error occurred while attempting to generate errors and warnings for the source + * represented by this entry. This will set the state of all verification information as being + * in error. */ - void recordResolutionNotInProcess() { - if (_resolvedUnitState == CacheState.IN_PROCESS) { - _resolvedUnitState = CacheState.INVALID; - } - if (_resolutionErrorsState == CacheState.IN_PROCESS) { - _resolutionErrorsState = CacheState.INVALID; - } - if (_verificationErrorsState == CacheState.IN_PROCESS) { - _verificationErrorsState = CacheState.INVALID; - } - if (_hintsState == CacheState.IN_PROCESS) { - _hintsState = CacheState.INVALID; + void recordVerificationError() { + setState(DartEntry.VERIFICATION_ERRORS, CacheState.ERROR); + recordHintError(); + } + + /** + * Set the state of the data represented by the given [descriptor] to the + * given [state]. + */ + void setState(DataDescriptor descriptor, CacheState state) { + if (state == CacheState.VALID) { + throw new ArgumentError("use setValue() to set the state to VALID"); } - if (_nextState != null) { - _nextState.recordResolutionNotInProcess(); + CachedResult result = resultMap.putIfAbsent( + descriptor, + () => new CachedResult(descriptor)); + result.state = state; + if (state != CacheState.IN_PROCESS) { + // + // If the state is in-process, we can leave the current value in the cache + // for any 'get' methods to access. + // + result.value = descriptor.defaultValue; } } /** - * Record that an error occurred while attempting to generate errors and warnings for the source - * represented by this entry. This will set the state of all verification information as being - * in error. + * Set the value of the data represented by the given [descriptor] to the + * given [value]. */ - void recordVerificationError() { - _verificationErrors = AnalysisError.NO_ERRORS; - _verificationErrorsState = CacheState.ERROR; - recordHintError(); + void setValue(DataDescriptor/**/ descriptor, dynamic /*V*/ value) { + CachedResult result = resultMap.putIfAbsent( + descriptor, + () => new CachedResult(descriptor)); + result.state = CacheState.VALID; + result.value = value == null ? descriptor.defaultValue : value; + } + + /** + * Flush the value of the data described by the [descriptor]. + */ + void _flush(DataDescriptor descriptor) { + CachedResult result = resultMap[descriptor]; + if (result != null && result.state == CacheState.VALID) { + result.state = CacheState.FLUSHED; + result.value = descriptor.defaultValue; + } } /** @@ -12952,11 +12071,11 @@ class ResolutionState { * @param oldEntry the entry that was replaced by this entry * @return `true` if some difference was written */ - bool writeDiffOn(JavaStringBuilder builder, bool needsSeparator, DartEntry oldEntry) { - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.RESOLVED_UNIT, _resolvedUnitState, "resolvedUnit"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.RESOLUTION_ERRORS, _resolutionErrorsState, "resolutionErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.VERIFICATION_ERRORS, _verificationErrorsState, "verificationErrors"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, DartEntry.HINTS, _hintsState, "hints"); + bool _writeDiffOn(StringBuffer buffer, bool needsSeparator, DartEntry oldEntry) { + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "resolvedUnit", DartEntry.RESOLVED_UNIT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "resolutionErrors", DartEntry.RESOLUTION_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "verificationErrors", DartEntry.VERIFICATION_ERRORS, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "hints", DartEntry.HINTS, oldEntry); return needsSeparator; } @@ -12966,52 +12085,55 @@ class ResolutionState { * * @param builder the builder to which the text should be written */ - void writeOn(JavaStringBuilder builder) { + void _writeOn(StringBuffer buffer) { if (_librarySource != null) { - builder.append("; builtUnit = "); - builder.append(_builtUnitState); - builder.append("; buildElementErrors = "); - builder.append(_buildElementErrorsState); - builder.append("; resolvedUnit = "); - builder.append(_resolvedUnitState); - builder.append("; resolutionErrors = "); - builder.append(_resolutionErrorsState); - builder.append("; verificationErrors = "); - builder.append(_verificationErrorsState); - builder.append("; hints = "); - builder.append(_hintsState); + _writeStateOn(buffer, "builtUnit", DartEntry.BUILT_UNIT); + _writeStateOn(buffer, "buildElementErrors", DartEntry.BUILD_ELEMENT_ERRORS); + _writeStateOn(buffer, "resolvedUnit", DartEntry.RESOLVED_UNIT); + _writeStateOn(buffer, "resolutionErrors", DartEntry.RESOLUTION_ERRORS); + _writeStateOn(buffer, "verificationErrors", DartEntry.VERIFICATION_ERRORS); + _writeStateOn(buffer, "hints", DartEntry.HINTS); if (_nextState != null) { - _nextState.writeOn(builder); + _nextState._writeOn(buffer); } } } /** - * Write a textual representation of the difference between the state of the specified data - * between the old entry and this entry to the given string builder. - * - * @param builder the string builder to which the difference is to be written - * @param needsSeparator `true` if any data that is written - * @param oldEntry the entry that was replaced by this entry - * @param descriptor the descriptor defining the data whose state is being compared - * @param label the label used to describe the state - * @return `true` if some difference was written + * Write a textual representation of the difference between the state of the + * value described by the given [descriptor] between the [oldEntry] and this + * entry to the given [buffer]. Return `true` if some difference was written. */ - bool writeStateDiffOn(JavaStringBuilder builder, bool needsSeparator, SourceEntry oldEntry, DataDescriptor descriptor, CacheState newState, String label) { - CacheState oldState = (oldEntry as DartEntry).getStateInLibrary(descriptor, _librarySource); + bool _writeStateDiffOn(StringBuffer buffer, bool needsSeparator, String label, + DataDescriptor descriptor, SourceEntry oldEntry) { + CacheState oldState = oldEntry.getState(descriptor); + CacheState newState = getState(descriptor); if (oldState != newState) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append(label); - builder.append(" = "); - builder.append(oldState); - builder.append(" -> "); - builder.append(newState); + buffer.write(label); + buffer.write(" = "); + buffer.write(oldState); + buffer.write(" -> "); + buffer.write(newState); return true; } return needsSeparator; } + + /** + * Write a textual representation of the state of the value described by the + * given [descriptor] to the given bugger, prefixed by the given [label] to + * the given [buffer]. + */ + void _writeStateOn(StringBuffer buffer, String label, DataDescriptor descriptor) { + CachedResult result = resultMap[descriptor]; + buffer.write("; "); + buffer.write(label); + buffer.write(" = "); + buffer.write(result == null ? "INVALID" : result.state); + } } /** @@ -13712,39 +12834,25 @@ abstract class SourceEntry { * The most recent time at which the state of the source matched the state * represented by this entry. */ - int _modificationTime = 0; - - /** - * A bit-encoding of boolean flags associated with this element. - */ - int _flags = 0; + int modificationTime = 0; /** * The exception that caused one or more values to have a state of * [CacheState.ERROR]. */ - CaughtException _exception; - - /** - * The state of the cached content. - */ - CacheState _contentState = CacheState.INVALID; - - /** - * The content of the source, or `null` if the content is not currently cached. - */ - String _content; + CaughtException exception; /** - * The state of the cached line information. + * A bit-encoding of boolean flags associated with this element. */ - CacheState _lineInfoState = CacheState.INVALID; + int _flags = 0; /** - * The line information computed for the source, or `null` if the line - * information is not currently cached. + * A table mapping data descriptors to the cached results for those + * descriptors. */ - LineInfo _lineInfo; + Map resultMap + = new HashMap(); /** * The data descriptor representing the contents of the source. @@ -13765,345 +12873,310 @@ abstract class SourceEntry { */ static int _EXPLICITLY_ADDED_FLAG = 0; + /** + * Return `true` if the source was explicitly added to the context or `false` + * if the source was implicitly added because it was referenced by another + * source. + */ + bool get explicitlyAdded => _getFlag(_EXPLICITLY_ADDED_FLAG); + + /** + * Set whether the source was explicitly added to the context to match the + * [explicitlyAdded] flag. + */ + void set explicitlyAdded(bool explicitlyAdded) { + _setFlag(_EXPLICITLY_ADDED_FLAG, explicitlyAdded); + } + /** * Fix the state of the [exception] to match the current state of the entry. */ void fixExceptionState() { - if (hasErrorState) { - if (_exception == null) { + if (hasErrorState()) { + if (exception == null) { // - // This code should never be reached, but is a fail-safe in case an exception is not - // recorded when it should be. + // This code should never be reached, but is a fail-safe in case an + // exception is not recorded when it should be. // - _exception = new CaughtException(new AnalysisException("State set to ERROR without setting an exception"), null); + String message = "State set to ERROR without setting an exception"; + exception = new CaughtException(new AnalysisException(message), null); } } else { - _exception = null; + exception = null; } } /** - * Return a textual representation of the difference between the old entry and this entry. The - * difference is represented as a sequence of fields whose value would change if the old entry - * were converted into the new entry. - * - * @param oldEntry the entry being diff'd with this entry - * @return a textual representation of the difference + * Return a textual representation of the difference between the [oldEntry] + * and this entry. The difference is represented as a sequence of fields whose + * value would change if the old entry were converted into the new entry. */ String getDiff(SourceEntry oldEntry) { - JavaStringBuilder builder = new JavaStringBuilder(); - writeDiffOn(builder, oldEntry); - return builder.toString(); + StringBuffer buffer = new StringBuffer(); + _writeDiffOn(buffer, oldEntry); + return buffer.toString(); } - /** - * Return the exception that caused one or more values to have a state of - * [CacheState.ERROR]. - */ - CaughtException get exception => _exception; - - /** - * Return `true` if the source was explicitly added to the context or `false` - * if the source was implicitly added because it was referenced by another - * source. - */ - bool get explicitlyAdded => getFlag(_EXPLICITLY_ADDED_FLAG); - - /** - * Return the kind of the source, or `null` if the kind is not currently - * cached. - */ - SourceKind get kind; - - /** - * Return the most recent time at which the state of the source matched the - * state represented by this entry. - */ - int get modificationTime => _modificationTime; - /** * Return the state of the data represented by the given [descriptor]. */ CacheState getState(DataDescriptor descriptor) { - if (identical(descriptor, SourceEntry.CONTENT)) { - return _contentState; - } else if (identical(descriptor, SourceEntry.LINE_INFO)) { - return _lineInfoState; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); + if (!_isValidDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); + } + CachedResult result = resultMap[descriptor]; + if (result == null) { + return CacheState.INVALID; } + return result.state; } /** * Return the value of the data represented by the given [descriptor], or - * `null` if the data represented by the descriptor is not in the cache. + * `null` if the data represented by the descriptor is not valid. */ - Object getValue(DataDescriptor descriptor) { - if (identical(descriptor, SourceEntry.CONTENT)) { - return _content; - } else if (identical(descriptor, SourceEntry.LINE_INFO)) { - return _lineInfo; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); + /**/ dynamic /*V*/ getValue(DataDescriptor/**/ descriptor) { + if (!_isValidDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); } + CachedResult result = resultMap[descriptor]; + if (result == null) { + return descriptor.defaultValue; + } + return result.value; } /** - * Invalidate all of the information associated with this source. + * Return `true` if the state of any data value is [CacheState.ERROR]. */ - void invalidateAllInformation() { - _content = null; - _contentState = _checkContentState(CacheState.INVALID); - _lineInfo = null; - _lineInfoState = CacheState.INVALID; + bool hasErrorState() { + for (CachedResult result in resultMap.values) { + if (result.state == CacheState.ERROR) { + return true; + } + } + return false; } /** - * Record that an error occurred while attempting to get the contents of the source represented by - * this entry. This will set the state of all information, including any resolution-based - * information, as being in error. - * - * @param exception the exception that shows where the error occurred + * Invalidate all of the information associated with this source. */ - void recordContentError(CaughtException exception) { - _content = null; - _contentState = CacheState.ERROR; - recordScanError(exception); + void invalidateAllInformation() { + setState(CONTENT, CacheState.INVALID); + setState(LINE_INFO, CacheState.INVALID); } /** - * Record that an error occurred while attempting to scan or parse the entry represented by this - * entry. This will set the state of all information, including any resolution-based information, - * as being in error. - * - * @param exception the exception that shows where the error occurred + * Return the kind of the source, or `null` if the kind is not currently + * cached. */ - void recordScanError(CaughtException exception) { - this.exception = exception; - _lineInfo = null; - _lineInfoState = CacheState.ERROR; - } + SourceKind get kind; /** - * Set whether the source was explicitly added to the context to match the - * given value. + * Record that an [exception] occurred while attempting to get the contents of + * the source represented by this entry. This will set the state of all + * information, including any resolution-based information, as being in error. */ - void set explicitlyAdded(bool explicitlyAdded) { - setFlag(_EXPLICITLY_ADDED_FLAG, explicitlyAdded); + void recordContentError(CaughtException exception) { + setState(CONTENT, CacheState.ERROR); + recordScanError(exception); } /** - * Set the most recent time at which the state of the source matched the state - * represented by this entry to the given time. + * Record that an [exception] occurred while attempting to scan or parse the + * entry represented by this entry. This will set the state of all + * information, including any resolution-based information, as being in error. */ - void set modificationTime(int time) { - _modificationTime = time; + void recordScanError(CaughtException exception) { + this.exception = exception; + setState(LINE_INFO, CacheState.ERROR); } /** - * Set the state of the data represented by the given descriptor to the given state. - * - * @param descriptor the descriptor representing the data whose state is to be set - * @param the new state of the data represented by the given descriptor + * Set the state of the data represented by the given [descriptor] to the + * given [state]. */ void setState(DataDescriptor descriptor, CacheState state) { - if (identical(descriptor, SourceEntry.CONTENT)) { - _content = updatedValue(state, _content, null); - _contentState = _checkContentState(state); - } else if (identical(descriptor, SourceEntry.LINE_INFO)) { - _lineInfo = updatedValue(state, _lineInfo, null); - _lineInfoState = state; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); + if (!_isValidDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); + } + if (state == CacheState.VALID) { + throw new ArgumentError("use setValue() to set the state to VALID"); + } + _validateStateChange(descriptor, state); + CachedResult result = resultMap.putIfAbsent( + descriptor, + () => new CachedResult(descriptor)); + result.state = state; + if (state != CacheState.IN_PROCESS) { + // + // If the state is in-process, we can leave the current value in the cache + // for any 'get' methods to access. + // + result.value = descriptor.defaultValue; } } /** - * Set the value of the data represented by the given descriptor to the given value. - * - * @param descriptor the descriptor representing the data whose value is to be set - * @param value the new value of the data represented by the given descriptor + * Set the value of the data represented by the given [descriptor] to the + * given [value]. */ - void setValue(DataDescriptor descriptor, Object value) { - if (identical(descriptor, SourceEntry.CONTENT)) { - _content = value as String; - _contentState = _checkContentState(CacheState.VALID); - } else if (identical(descriptor, SourceEntry.LINE_INFO)) { - _lineInfo = value as LineInfo; - _lineInfoState = CacheState.VALID; - } else { - throw new IllegalArgumentException("Invalid descriptor: ${descriptor}"); + void setValue(DataDescriptor/**/ descriptor, dynamic /*V*/ value) { + if (!_isValidDescriptor(descriptor)) { + throw new ArgumentError("Invalid descriptor: $descriptor"); } + _validateStateChange(descriptor, CacheState.VALID); + CachedResult result = resultMap.putIfAbsent( + descriptor, + () => new CachedResult(descriptor)); + result.state = CacheState.VALID; + result.value = value == null ? descriptor.defaultValue : value; } @override String toString() { - JavaStringBuilder builder = new JavaStringBuilder(); - writeOn(builder); - return builder.toString(); + StringBuffer buffer = new StringBuffer(); + _writeOn(buffer); + return buffer.toString(); } /** - * Set the value of all of the flags with the given indexes to false. - * - * @param indexes the indexes of the flags whose value is to be set to false + * Set the value of all of the flags with the given [indexes] to false. */ - void clearFlags(List indexes) { + void _clearFlags(List indexes) { for (int i = 0; i < indexes.length; i++) { _flags = BooleanArray.set(_flags, indexes[i], false); } } /** - * Return the value of the flag with the given index. - * - * @param index the index of the flag whose value is to be returned - * @return the value of the flag with the given index + * Flush the value of the data described by the [descriptor]. */ - bool getFlag(int index) => BooleanArray.get(_flags, index); + void _flush(DataDescriptor descriptor) { + CachedResult result = resultMap[descriptor]; + if (result != null && result.state == CacheState.VALID) { + _validateStateChange(descriptor, CacheState.FLUSHED); + result.state = CacheState.FLUSHED; + result.value = descriptor.defaultValue; + } + } /** - * Return `true` if the state of any data value is [CacheState.ERROR]. - * - * @return `true` if the state of any data value is [CacheState.ERROR] + * Return the value of the flag with the given [index]. */ - bool get hasErrorState => _contentState == CacheState.ERROR || _lineInfoState == CacheState.ERROR; + bool _getFlag(int index) => BooleanArray.get(_flags, index); /** - * Set the exception that caused one or more values to have a state of - * [CacheState.ERROR] to the given [exception]. + * Return `true` if the [descriptor] is valid for this entry. */ - void set exception(CaughtException exception) { - if (exception == null) { - throw new IllegalArgumentException("exception cannot be null"); - } - this._exception = exception; + bool _isValidDescriptor(DataDescriptor descriptor) { + return descriptor == CONTENT + || descriptor == LINE_INFO; } /** - * Set the value of the flag with the given index to the given value. - * - * @param index the index of the flag whose value is to be returned - * @param value the value of the flag with the given index + * Set the value of the flag with the given [index] to the given [value]. */ - void setFlag(int index, bool value) { + void _setFlag(int index, bool value) { _flags = BooleanArray.set(_flags, index, value); } /** - * Given that some data is being transitioned to the given state, return the value that should be - * kept in the cache. - * - * @param state the state to which the data is being transitioned - * @param currentValue the value of the data before the transition - * @param defaultValue the value to be used if the current value is to be removed from the cache - * @return the value of the data that should be kept in the cache - */ - Object updatedValue(CacheState state, Object currentValue, Object defaultValue) { - if (state == CacheState.VALID) { - throw new IllegalArgumentException("Use setValue() to set the state to VALID"); - } else if (state == CacheState.IN_PROCESS) { - // - // We can leave the current value in the cache for any 'get' methods to access. - // - return currentValue; - } - return defaultValue; - } - - /** - * Write a textual representation of the difference between the old entry and this entry to the - * given string builder. - * - * @param builder the string builder to which the difference is to be written - * @param oldEntry the entry that was replaced by this entry - * @return `true` if some difference was written + * Write a textual representation of the difference between the [oldEntry] and + * this entry to the given string [buffer]. Return `true` if some difference + * was written. */ - bool writeDiffOn(JavaStringBuilder builder, SourceEntry oldEntry) { + bool _writeDiffOn(StringBuffer buffer, SourceEntry oldEntry) { bool needsSeparator = false; CaughtException oldException = oldEntry.exception; - if (!identical(oldException, _exception)) { - builder.append("exception = "); - builder.append(oldException.runtimeType); - builder.append(" -> "); - builder.append(_exception.runtimeType); + if (!identical(oldException, exception)) { + buffer.write("exception = "); + buffer.write(oldException.runtimeType); + buffer.write(" -> "); + buffer.write(exception.runtimeType); needsSeparator = true; } int oldModificationTime = oldEntry.modificationTime; - if (oldModificationTime != _modificationTime) { + if (oldModificationTime != modificationTime) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append("time = "); - builder.append(oldModificationTime); - builder.append(" -> "); - builder.append(_modificationTime); + buffer.write("time = "); + buffer.write(oldModificationTime); + buffer.write(" -> "); + buffer.write(modificationTime); needsSeparator = true; } - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, SourceEntry.CONTENT, "content"); - needsSeparator = writeStateDiffOn(builder, needsSeparator, oldEntry, SourceEntry.LINE_INFO, "lineInfo"); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "content", CONTENT, oldEntry); + needsSeparator = _writeStateDiffOn(buffer, needsSeparator, "lineInfo", LINE_INFO, oldEntry); return needsSeparator; } /** - * Write a textual representation of this entry to the given builder. The result will only be used - * for debugging purposes. - * - * @param builder the builder to which the text should be written + * Write a textual representation of this entry to the given [buffer]. The + * result should only be used for debugging purposes. */ - void writeOn(JavaStringBuilder builder) { - builder.append("time = "); - builder.append(_modificationTime); - builder.append("; content = "); - builder.append(_contentState); - builder.append("; lineInfo = "); - builder.append(_lineInfoState); + void _writeOn(StringBuffer buffer) { + buffer.write("time = "); + buffer.write(modificationTime); + _writeStateOn(buffer, "content", CONTENT); + _writeStateOn(buffer, "lineInfo", LINE_INFO); } /** - * Write a textual representation of the difference between the state of the specified data - * between the old entry and this entry to the given string builder. - * - * @param builder the string builder to which the difference is to be written - * @param needsSeparator `true` if any data that is written - * @param oldEntry the entry that was replaced by this entry - * @param descriptor the descriptor defining the data whose state is being compared - * @param label the label used to describe the state - * @return `true` if some difference was written + * Write a textual representation of the difference between the state of the + * value described by the given [descriptor] between the [oldEntry] and this + * entry to the given [buffer]. Return `true` if some difference was written. */ - bool writeStateDiffOn(JavaStringBuilder builder, bool needsSeparator, SourceEntry oldEntry, DataDescriptor descriptor, String label) { + bool _writeStateDiffOn(StringBuffer buffer, bool needsSeparator, String label, + DataDescriptor descriptor, SourceEntry oldEntry) { CacheState oldState = oldEntry.getState(descriptor); CacheState newState = getState(descriptor); if (oldState != newState) { if (needsSeparator) { - builder.append("; "); + buffer.write("; "); } - builder.append(label); - builder.append(" = "); - builder.append(oldState); - builder.append(" -> "); - builder.append(newState); + buffer.write(label); + buffer.write(" = "); + buffer.write(oldState); + buffer.write(" -> "); + buffer.write(newState); return true; } return needsSeparator; } /** - * If the state is changing from ERROR to anything else, capture the information. This is an - * attempt to discover the underlying cause of a long-standing bug. - * - * @param newState the new state of the content - * @return the new state of the content + * Write a textual representation of the state of the value described by the + * given [descriptor] to the given bugger, prefixed by the given [label] to + * the given [buffer]. + */ + void _writeStateOn(StringBuffer buffer, String label, DataDescriptor descriptor) { + CachedResult result = resultMap[descriptor]; + buffer.write("; "); + buffer.write(label); + buffer.write(" = "); + buffer.write(result == null ? "INVALID" : result.state); + } + + /** + * If the state of the value described by the given [descriptor] is changing + * from ERROR to anything else, capture the information. This is an attempt to + * discover the underlying cause of a long-standing bug. */ - CacheState _checkContentState(CacheState newState) { - if (_contentState == CacheState.ERROR) { - InstrumentationBuilder builder = Instrumentation.builder2("SourceEntryImpl-checkContentState"); - builder.data3("message", "contentState changing from ${_contentState} to ${newState}"); + void _validateStateChange(DataDescriptor descriptor, CacheState newState) { + if (descriptor != CONTENT) { + return; + } + CachedResult result = resultMap[CONTENT]; + if (result != null && result.state == CacheState.ERROR) { + String message = "contentState changing from ${result.state} to ${newState}"; + InstrumentationBuilder builder = Instrumentation.builder2("SourceEntry-validateStateChange"); + builder.data3("message", message); //builder.data("source", source.getFullName()); - builder.record(new CaughtException(new AnalysisException(), null)); + builder.record(new CaughtException(new AnalysisException(message), null)); builder.log(); } - return newState; } } diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart index f7e2a16946dd..459253e537cb 100644 --- a/pkg/analyzer/test/generated/engine_test.dart +++ b/pkg/analyzer/test/generated/engine_test.dart @@ -543,7 +543,7 @@ class AnalysisContextImplTest extends EngineTestCase { CompilationUnit resolvedUnit = _context.computeResolvableCompilationUnit(source); JUnitTestCase.assertNotNull(resolvedUnit); - JUnitTestCase.assertNotSame(parsedUnit, resolvedUnit); + JUnitTestCase.assertSame(parsedUnit, resolvedUnit); } void test_dispose() { @@ -2200,19 +2200,20 @@ class DartEntryTest extends EngineTestCase { } void test_getResolvableCompilationUnit_parsed_accessed() { - String importUri = "f1.dart"; + Source librarySource = new TestSource("/lib.dart"); + String importUri = "/f1.dart"; Source importSource = new TestSource(importUri); ImportDirective importDirective = AstFactory.importDirective3(importUri, null, []); importDirective.source = importSource; importDirective.uriContent = importUri; - String exportUri = "f2.dart"; + String exportUri = "/f2.dart"; Source exportSource = new TestSource(exportUri); ExportDirective exportDirective = AstFactory.exportDirective2(exportUri, []); exportDirective.source = exportSource; exportDirective.uriContent = exportUri; - String partUri = "f3.dart"; + String partUri = "/f3.dart"; Source partSource = new TestSource(partUri); PartDirective partDirective = AstFactory.partDirective2(partUri); partDirective.source = partSource; @@ -2223,6 +2224,9 @@ class DartEntryTest extends EngineTestCase { entry.setValue(DartEntry.PARSED_UNIT, unit); entry.getValue(DartEntry.PARSED_UNIT); CompilationUnit result = entry.resolvableCompilationUnit; + JUnitTestCase.assertSame(unit, result); + entry.setValueInLibrary(DartEntry.RESOLVED_UNIT, librarySource, unit); + result = entry.resolvableCompilationUnit; JUnitTestCase.assertNotSame(unit, result); NodeList directives = result.directives; ImportDirective resultImportDirective = directives[0] as ImportDirective; @@ -2287,7 +2291,7 @@ class DartEntryTest extends EngineTestCase { try { entry.getStateInLibrary(DartEntry.ELEMENT, new TestSource()); JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } @@ -2298,7 +2302,7 @@ class DartEntryTest extends EngineTestCase { entry.getState(DartEntry.RESOLUTION_ERRORS); JUnitTestCase.fail( "Expected IllegalArgumentException for RESOLUTION_ERRORS"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } @@ -2309,17 +2313,31 @@ class DartEntryTest extends EngineTestCase { entry.getState(DartEntry.VERIFICATION_ERRORS); JUnitTestCase.fail( "Expected IllegalArgumentException for VERIFICATION_ERRORS"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } + void test_getValue_containingLibraries() { + Source testSource = new TestSource(); + DartEntry entry = new DartEntry(); + List value = entry.containingLibraries; + EngineTestCase.assertLength(0, value); + entry.addContainingLibrary(testSource); + value = entry.containingLibraries; + EngineTestCase.assertLength(1, value); + JUnitTestCase.assertEquals(testSource, value[0]); + entry.removeContainingLibrary(testSource); + value = entry.containingLibraries; + EngineTestCase.assertLength(0, value); + } + void test_getValueInLibrary_invalid_element() { DartEntry entry = new DartEntry(); try { entry.getValueInLibrary(DartEntry.ELEMENT, new TestSource()); JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } @@ -2344,32 +2362,18 @@ class DartEntryTest extends EngineTestCase { try { entry.getValueInLibrary(DartEntry.ELEMENT, source3); JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } - void test_getValue_containingLibraries() { - Source testSource = new TestSource(); - DartEntry entry = new DartEntry(); - List value = entry.getValue(DartEntry.CONTAINING_LIBRARIES); - EngineTestCase.assertLength(0, value); - entry.addContainingLibrary(testSource); - value = entry.getValue(DartEntry.CONTAINING_LIBRARIES); - EngineTestCase.assertLength(1, value); - JUnitTestCase.assertEquals(testSource, value[0]); - entry.removeContainingLibrary(testSource); - value = entry.getValue(DartEntry.CONTAINING_LIBRARIES); - EngineTestCase.assertLength(0, value); - } - void test_getValue_invalid_resolutionErrors() { DartEntry entry = new DartEntry(); try { entry.getValue(DartEntry.RESOLUTION_ERRORS); JUnitTestCase.fail( "Expected IllegalArgumentException for RESOLUTION_ERRORS"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { } } @@ -2379,7 +2383,7 @@ class DartEntryTest extends EngineTestCase { entry.getValue(DartEntry.VERIFICATION_ERRORS); JUnitTestCase.fail( "Expected IllegalArgumentException for VERIFICATION_ERRORS"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } @@ -2826,20 +2830,6 @@ class DartEntryTest extends EngineTestCase { // assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source)); } - void test_recordParseInProcess() { - DartEntry entry = new DartEntry(); - entry.recordParseInProcess(); - JUnitTestCase.assertSame( - CacheState.IN_PROCESS, - entry.getState(DartEntry.PARSE_ERRORS)); - JUnitTestCase.assertSame( - CacheState.IN_PROCESS, - entry.getState(DartEntry.PARSED_UNIT)); - JUnitTestCase.assertSame( - CacheState.IN_PROCESS, - entry.getState(DartEntry.SOURCE_KIND)); - } - void test_recordResolutionError() { // Source source = new TestSource(); DartEntry entry = new DartEntry(); @@ -3020,20 +3010,6 @@ class DartEntryTest extends EngineTestCase { // assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source)); } - void test_recordScanInProcess() { - DartEntry entry = new DartEntry(); - entry.recordScanInProcess(); - JUnitTestCase.assertSame( - CacheState.IN_PROCESS, - entry.getState(SourceEntry.LINE_INFO)); - JUnitTestCase.assertSame( - CacheState.IN_PROCESS, - entry.getState(DartEntry.SCAN_ERRORS)); - JUnitTestCase.assertSame( - CacheState.IN_PROCESS, - entry.getState(DartEntry.TOKEN_STREAM)); - } - void test_recordVerificationErrorInLibrary() { // TODO(brianwilkerson) This test should set the state for two libraries, // record an error in one library, then verify that the data for the other @@ -3194,7 +3170,7 @@ class DartEntryTest extends EngineTestCase { try { entry.setStateInLibrary(DartEntry.ELEMENT, null, CacheState.FLUSHED); JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } @@ -3205,7 +3181,7 @@ class DartEntryTest extends EngineTestCase { entry.setState(DartEntry.RESOLUTION_ERRORS, CacheState.FLUSHED); JUnitTestCase.fail( "Expected IllegalArgumentException for RESOLUTION_ERRORS"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected } } @@ -3215,8 +3191,8 @@ class DartEntryTest extends EngineTestCase { try { entry.setState(SourceEntry.LINE_INFO, CacheState.VALID); JUnitTestCase.fail( - "Expected IllegalArgumentException for a state of VALID"); - } on IllegalArgumentException catch (exception) { + "Expected ArgumentError for a state of VALID"); + } on ArgumentError catch (exception) { } } @@ -3226,10 +3202,10 @@ class DartEntryTest extends EngineTestCase { entry.setState(DartEntry.VERIFICATION_ERRORS, CacheState.FLUSHED); JUnitTestCase.fail( "Expected IllegalArgumentException for VERIFICATION_ERRORS"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { // Expected - } - } + } + } void test_setState_isClient() { state2 = DartEntry.IS_CLIENT; @@ -3935,7 +3911,7 @@ class HtmlEntryTest extends EngineTestCase { entry.setValue(DartEntry.ELEMENT, null); JUnitTestCase.fail( "Expected IllegalArgumentException for DartEntry.ELEMENT"); - } on IllegalArgumentException catch (exception) { + } on ArgumentError catch (exception) { } } @@ -3981,6 +3957,8 @@ class HtmlEntryTest extends EngineTestCase { HtmlEntry _entryWithValidState() { HtmlEntry entry = new HtmlEntry(); + entry.setValue(HtmlEntry.ANGULAR_APPLICATION, null); + entry.setValue(HtmlEntry.ANGULAR_COMPONENT, null); entry.setValue(HtmlEntry.ANGULAR_ERRORS, null); entry.setValue(HtmlEntry.ELEMENT, null); entry.setValue(HtmlEntry.HINTS, null); From 1bebfa6b586b39e32ecac6570e0ce2be92bcd003 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Thu, 16 Oct 2014 15:18:43 +0000 Subject: [PATCH 10/91] It's not IE, but chrome that was slow. Review URL: https://codereview.chromium.org//657393002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41152 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/try/try.status | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/try/try.status b/tests/try/try.status index cebb95e90bae..2e5203b5b789 100644 --- a/tests/try/try.status +++ b/tests/try/try.status @@ -31,5 +31,5 @@ poi/serialize_test: SkipByDesign # Uses dart:io. [ $compiler == dart2js ] poi/*: Skip # http://dartbug.com/20031 -[ $runtime == ff || $runtime == ie10 || $checked ] +[ $runtime == ff || $runtime == chrome || $checked ] web/incremental_compilation_update_test: Slow, Pass From 8d47e699d98fa67b302a5d2a04b939ffcd27fe08 Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Thu, 16 Oct 2014 16:46:45 +0000 Subject: [PATCH 11/91] filter void methods when suggesting expression BUG= R=scheglov@google.com Review URL: https://codereview.chromium.org//658053002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41153 260f80e4-7a28-3924-810f-c04153c831b5 --- .../completion/imported_computer.dart | 51 ++++++++++--------- .../services/completion/local_computer.dart | 34 ++++++++++++- .../completion/completion_test_util.dart | 37 +++++++++++--- 3 files changed, 92 insertions(+), 30 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/completion/imported_computer.dart b/pkg/analysis_server/lib/src/services/completion/imported_computer.dart index e5a50724700e..f02ec34b4994 100644 --- a/pkg/analysis_server/lib/src/services/completion/imported_computer.dart +++ b/pkg/analysis_server/lib/src/services/completion/imported_computer.dart @@ -58,7 +58,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { // InvocationComputer makes selector suggestions Expression target = node.target; if (target != null && request.offset <= target.end) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } return new Future.value(false); } @@ -80,7 +80,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { @override Future visitExpression(Expression node) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } @override @@ -109,7 +109,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { if (leftParen != null && request.offset >= leftParen.end) { Token rightParen = node.rightParenthesis; if (rightParen == null || request.offset <= rightParen.offset) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } } return new Future.value(false); @@ -119,7 +119,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { Future visitInterpolationExpression(InterpolationExpression node) { Expression expression = node.expression; if (expression is SimpleIdentifier) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } return new Future.value(false); } @@ -128,7 +128,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { Future visitMethodInvocation(MethodInvocation node) { Token period = node.period; if (period == null || request.offset <= period.offset) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } return new Future.value(false); } @@ -144,7 +144,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { // InvocationComputer makes selector suggestions Token period = node.period; if (period != null && request.offset <= period.offset) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } return new Future.value(false); } @@ -155,7 +155,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { // InvocationComputer makes property name suggestions var operator = node.operator; if (operator != null && request.offset < operator.offset) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } return new Future.value(false); } @@ -180,7 +180,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { Token equals = node.equals; // Make suggestions for the RHS of a variable declaration if (equals != null && request.offset >= equals.end) { - return _addImportedElementSuggestions(node); + return _addImportedElementSuggestions(node, excludeVoidReturn: true); } return new Future.value(false); } @@ -196,12 +196,21 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { return new Future.value(false); } - void _addElementSuggestion(Element element, CompletionRelevance relevance) { + void _addElementSuggestion(Element element, bool typesOnly, bool excludeVoidReturn, CompletionRelevance relevance) { if (element is ExecutableElement) { if (element.isOperator) { return; } + if (excludeVoidReturn) { + DartType returnType = element.returnType; + if (returnType != null && returnType.isVoid) { + return; + } + } + } + if (typesOnly && element is! ClassElement) { + return; } CompletionSuggestionKind kind = @@ -237,14 +246,14 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { request.suggestions.add(suggestion); } - void _addElementSuggestions(List elements) { + void _addElementSuggestions(List elements, bool typesOnly, bool excludeVoidReturn) { elements.forEach((Element elem) { - _addElementSuggestion(elem, CompletionRelevance.DEFAULT); + _addElementSuggestion(elem, typesOnly, excludeVoidReturn, CompletionRelevance.DEFAULT); }); } Future _addImportedElementSuggestions(AstNode node, {bool typesOnly: - false}) { + false, bool excludeVoidReturn: false}) { // Exclude elements from local library // because they are provided by LocalComputer @@ -264,10 +273,8 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { importNamespace.definedNames.forEach((String name, Element elem) { if (elem is ClassElement) { classMap[name] = elem; - _addElementSuggestion(elem, CompletionRelevance.DEFAULT); - } else if (!typesOnly) { - _addElementSuggestion(elem, CompletionRelevance.DEFAULT); } + _addElementSuggestion(elem, typesOnly, excludeVoidReturn, CompletionRelevance.DEFAULT); }); } else { // Exclude elements from prefixed imports @@ -287,10 +294,8 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { coreNamespace.definedNames.forEach((String name, Element elem) { if (elem is ClassElement) { classMap[name] = elem; - _addElementSuggestion(elem, CompletionRelevance.DEFAULT); - } else if (!typesOnly) { - _addElementSuggestion(elem, CompletionRelevance.DEFAULT); } + _addElementSuggestion(elem, typesOnly, excludeVoidReturn, CompletionRelevance.DEFAULT); }); // Build a list of inherited types that are imported @@ -308,12 +313,12 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { String name = inheritedTypes.removeLast(); ClassElement elem = classMap[name]; if (visited.add(name) && elem != null) { - _addElementSuggestions(elem.accessors); - _addElementSuggestions(elem.methods); + _addElementSuggestions(elem.accessors, typesOnly, excludeVoidReturn); + _addElementSuggestions(elem.methods, typesOnly, excludeVoidReturn); elem.allSupertypes.forEach((InterfaceType type) { if (visited.add(type.name)) { - _addElementSuggestions(type.accessors); - _addElementSuggestions(type.methods); + _addElementSuggestions(type.accessors, typesOnly, excludeVoidReturn); + _addElementSuggestions(type.methods, typesOnly, excludeVoidReturn); } }); } @@ -334,7 +339,7 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { !excludedLibs.contains(element.library) && !completionSet.contains(element.displayName)) { if (!typesOnly || element is ClassElement) { - _addElementSuggestion(element, CompletionRelevance.LOW); + _addElementSuggestion(element, typesOnly, excludeVoidReturn, CompletionRelevance.LOW); } } } diff --git a/pkg/analysis_server/lib/src/services/completion/local_computer.dart b/pkg/analysis_server/lib/src/services/completion/local_computer.dart index fd0a63baef77..8d9d2d23aaf0 100644 --- a/pkg/analysis_server/lib/src/services/completion/local_computer.dart +++ b/pkg/analysis_server/lib/src/services/completion/local_computer.dart @@ -59,8 +59,11 @@ class _LocalVisitor extends GeneralizingAstVisitor { final DartCompletionRequest request; bool typesOnly = false; + bool excludeVoidReturn; - _LocalVisitor(this.request); + _LocalVisitor(this.request) { + excludeVoidReturn = _computeExcludeVoidReturn(request.node); + } @override visitBlock(Block node) { @@ -312,6 +315,9 @@ class _LocalVisitor extends GeneralizingAstVisitor { if (typesOnly) { return; } + if (excludeVoidReturn && _isVoid(declaration.returnType)) { + return; + } CompletionSuggestion suggestion = _addSuggestion( declaration.name, CompletionSuggestionKind.FUNCTION, @@ -353,9 +359,15 @@ class _LocalVisitor extends GeneralizingAstVisitor { kind = protocol.ElementKind.GETTER; csKind = CompletionSuggestionKind.GETTER; } else if (classMbr.isSetter) { + if (excludeVoidReturn) { + return; + } kind = protocol.ElementKind.SETTER; csKind = CompletionSuggestionKind.SETTER; } else { + if (excludeVoidReturn && _isVoid(classMbr.returnType)) { + return; + } kind = protocol.ElementKind.METHOD; csKind = CompletionSuggestionKind.METHOD; } @@ -468,6 +480,16 @@ class _LocalVisitor extends GeneralizingAstVisitor { } } + bool _computeExcludeVoidReturn(AstNode node) { + if (node is Block) { + return false; + } else if (node is SimpleIdentifier) { + return node.parent is ExpressionStatement ? false : true; + } else { + return true; + } + } + /** * Create a new protocol Element for inclusion in a completion suggestion. */ @@ -493,6 +515,16 @@ class _LocalVisitor extends GeneralizingAstVisitor { metadata.any( (Annotation a) => a.name is SimpleIdentifier && a.name.name == 'deprecated'); + bool _isVoid(TypeName returnType) { + if (returnType != null) { + Identifier id = returnType.name; + if (id != null && id.name == 'void') { + return true; + } + } + return false; + } + /** * Return the name for the given type. */ diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart index 1174254c4019..b7101ca91d4e 100644 --- a/pkg/analysis_server/test/services/completion/completion_test_util.dart +++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart @@ -962,12 +962,15 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { class _B { }'''); addTestSource(''' import "/testA.dart"; - class C {foo(){O^}}'''); + class C {foo(){O^} void bar() {}}'''); computeFast(); return computeFull(true).then((_) { assertSuggestImportedClass('A'); assertSuggestImportedFunction('F1', '_B', false); assertSuggestLocalClass('C'); + assertSuggestLocalMethod('foo', 'C', null); + assertSuggestLocalMethod('bar', 'C', 'void'); + assertSuggestLocalClass('C'); assertNotSuggested('x'); assertNotSuggested('_B'); }); @@ -1074,22 +1077,29 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { test_ForStatement_updaters_prefix_expression() { // SimpleIdentifier PrefixExpression ForStatement - addTestSource('main() {for (int index = 0; index < 10; ++i^)}'); + addTestSource(''' + void bar() { } + main() {for (int index = 0; index < 10; ++i^)}'''); computeFast(); return computeFull(true).then((_) { assertSuggestLocalVariable('index', 'int'); + assertSuggestLocalFunction('main', null); + assertNotSuggested('bar'); }); } test_FunctionExpression_body_function() { // Block BlockFunctionBody FunctionExpression - addTestSource('String foo(List args) {x.then((R b) {^});}'); + addTestSource(''' + void bar() { } + String foo(List args) {x.then((R b) {^});}'''); computeFast(); return computeFull(true).then((_) { var f = assertSuggestLocalFunction('foo', 'String', false); if (f != null) { expect(f.element.isPrivate, isFalse); } + assertSuggestLocalFunction('bar', 'void'); assertSuggestParameter('args', 'List'); assertSuggestParameter('b', 'R'); assertSuggestImportedClass('Object'); @@ -1215,12 +1225,16 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { test_IsExpression_target() { // IfStatement Block BlockFunctionBody addTestSource(''' + foo() { } + void bar() { } class A {int x; int y() => 0;} main(){var a; if (^ is A)}'''); computeFast(); return computeFull(true).then((_) { assertSuggestLocalVariable('a', null); assertSuggestLocalFunction('main', null); + assertSuggestLocalFunction('foo', null); + assertNotSuggested('bar'); assertSuggestLocalClass('A'); assertSuggestImportedClass('Object'); }); @@ -1314,9 +1328,14 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { test_MethodDeclaration_parameters_positional() { // Block BlockFunctionBody MethodDeclaration - addTestSource('class A {Z a(X x, [int y=1]) {^}}'); + addTestSource(''' + foo() { } + void bar() { } + class A {Z a(X x, [int y=1]) {^}}'''); computeFast(); return computeFull(true).then((_) { + assertSuggestLocalFunction('foo', null); + assertSuggestLocalFunction('bar', 'void'); assertSuggestLocalMethod('a', 'A', 'Z'); assertSuggestParameter('x', 'X'); assertSuggestParameter('y', 'int'); @@ -1456,7 +1475,6 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { computeFast(); return computeFull(true).then((_) { assertSuggestInvocationGetter('length', 'int'); - assertNotSuggested('=='); assertNotSuggested('A'); assertNotSuggested('a'); assertNotSuggested('Object'); @@ -1544,16 +1562,23 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { // VariableDeclarationStatement addSource('/testB.dart', ''' lib B; - foo() { } + foo1() { } + void bar1() { } class _B { } class X {X.c(); X._d(); z() {}}'''); addTestSource(''' import "/testB.dart"; + foo2() { } + void bar2() { } class Y {Y.c(); Y._d(); z() {}} class C {bar(){var f; {var x;} var e = ^ var g}}'''); computeFast(); return computeFull(true).then((_) { assertSuggestImportedClass('X'); + assertSuggestImportedFunction('foo1', null); + assertNotSuggested('bar1'); + assertSuggestLocalFunction('foo2', null); + assertNotSuggested('bar2'); assertNotSuggested('_B'); assertSuggestLocalClass('Y'); assertSuggestLocalClass('C'); From 5b9f0179922de04bc04f7e1c6717e758b0b90277 Mon Sep 17 00:00:00 2001 From: "srdjan@google.com" Date: Thu, 16 Oct 2014 17:08:22 +0000 Subject: [PATCH 12/91] Fix issue 20133: do not crash if debug port is illegal. R=asiva@google.com Review URL: https://codereview.chromium.org//657213002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41155 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/bin/dbg_connection.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/runtime/bin/dbg_connection.cc b/runtime/bin/dbg_connection.cc index 80e4558edbb9..a63cf44afc5b 100644 --- a/runtime/bin/dbg_connection.cc +++ b/runtime/bin/dbg_connection.cc @@ -331,6 +331,12 @@ int DebuggerConnectionHandler::StartHandler(const char* address, listener_fd_ = ServerSocket::CreateBindListen( addresses->GetAt(0)->addr(), port_number, 1); delete addresses; + if (listener_fd_ < 0) { + fprintf(stderr, "%s", "Could not initialize debug socket\n"); + fflush(stderr); + exit(255); + } + port_number = Socket::GetPort(listener_fd_); DebuggerConnectionImpl::StartHandler(port_number); return port_number; From 3dbcfcca7aae3cf84340f2e493bb1ccb3b33098c Mon Sep 17 00:00:00 2001 From: "srdjan@google.com" Date: Thu, 16 Oct 2014 17:13:01 +0000 Subject: [PATCH 13/91] Fix issue 21159: prevent endless inlining of field dispatchers. Review URL: https://codereview.chromium.org//659793003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41156 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/flow_graph_inliner.cc | 6 +++--- tests/language/isssue_21159.dart | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 tests/language/isssue_21159.dart diff --git a/runtime/vm/flow_graph_inliner.cc b/runtime/vm/flow_graph_inliner.cc index 6e5ae690f844..848cbfd2d3c7 100644 --- a/runtime/vm/flow_graph_inliner.cc +++ b/runtime/vm/flow_graph_inliner.cc @@ -47,8 +47,7 @@ DEFINE_FLAG(int, inlining_constant_arguments_size_threshold, 60, DEFINE_FLAG(int, inlining_hotness, 10, "Inline only hotter calls, in percents (0 .. 100); " "default 10%: calls above-equal 10% of max-count are inlined."); -DEFINE_FLAG(bool, inline_recursive, true, - "Inline recursive calls."); +DEFINE_FLAG(bool, inline_recursive, false, "Inline recursive calls."); DEFINE_FLAG(int, max_inlined_per_depth, 500, "Max. number of inlined calls per depth"); DEFINE_FLAG(bool, print_inlining_tree, false, "Print inlining tree"); @@ -764,11 +763,12 @@ class CallSiteInliner : public ValueObject { &call_data->caller, &function, call_data->call); return false; } - if (function.IsInvokeFieldDispatcher() || function.IsNoSuchMethodDispatcher()) { // Append call sites to the currently processed list so that dispatcher // methods get inlined regardless of the current depth. + // Need a throttling mechanism for recursive inlining. + ASSERT(!FLAG_inline_recursive); inlining_call_sites_->FindCallSites(callee_graph, 0, &inlined_info_); diff --git a/tests/language/isssue_21159.dart b/tests/language/isssue_21159.dart new file mode 100644 index 000000000000..2d2b6c858ce7 --- /dev/null +++ b/tests/language/isssue_21159.dart @@ -0,0 +1,11 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +class C { + get call => this; +} + +main() { + new C()(); +} From dd794e0d029719b81571b413017ead5774b37b27 Mon Sep 17 00:00:00 2001 From: "brianwilkerson@google.com" Date: Thu, 16 Oct 2014 18:08:25 +0000 Subject: [PATCH 14/91] Minor cleanup R=scheglov@google.com Review URL: https://codereview.chromium.org//660053002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41158 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/lib/src/generated/engine.dart | 57 +++++++++++++--------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart index f95cd633cd68..f821825bfb7c 100644 --- a/pkg/analyzer/lib/src/generated/engine.dart +++ b/pkg/analyzer/lib/src/generated/engine.dart @@ -11903,8 +11903,9 @@ class ResolutionState { Source _librarySource; /** - * A table mapping data descriptors to the cached results for those - * descriptors. + * A table mapping descriptors to the cached results for those descriptors. + * If there is no entry for a given descriptor then the state is implicitly + * [CacheState.INVALID] and the value is implicitly the default value. */ Map resultMap = new HashMap(); @@ -12027,16 +12028,20 @@ class ResolutionState { if (state == CacheState.VALID) { throw new ArgumentError("use setValue() to set the state to VALID"); } - CachedResult result = resultMap.putIfAbsent( - descriptor, - () => new CachedResult(descriptor)); - result.state = state; - if (state != CacheState.IN_PROCESS) { - // - // If the state is in-process, we can leave the current value in the cache - // for any 'get' methods to access. - // - result.value = descriptor.defaultValue; + if (state == CacheState.INVALID) { + resultMap.remove(descriptor); + } else { + CachedResult result = resultMap.putIfAbsent( + descriptor, + () => new CachedResult(descriptor)); + result.state = state; + if (state != CacheState.IN_PROCESS) { + // + // If the state is in-process, we can leave the current value in the cache + // for any 'get' methods to access. + // + result.value = descriptor.defaultValue; + } } } @@ -12132,7 +12137,7 @@ class ResolutionState { buffer.write("; "); buffer.write(label); buffer.write(" = "); - buffer.write(result == null ? "INVALID" : result.state); + buffer.write(result == null ? CacheState.INVALID : result.state); } } @@ -13004,16 +13009,20 @@ abstract class SourceEntry { throw new ArgumentError("use setValue() to set the state to VALID"); } _validateStateChange(descriptor, state); - CachedResult result = resultMap.putIfAbsent( - descriptor, - () => new CachedResult(descriptor)); - result.state = state; - if (state != CacheState.IN_PROCESS) { - // - // If the state is in-process, we can leave the current value in the cache - // for any 'get' methods to access. - // - result.value = descriptor.defaultValue; + if (state == CacheState.INVALID) { + resultMap.remove(descriptor); + } else { + CachedResult result = resultMap.putIfAbsent( + descriptor, + () => new CachedResult(descriptor)); + result.state = state; + if (state != CacheState.IN_PROCESS) { + // + // If the state is in-process, we can leave the current value in the cache + // for any 'get' methods to access. + // + result.value = descriptor.defaultValue; + } } } @@ -13156,7 +13165,7 @@ abstract class SourceEntry { buffer.write("; "); buffer.write(label); buffer.write(" = "); - buffer.write(result == null ? "INVALID" : result.state); + buffer.write(result == null ? CacheState.INVALID : result.state); } /** From 582b276b6f4ef8595ee84448d95da95a2f1782f9 Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Thu, 16 Oct 2014 21:25:46 +0000 Subject: [PATCH 15/91] filter invalid method invocation suggestions and filter _ from local suggestions BUG= R=scheglov@google.com Review URL: https://codereview.chromium.org//651443006 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41159 260f80e4-7a28-3924-810f-c04153c831b5 --- .../services/completion/local_computer.dart | 29 +++++++++++---- .../completion/completion_test_util.dart | 36 ++++++++++++++++++- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/completion/local_computer.dart b/pkg/analysis_server/lib/src/services/completion/local_computer.dart index 8d9d2d23aaf0..3fc11ca0b02e 100644 --- a/pkg/analysis_server/lib/src/services/completion/local_computer.dart +++ b/pkg/analysis_server/lib/src/services/completion/local_computer.dart @@ -212,6 +212,19 @@ class _LocalVisitor extends GeneralizingAstVisitor { visitNode(node); } + @override + visitMethodInvocation(MethodInvocation node) { + // InvocationComputer adds suggestions for method selector + Token period = node.period; + if (period != null && period.offset < request.offset) { + ArgumentList argumentList = node.argumentList; + if (argumentList == null || request.offset <= argumentList.offset) { + return; + } + } + visitNode(node); + } + @override visitNamespaceDirective(NamespaceDirective node) { // No suggestions @@ -373,12 +386,14 @@ class _LocalVisitor extends GeneralizingAstVisitor { } CompletionSuggestion suggestion = _addSuggestion(classMbr.name, csKind, classMbr.returnType, node); - suggestion.element = _createElement( - kind, - classMbr.name, - classMbr.returnType, - classMbr.isAbstract, - _isDeprecated(classMbr.metadata)); + if (suggestion != null) { + suggestion.element = _createElement( + kind, + classMbr.name, + classMbr.returnType, + classMbr.isAbstract, + _isDeprecated(classMbr.metadata)); + } } void _addParamListSuggestions(FormalParameterList paramList) { @@ -422,7 +437,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { CompletionSuggestionKind kind, TypeName typeName, ClassDeclaration classDecl) { if (id != null) { String completion = id.name; - if (completion != null && completion.length > 0) { + if (completion != null && completion.length > 0 && completion != '_') { CompletionSuggestion suggestion = new CompletionSuggestion( kind, CompletionRelevance.DEFAULT, diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart index b7101ca91d4e..0931a4e84a2a 100644 --- a/pkg/analysis_server/test/services/completion/completion_test_util.dart +++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart @@ -1312,7 +1312,7 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { test_MethodDeclaration_parameters_named() { // Block BlockFunctionBody MethodDeclaration - addTestSource('class A {@deprecated Z a(X x, {y: boo}) {^}}'); + addTestSource('class A {@deprecated Z a(X x, _, b, {y: boo}) {^}}'); computeFast(); return computeFull(true).then((_) { CompletionSuggestion methodA = assertSuggestLocalMethod('a', 'A', 'Z'); @@ -1322,7 +1322,9 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { } assertSuggestParameter('x', 'X'); assertSuggestParameter('y', null); + assertSuggestParameter('b', null); assertSuggestImportedClass('int'); + assertNotSuggested('_'); }); } @@ -1343,6 +1345,38 @@ class AbstractSelectorSuggestionTest extends AbstractCompletionTest { }); } + test_MethodInvocation_no_semicolon() { + // MethodInvocation ExpressionStatement Block + addTestSource(''' + main() { } + class I {X get f => new A();get _g => new A();} + class A implements I { + var b; X _c; + X get d => new A();get _e => new A(); + // no semicolon between completion point and next statement + set s1(I x) {} set _s2(I x) {x.^ m(null);} + m(X x) {} I _n(X x) {}} + class X{}'''); + computeFast(); + return computeFull(true).then((_) { + assertSuggestInvocationGetter('f', 'X'); + assertSuggestInvocationGetter('_g', null); + assertNotSuggested('b'); + assertNotSuggested('_c'); + assertNotSuggested('d'); + assertNotSuggested('_e'); + assertNotSuggested('s1'); + assertNotSuggested('_s2'); + assertNotSuggested('m'); + assertNotSuggested('_n'); + assertNotSuggested('a'); + assertNotSuggested('A'); + assertNotSuggested('X'); + assertNotSuggested('Object'); + assertNotSuggested('=='); + }); + } + test_PrefixedIdentifier_class_imported() { // SimpleIdentifier PrefixedIdentifier ExpressionStatement addSource('/testB.dart', ''' From 86319da8fc303ad0a4ba3b1aa4b6483c9b46cead Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Fri, 17 Oct 2014 09:26:13 +0000 Subject: [PATCH 16/91] dart2js: Add support for static fields to new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//661783002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41160 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/model.dart | 22 ++++++- .../js_emitter/new_emitter/model_emitter.dart | 12 ++++ .../js_emitter/program_builder.dart | 65 ++++++++++++++++--- .../implementation/js_emitter/registry.dart | 5 +- 4 files changed, 91 insertions(+), 13 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 2a8748ea86c6..31af9406baa9 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -35,12 +35,15 @@ abstract class Output { MainOutput get mainOutput; final List libraries; final List constants; + // TODO(floitsch): should we move static fields into libraries or classes? + final List staticNonFinalFields; /// Output file name without extension. final String outputFileName; Output(this.outputFileName, this.libraries, + this.staticNonFinalFields, this.constants); } @@ -57,9 +60,10 @@ class MainOutput extends Output { MainOutput(String outputFileName, this.main, List libraries, + List staticNonFinalFields, List constants, this.holders) - : super(outputFileName, libraries, constants); + : super(outputFileName, libraries, staticNonFinalFields, constants); MainOutput get mainOutput => this; } @@ -77,8 +81,9 @@ class DeferredOutput extends Output { this.name, this.mainOutput, List libraries, + List staticNonFinalFields, List constants) - : super(outputFileName, libraries, constants); + : super(outputFileName, libraries, staticNonFinalFields, constants); } class Constant { @@ -96,6 +101,19 @@ class Library { Library(this.uri, this.statics, this.classes); } +class StaticField { + final String name; + // TODO(floitsch): the holder for static fields is the isolate object. We + // could remove this field and use the isolate object directly. + final Holder holder; + final js.Expression code; + final bool isFinal; + final bool isLazy; + + StaticField(this.name, this.holder, this.code, + this.isFinal, this.isLazy); +} + class Class { final String name; final Holder holder; diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index 581f77e4ae94..870d9d293ddc 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -73,6 +73,7 @@ class ModelEmitter { emitHolders(unit.holders), emitEmbeddedGlobals(loadMap), emitConstants(unit.constants), + emitStaticNonFinalFields(unit.staticNonFinalFields), unit.main, program]); } @@ -192,6 +193,14 @@ class ModelEmitter { return new js.Block(statements.toList()); } + js.Block emitStaticNonFinalFields(List fields) { + Iterable statements = fields.map((StaticField field) { + return js.js.statement("#.# = #;", + [field.holder.name, field.name, field.code]); + }); + return new js.Block(statements.toList()); + } + js.Expression emitLibrary(Library library) { Iterable staticDescriptors = library.statics.expand((e) => [ js.string(e.name), js.number(e.holder.index), emitStaticMethod(e) ]); @@ -317,6 +326,9 @@ final String boilerplate = r""" // Initialize constants. #; + // Initialize static non-final fields. + #; + var end = Date.now(); print('Setup: ' + (end - start) + ' ms.'); diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index 277fb3929961..0e3b43dc67b8 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -8,7 +8,11 @@ import 'model.dart'; import '../common.dart'; import '../js/js.dart' as js; -import '../js_backend/js_backend.dart' show Namer, JavaScriptBackend; +import '../js_backend/js_backend.dart' show + Namer, + JavaScriptBackend, + JavaScriptConstantCompiler; + import '../js_emitter/js_emitter.dart' as emitterTask show CodeEmitterTask, Emitter; @@ -49,6 +53,7 @@ class ProgramBuilder { Program buildProgram() { _task.outputClassLists.forEach(_registry.registerElements); _task.outputStaticLists.forEach(_registry.registerElements); + _task.outputConstantLists.forEach(_registerConstants); // TODO(kasperl): There's code that implicitly needs access to the special // $ holder so we have to register that. Can we track if we have to? @@ -96,6 +101,7 @@ class ProgramBuilder { "", // The empty string is the name for the main output file. namer.elementAccess(_compiler.mainFunction), _buildLibraries(fragment), + _buildStaticNonFinalFields(fragment), _buildConstants(fragment), _registry.holders.toList(growable: false)); _outputs[fragment.outputUnit] = result; @@ -118,6 +124,7 @@ class ProgramBuilder { _outputFileName(fragment.name), fragment.name, mainOutput, _buildLibraries(fragment), + _buildStaticNonFinalFields(fragment), _buildConstants(fragment)); _outputs[fragment.outputUnit] = result; return result; @@ -127,15 +134,40 @@ class ProgramBuilder { List constantValues = _task.outputConstantLists[fragment.outputUnit]; if (constantValues == null) return const []; - return constantValues.map((ConstantValue constantValue) { - assert(!_constants.containsKey(constantValue)); - String name = namer.constantName(constantValue); - String constantObject = namer.globalObjectForConstant(constantValue); - Holder holder = _registry.registerHolder(constantObject); - Constant constant = new Constant(name, holder, constantValue); - _constants[constantValue] = constant; - return constant; - }).toList(); + return constantValues.map((ConstantValue value) => _constants[value]) + .toList(growable: false); + } + + List _buildStaticNonFinalFields(Fragment fragment) { + // TODO(floitsch): handle static non-final fields correctly with deferred + // libraries. + if (fragment != _registry.mainFragment) return const []; + Iterable staticNonFinalFields = + backend.constants.getStaticNonFinalFieldsForEmission(); + return Elements.sortedByPosition(staticNonFinalFields) + .map(_buildStaticField) + .toList(growable: false); + } + + StaticField _buildStaticField(Element element) { + JavaScriptConstantCompiler handler = backend.constants; + ConstantValue initialValue = handler.getInitialValueFor(element).value; + js.Expression code = _task.emitter.constantReference(initialValue); + String name = namer.getNameOfGlobalField(element); + bool isFinal = false; + bool isLazy = false; + return new StaticField(name, _registry.registerHolder(r'$'), code, + isFinal, isLazy); + } + + List _buildStaticLazilyInitializedFields(Fragment fragment) { + JavaScriptConstantCompiler handler = backend.constants; + List lazyFields = + handler.getLazilyInitializedFieldsForEmission(); + // TODO(floitsch): handle static lazy finals correctly with deferred + // libraries. + if (fragment != _registry.mainFragment) return const []; + throw new UnimplementedError("lazy statics"); } List _buildLibraries(Fragment fragment) { @@ -206,4 +238,17 @@ class ProgramBuilder { js.Expression code = js.string("<>"); return new StaticMethod(name, _registry.registerHolder(holder), code); } + + void _registerConstants(OutputUnit outputUnit, + List constantValues) { + if (constantValues == null) return; + for (ConstantValue constantValue in constantValues) { + assert(!_constants.containsKey(constantValue)); + String name = namer.constantName(constantValue); + String constantObject = namer.globalObjectForConstant(constantValue); + Holder holder = _registry.registerHolder(constantObject); + Constant constant = new Constant(name, holder, constantValue); + _constants[constantValue] = constant; + }; + } } diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart index a0a078dac935..0c036b3e3179 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/registry.dart @@ -22,7 +22,10 @@ class Fragment { final OutputUnit outputUnit; Fragment.main(this.outputUnit) : name = ""; - Fragment.deferred(this.outputUnit, this.name); + + Fragment.deferred(this.outputUnit, this.name) { + assert(name != ""); + } void add(LibraryElement library, Element element) { if (_lastLibrary != library) { From 4c499dd2a3d1a7dcac51642ed27ae304730659bb Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Fri, 17 Oct 2014 09:29:56 +0000 Subject: [PATCH 17/91] dart2js: Add interceptors to new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//662663003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41161 260f80e4-7a28-3924-810f-c04153c831b5 --- .../js_emitter/program_builder.dart | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index 0e3b43dc67b8..e642327b84ac 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -13,9 +13,10 @@ import '../js_backend/js_backend.dart' show JavaScriptBackend, JavaScriptConstantCompiler; -import '../js_emitter/js_emitter.dart' as emitterTask show +import 'js_emitter.dart' as emitterTask show CodeEmitterTask, - Emitter; + Emitter, + InterceptorStubGenerator; import '../universe/universe.dart' show Universe; import '../deferred_load.dart' show DeferredLoadTask, OutputUnit; @@ -192,6 +193,11 @@ class ProgramBuilder { .where((e) => universe.staticFunctionsNeedingGetter.contains(e)) .map(_buildStaticMethodTearOff)); + if (library == backend.interceptorsLibrary) { + statics.addAll(_generateGetInterceptorMethods()); + statics.addAll(_generateOneShotInterceptors()); + } + List classes = elements .where((e) => e is ClassElement) .map(_buildClass) @@ -224,6 +230,37 @@ class ProgramBuilder { return new Method(name, code); } + Iterable _generateGetInterceptorMethods() { + emitterTask.InterceptorStubGenerator stubGenerator = + new emitterTask.InterceptorStubGenerator(_compiler, namer, backend); + + String holderName = namer.globalObjectFor(backend.interceptorsLibrary); + Holder holder = _registry.registerHolder(holderName); + + Map> specializedGetInterceptors = + backend.specializedGetInterceptors; + List names = specializedGetInterceptors.keys.toList()..sort(); + return names.map((String name) { + Set classes = specializedGetInterceptors[name]; + js.Expression code = stubGenerator.generateGetInterceptorMethod(classes); + return new StaticMethod(name, holder, code); + }); + } + + Iterable _generateOneShotInterceptors() { + emitterTask.InterceptorStubGenerator stubGenerator = + new emitterTask.InterceptorStubGenerator(_compiler, namer, backend); + + String holderName = namer.globalObjectFor(backend.interceptorsLibrary); + Holder holder = _registry.registerHolder(holderName); + + List names = backend.oneShotInterceptors.keys.toList()..sort(); + return names.map((String name) { + js.Expression code = stubGenerator.generateOneShotInterceptor(name); + return new StaticMethod(name, holder, code); + }); + } + StaticMethod _buildStaticMethod(FunctionElement element) { String name = namer.getNameOfMember(element); String holder = namer.globalObjectFor(element); From 298425caf770a51c3d1c0c0ab4e0bf2c173cace5 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Fri, 17 Oct 2014 10:53:06 +0000 Subject: [PATCH 18/91] dart2js: Remove unused function in new emitter. Review URL: https://codereview.chromium.org//635273003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41162 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/program_builder.dart | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index e642327b84ac..1702ad6c2900 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -161,16 +161,6 @@ class ProgramBuilder { isFinal, isLazy); } - List _buildStaticLazilyInitializedFields(Fragment fragment) { - JavaScriptConstantCompiler handler = backend.constants; - List lazyFields = - handler.getLazilyInitializedFieldsForEmission(); - // TODO(floitsch): handle static lazy finals correctly with deferred - // libraries. - if (fragment != _registry.mainFragment) return const []; - throw new UnimplementedError("lazy statics"); - } - List _buildLibraries(Fragment fragment) { List libraries = new List(fragment.length); int count = 0; From da0e6f745b6bc639b7c968bbad984df34c6e623d Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Fri, 17 Oct 2014 11:41:06 +0000 Subject: [PATCH 19/91] Split IrBuilder and IrBuilderVisitor. BUG= R=floitsch@google.com Review URL: https://codereview.chromium.org//661933002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41163 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/cps_generator.dart | 32 +- .../implementation/cps_ir/cps_ir_builder.dart | 645 ++++++++++-------- 2 files changed, 369 insertions(+), 308 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart index c0f2b8cd2836..b472b7540fe2 100644 --- a/pkg/analyzer2dart/lib/src/cps_generator.dart +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart @@ -10,6 +10,8 @@ import 'package:compiler/implementation/elements/elements.dart' as dart2js; import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/element.dart' as analyzer; +import 'package:compiler/implementation/dart2jslib.dart' + show DART_CONSTANT_SYSTEM; import 'package:compiler/implementation/cps_ir/cps_ir_nodes.dart' as ir; import 'package:compiler/implementation/cps_ir/cps_ir_builder.dart'; import 'package:compiler/implementation/universe/universe.dart'; @@ -19,10 +21,10 @@ import 'element_converter.dart'; import 'util.dart'; import 'package:analyzer2dart/src/identifier_semantics.dart'; -class CpsGeneratingVisitor extends SemanticVisitor { +class CpsGeneratingVisitor extends SemanticVisitor + with IrBuilderMixin { final analyzer.Element element; final ElementConverter converter; - final IrBuilder irBuilder = new IrBuilder(); CpsGeneratingVisitor(this.converter, this.element); @@ -31,16 +33,24 @@ class CpsGeneratingVisitor extends SemanticVisitor { @override ir.FunctionDefinition visitFunctionDeclaration(FunctionDeclaration node) { analyzer.FunctionElement function = node.element; - function.parameters.forEach((analyzer.ParameterElement parameter) { - // TODO(johnniwinther): Support "closure variables", that is variables - // accessed from an inner function. - irBuilder.createParameter(converter.convertElement(parameter), - isClosureVariable: false); + dart2js.FunctionElement element = converter.convertElement(function); + return withBuilder( + new IrBuilder(DART_CONSTANT_SYSTEM, + element, + // TODO(johnniwinther): Supported closure variables. + const []), + () { + function.parameters.forEach((analyzer.ParameterElement parameter) { + // TODO(johnniwinther): Support "closure variables", that is variables + // accessed from an inner function. + irBuilder.createParameter(converter.convertElement(parameter), + isClosureVariable: false); + }); + // Visit the body directly to avoid processing the signature as + // expressions. + node.functionExpression.body.accept(this); + return irBuilder.buildFunctionDefinition(element, const []); }); - // Visit the body directly to avoid processing the signature as expressions. - node.functionExpression.body.accept(this); - return irBuilder.buildFunctionDefinition( - converter.convertElement(function), const []); } @override diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index fe60714f5c13..12962f9d3b8e 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -215,7 +215,7 @@ class JumpCollector { List get invocations => _invocations; List get environments => _environments; - void addJump(IrBuilderVisitor builder) { + void addJump(IrBuilder builder) { ir.InvokeContinuation invoke = new ir.InvokeContinuation.uninitialized(); builder.add(invoke); _invocations.add(invoke); @@ -226,20 +226,62 @@ class JumpCollector { } } +/// Mixin that provided encapsulated access to nested builders. +class IrBuilderMixin { + IrBuilder _irBuilder; + + /// Execute [f] with [builder] as the current builder. + withBuilder(IrBuilder builder, f()) { + assert(builder != null); + IrBuilder prev = _irBuilder; + _irBuilder = builder; + var result = f(); + _irBuilder = prev; + return result; + } + + /// The current builder. + IrBuilder get irBuilder { + assert(_irBuilder != null); + return _irBuilder; + } +} + + +/// Shared state between nested builders. +class IrBuilderSharedState { + final ConstantSystem constantSystem; + + /// A stack of collectors for breaks. + final List breakCollectors = []; + + /// A stack of collectors for continues. + final List continueCollectors = []; + + final List localConstants = []; + + final Iterable closureLocals; + + final FunctionElement currentFunction; + + final ir.Continuation returnContinuation = new ir.Continuation.retrn(); + + IrBuilderSharedState(this.constantSystem, + this.currentFunction, + this.closureLocals); +} + /// A factory for building the cps IR. class IrBuilder { // TODO(johnniwinther): Make these field final and remove the default values // when [IrBuilder] is a property of [IrBuilderVisitor] instead of a mixin. - ConstantSystem constantSystem = DART_CONSTANT_SYSTEM; - ir.Continuation returnContinuation = new ir.Continuation.retrn(); + final List _parameters = []; - List _parameters = []; + final IrBuilderSharedState state; /// A map from variable indexes to their values. - Environment environment = new Environment.empty(); - - List _localConstants = []; + Environment environment; // The IR builder maintains a context, which is an expression with a hole in // it. The hole represents the focus where new expressions can be added. @@ -268,6 +310,38 @@ class IrBuilder { ir.Expression _root = null; ir.Expression _current = null; + IrBuilder(ConstantSystem constantSystem, + FunctionElement currentFunction, + Iterable closureLocals) + : this.state = new IrBuilderSharedState( + constantSystem, currentFunction, closureLocals), + this.environment = new Environment.empty(); + + /// Construct a delimited visitor for visiting a subtree. + /// + /// The delimited visitor has its own compile-time environment mapping + /// local variables to their values, which is initially a copy of the parent + /// environment. It has its own context for building an IR expression, so + /// the built expression is not plugged into the parent's context. + IrBuilder.delimited(IrBuilder parent) + : this.state = parent.state, + this.environment = new Environment.from(parent.environment); + + /// Construct a visitor for a recursive continuation. + /// + /// The recursive continuation builder has fresh parameters (i.e. SSA phis) + /// for all the local variables in the parent, because the invocation sites + /// of the continuation are not all known when the builder is created. The + /// recursive invocations will be passed values for all the local variables, + /// which may be eliminated later if they are redundant---if they take on + /// the same value at all invocation sites. + IrBuilder.recursive(IrBuilder parent) + : this.state = parent.state, + this.environment = new Environment.empty() { + parent.environment.index2variable.forEach(createParameter); + } + + bool get isOpen => _root == null || _current != null; /// Create a parameter for [parameterElement] and add it to the current @@ -286,7 +360,7 @@ class IrBuilder { void declareLocalConstant(LocalVariableElement variableElement, ConstantExpression value) { - _localConstants.add(new ConstDeclaration(variableElement, value)); + state.localConstants.add(new ConstDeclaration(variableElement, value)); } void declareLocalVariable(LocalVariableElement variableElement, @@ -296,7 +370,7 @@ class IrBuilder { if (initialValue == null) { // TODO(kmillikin): Consider pooling constants. // The initial value is null. - initialValue = makePrimConst(constantSystem.createNull()); + initialValue = makePrimConst(state.constantSystem.createNull()); add(new ir.LetPrim(initialValue)); } if (isClosureVariable) { @@ -352,28 +426,28 @@ class IrBuilder { /// Create an integer literal. ir.Constant buildIntegerLiteral(int value) { - return buildPrimConst(constantSystem.createInt(value)); + return buildPrimConst(state.constantSystem.createInt(value)); } /// Create an double literal. ir.Constant buildDoubleLiteral(double value) { - return buildPrimConst(constantSystem.createDouble(value)); + return buildPrimConst(state.constantSystem.createDouble(value)); } /// Create an bool literal. ir.Constant buildBooleanLiteral(bool value) { - return buildPrimConst(constantSystem.createBool(value)); + return buildPrimConst(state.constantSystem.createBool(value)); } /// Create an null literal. ir.Constant buildNullLiteral() { - return buildPrimConst(constantSystem.createNull()); + return buildPrimConst(state.constantSystem.createNull()); } /// Create a string literal. ir.Constant buildStringLiteral(String value) { return buildPrimConst( - constantSystem.createString(new ast.DartString.literal(value))); + state.constantSystem.createString(new ast.DartString.literal(value))); } /// Create a get access of [local]. @@ -397,9 +471,9 @@ class IrBuilder { */ void ensureReturn() { if (!isOpen) return; - ir.Constant constant = makePrimConst(constantSystem.createNull()); + ir.Constant constant = makePrimConst(state.constantSystem.createNull()); add(new ir.LetPrim(constant)); - add(new ir.InvokeContinuation(returnContinuation, [constant])); + add(new ir.InvokeContinuation(state.returnContinuation, [constant])); _current = null; } @@ -413,14 +487,14 @@ class IrBuilder { if (!element.isAbstract) { ensureReturn(); return new ir.FunctionDefinition( - element, returnContinuation, _parameters, _root, - _localConstants, defaults); + element, state.returnContinuation, _parameters, _root, + state.localConstants, defaults); } else { assert(invariant(element, _root == null, message: "Non-empty body for abstract method $element: $_root")); - assert(invariant(element, _localConstants.isEmpty, + assert(invariant(element, state.localConstants.isEmpty, message: "Local constants for abstract method $element: " - "$_localConstants")); + "${state.localConstants}")); return new ir.FunctionDefinition.abstract( element, _parameters, defaults); } @@ -444,13 +518,40 @@ class IrBuilder { // Return without a subexpression is translated as if it were return null. assert(isOpen); if (value == null) { - value = makePrimConst(constantSystem.createNull()); + value = makePrimConst(state.constantSystem.createNull()); add(new ir.LetPrim(value)); } - add(new ir.InvokeContinuation(returnContinuation, [value])); + add(new ir.InvokeContinuation(state.returnContinuation, [value])); _current = null; } + // Build(BreakStatement L, C) = C[InvokeContinuation(...)] + // + // The continuation and arguments are filled in later after translating + // the body containing the break. + bool buildBreak(JumpTarget target) { + return buildJumpInternal(target, state.breakCollectors); + } + + // Build(ContinueStatement L, C) = C[InvokeContinuation(...)] + // + // The continuation and arguments are filled in later after translating + // the body containing the continue. + bool buildContinue(JumpTarget target) { + return buildJumpInternal(target, state.continueCollectors); + } + + bool buildJumpInternal(JumpTarget target, + Iterable collectors) { + assert(isOpen); + for (JumpCollector collector in collectors) { + if (target == collector.target) { + collector.addJump(this); + return true; + } + } + return false; + } } /** @@ -458,7 +559,8 @@ class IrBuilder { * to the [builder] and return the last added statement for trees that represent * an expression. */ -class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { +class IrBuilderVisitor extends ResolvedVisitor + with IrBuilderMixin { final Compiler compiler; final SourceFile sourceFile; @@ -480,64 +582,9 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // used to determine if a join-point continuation needs to be passed // arguments, and what the arguments are. - /// A stack of collectors for breaks. - final List breakCollectors; - /// A stack of collectors for continues. - final List continueCollectors; - - FunctionElement currentFunction; - final DetectClosureVariables closureLocals; - /// Construct a top-level visitor. IrBuilderVisitor(TreeElements elements, this.compiler, this.sourceFile) - : breakCollectors = [], - continueCollectors = [], - closureLocals = new DetectClosureVariables(elements), - super(elements) { - constantSystem = compiler.backend.constantSystem; - } - - /// Construct a delimited visitor for visiting a subtree. - /// - /// The delimited visitor has its own compile-time environment mapping - /// local variables to their values, which is initially a copy of the parent - /// environment. It has its own context for building an IR expression, so - /// the built expression is not plugged into the parent's context. - IrBuilderVisitor.delimited(IrBuilderVisitor parent) - : compiler = parent.compiler, - sourceFile = parent.sourceFile, - breakCollectors = parent.breakCollectors, - continueCollectors = parent.continueCollectors, - currentFunction = parent.currentFunction, - closureLocals = parent.closureLocals, - super(parent.elements) { - constantSystem = parent.constantSystem; - returnContinuation = parent.returnContinuation; - _localConstants = parent._localConstants; - environment = new Environment.from(parent.environment); - } - - /// Construct a visitor for a recursive continuation. - /// - /// The recursive continuation builder has fresh parameters (i.e. SSA phis) - /// for all the local variables in the parent, because the invocation sites - /// of the continuation are not all known when the builder is created. The - /// recursive invocations will be passed values for all the local variables, - /// which may be eliminated later if they are redundant---if they take on - /// the same value at all invocation sites. - IrBuilderVisitor.recursive(IrBuilderVisitor parent) - : compiler = parent.compiler, - sourceFile = parent.sourceFile, - breakCollectors = parent.breakCollectors, - continueCollectors = parent.continueCollectors, - currentFunction = parent.currentFunction, - closureLocals = parent.closureLocals, - super(parent.elements) { - constantSystem = parent.constantSystem; - returnContinuation = parent.returnContinuation; - _localConstants = parent._localConstants; - parent.environment.index2variable.forEach(createParameter); - } + : super(elements); /** * Builds the [ir.FunctionDefinition] for a function element. In case the @@ -550,29 +597,33 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.FunctionDefinition buildFunctionInternal(FunctionElement element) { assert(invariant(element, element.isImplementation)); - currentFunction = element; ast.FunctionExpression function = element.node; assert(function != null); assert(!function.modifiers.isExternal); assert(elements[function] != null); + DetectClosureVariables closureLocals = new DetectClosureVariables(elements); closureLocals.visit(function); - _root = _current = null; + return withBuilder( + new IrBuilder(compiler.backend.constantSystem, + element, closureLocals.usedFromClosure), + () { + FunctionSignature signature = element.functionSignature; + signature.orderedForEachParameter((ParameterElement parameterElement) { + irBuilder.createParameter( + parameterElement, + isClosureVariable: isClosureVariable(parameterElement)); + }); - FunctionSignature signature = element.functionSignature; - signature.orderedForEachParameter((ParameterElement parameterElement) { - createParameter(parameterElement, - isClosureVariable: isClosureVariable(parameterElement)); - }); + List defaults = new List(); + signature.orderedOptionalParameters.forEach((ParameterElement element) { + defaults.add(getConstantForVariable(element)); + }); - List defaults = new List(); - signature.orderedOptionalParameters.forEach((ParameterElement element) { - defaults.add(getConstantForVariable(element)); + visit(function.body); + return irBuilder.buildFunctionDefinition(element, defaults); }); - - visit(function.body); - return buildFunctionDefinition(element, defaults); } ir.Primitive visit(ast.Node node) => node.accept(this); @@ -581,58 +632,38 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // Build(Block(stamements), C) = C' // where C' = statements.fold(Build, C) ir.Primitive visitBlock(ast.Block node) { - assert(isOpen); + assert(irBuilder.isOpen); for (ast.Node n in node.statements.nodes) { visit(n); - if (!isOpen) return null; + if (!irBuilder.isOpen) return null; } return null; } - // Build(BreakStatement L, C) = C[InvokeContinuation(...)] - // - // The continuation and arguments are filled in later after translating - // the body containing the break. ir.Primitive visitBreakStatement(ast.BreakStatement node) { - assert(isOpen); - JumpTarget target = elements.getTargetOf(node); - for (JumpCollector collector in breakCollectors) { - if (target == collector.target) { - collector.addJump(this); - return null; - } + if (!irBuilder.buildBreak(elements.getTargetOf(node))) { + compiler.internalError(node, "'break' target not found"); } - compiler.internalError(node, "'break' target not found"); return null; } - // Build(ContinueStatement L, C) = C[InvokeContinuation(...)] - // - // The continuation and arguments are filled in later after translating - // the body containing the continue. ir.Primitive visitContinueStatement(ast.ContinueStatement node) { - assert(isOpen); - JumpTarget target = elements.getTargetOf(node); - for (JumpCollector collector in continueCollectors) { - if (target == collector.target) { - collector.addJump(this); - return null; - } + if (!irBuilder.buildContinue(elements.getTargetOf(node))) { + compiler.internalError(node, "'continue' target not found"); } - compiler.internalError(node, "'continue' target not found"); return null; } // Build(EmptyStatement, C) = C ir.Primitive visitEmptyStatement(ast.EmptyStatement node) { - assert(isOpen); + assert(irBuilder.isOpen); return null; } // Build(ExpressionStatement(e), C) = C' // where (C', _) = Build(e, C) ir.Primitive visitExpressionStatement(ast.ExpressionStatement node) { - assert(isOpen); + assert(irBuilder.isOpen); visit(node.expression); return null; } @@ -734,9 +765,9 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // outside the environment which are 'phantom' variables used for the // values of expressions like &&, ||, and ?:. index = 0; - for (int i = 0; i < environment.length; ++i) { + for (int i = 0; i < irBuilder.environment.length; ++i) { if (common[i] == null) { - environment.index2value[i] = parameters[index++]; + irBuilder.environment.index2value[i] = parameters[index++]; } } @@ -764,7 +795,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitFor(ast.For node) { - assert(isOpen); + assert(irBuilder.isOpen); // TODO(kmillikin,sigurdm): Handle closure variables declared in a for-loop. if (node.initializer is ast.VariableDefinitions) { ast.VariableDefinitions definitions = node.initializer; @@ -800,40 +831,41 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { if (node.initializer != null) visit(node.initializer); - IrBuilderVisitor condBuilder = new IrBuilderVisitor.recursive(this); + IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); ir.Primitive condition; if (node.condition == null) { // If the condition is empty then the body is entered unconditionally. - condition = makePrimConst(constantSystem.createBool(true)); + condition = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createBool(true)); condBuilder.add(new ir.LetPrim(condition)); } else { - condition = condBuilder.visit(node.condition); + condition = withBuilder(condBuilder, () => visit(node.condition)); } JumpTarget target = elements.getTargetDefinition(node); JumpCollector breakCollector = new JumpCollector(target); JumpCollector continueCollector = new JumpCollector(target); - breakCollectors.add(breakCollector); - continueCollectors.add(continueCollector); + irBuilder.state.breakCollectors.add(breakCollector); + irBuilder.state.continueCollectors.add(continueCollector); - IrBuilderVisitor bodyBuilder = new IrBuilderVisitor.delimited(condBuilder); - bodyBuilder.visit(node.body); - assert(breakCollectors.last == breakCollector); - assert(continueCollectors.last == continueCollector); - breakCollectors.removeLast(); - continueCollectors.removeLast(); + IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); + withBuilder(bodyBuilder, () => visit(node.body)); + assert(irBuilder.state.breakCollectors.last == breakCollector); + assert(irBuilder.state.continueCollectors.last == continueCollector); + irBuilder.state.breakCollectors.removeLast(); + irBuilder.state.continueCollectors.removeLast(); // The binding of the continue continuation should occur as late as // possible, that is, at the nearest common ancestor of all the continue // sites in the body. However, that is difficult to compute here, so it // is instead placed just outside the body of the body continuation. bool hasContinues = !continueCollector.isEmpty; - IrBuilderVisitor updateBuilder = hasContinues - ? new IrBuilderVisitor.recursive(condBuilder) + IrBuilder updateBuilder = hasContinues + ? new IrBuilder.recursive(condBuilder) : bodyBuilder; for (ast.Node n in node.update) { if (!updateBuilder.isOpen) break; - updateBuilder.visit(n); + withBuilder(updateBuilder, () => visit(n)); } // Create body entry and loop exit continuations and a branch to them. @@ -883,31 +915,34 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } loopContinuation.body = condBuilder._root; - add(new ir.LetCont(loopContinuation, + irBuilder.add(new ir.LetCont(loopContinuation, new ir.InvokeContinuation(loopContinuation, - environment.index2value))); + irBuilder.environment.index2value))); if (hasBreaks) { - _current = branch; - environment = condBuilder.environment; - breakCollector.addJump(this); - letJoin.continuation = createJoin(environment.length, breakCollector); - _current = letJoin; + irBuilder._current = branch; + irBuilder.environment = condBuilder.environment; + breakCollector.addJump(irBuilder); + letJoin.continuation = + createJoin(irBuilder.environment.length, breakCollector); + irBuilder._current = letJoin; } else { - _current = condBuilder._current; - environment = condBuilder.environment; + irBuilder._current = condBuilder._current; + irBuilder.environment = condBuilder.environment; } return null; } ir.Primitive visitIf(ast.If node) { - assert(isOpen); + assert(irBuilder.isOpen); ir.Primitive condition = visit(node.condition); // The then and else parts are delimited. - IrBuilderVisitor thenBuilder = new IrBuilderVisitor.delimited(this); - IrBuilderVisitor elseBuilder = new IrBuilderVisitor.delimited(this); - thenBuilder.visit(node.thenPart); - if (node.hasElsePart) elseBuilder.visit(node.elsePart); + IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); + IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); + withBuilder(thenBuilder, () => visit(node.thenPart)); + if (node.hasElsePart) { + withBuilder(elseBuilder, () => visit(node.elsePart)); + } // Build the term // (Result =) let cont then() = [[thenPart]] in @@ -931,7 +966,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { JumpCollector jumps = new JumpCollector(null); jumps.addJump(thenBuilder); jumps.addJump(elseBuilder); - joinContinuation = createJoin(environment.length, jumps); + joinContinuation = createJoin(irBuilder.environment.length, jumps); result = new ir.LetCont(joinContinuation, result); } @@ -945,17 +980,19 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { thenContinuation.body = thenBuilder._root; elseContinuation.body = elseBuilder._root; - add(result); + irBuilder.add(result); if (joinContinuation == null) { // At least one subexpression is closed. if (thenBuilder.isOpen) { - _current = (thenBuilder._root == null) ? letThen : thenBuilder._current; - environment = thenBuilder.environment; + irBuilder._current = + (thenBuilder._root == null) ? letThen : thenBuilder._current; + irBuilder.environment = thenBuilder.environment; } else if (elseBuilder.isOpen) { - _current = (elseBuilder._root == null) ? letElse : elseBuilder._current; - environment = elseBuilder.environment; + irBuilder._current = + (elseBuilder._root == null) ? letElse : elseBuilder._current; + irBuilder.environment = elseBuilder.environment; } else { - _current = null; + irBuilder._current = null; } } return null; @@ -969,7 +1006,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitWhile(ast.While node) { - assert(isOpen); + assert(irBuilder.isOpen); // While loops use four named continuations: the entry to the body, the // loop exit, the loop back edge (continue), and the loop exit (break). // The CPS translation of [[while (condition) body; successor]] is: @@ -987,21 +1024,22 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // statement occurs in the exit continuation). // The condition and body are delimited. - IrBuilderVisitor condBuilder = new IrBuilderVisitor.recursive(this); - ir.Primitive condition = condBuilder.visit(node.condition); + IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); + ir.Primitive condition = + withBuilder(condBuilder, () => visit(node.condition)); JumpTarget target = elements.getTargetDefinition(node); JumpCollector breakCollector = new JumpCollector(target); JumpCollector continueCollector = new JumpCollector(target); - breakCollectors.add(breakCollector); - continueCollectors.add(continueCollector); + irBuilder.state.breakCollectors.add(breakCollector); + irBuilder.state.continueCollectors.add(continueCollector); - IrBuilderVisitor bodyBuilder = new IrBuilderVisitor.delimited(condBuilder); - bodyBuilder.visit(node.body); - assert(breakCollectors.last == breakCollector); - assert(continueCollectors.last == continueCollector); - breakCollectors.removeLast(); - continueCollectors.removeLast(); + IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); + withBuilder(bodyBuilder, () => visit(node.body)); + assert(irBuilder.state.breakCollectors.last == breakCollector); + assert(irBuilder.state.continueCollectors.last == continueCollector); + irBuilder.state.breakCollectors.removeLast(); + irBuilder.state.continueCollectors.removeLast(); // Create body entry and loop exit continuations and a branch to them. ir.Continuation bodyContinuation = new ir.Continuation([]); @@ -1030,18 +1068,19 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { bodyContinuation.body = bodyBuilder._root; loopContinuation.body = condBuilder._root; - add(new ir.LetCont(loopContinuation, + irBuilder.add(new ir.LetCont(loopContinuation, new ir.InvokeContinuation(loopContinuation, - environment.index2value))); + irBuilder.environment.index2value))); if (hasBreaks) { - _current = branch; - environment = condBuilder.environment; - breakCollector.addJump(this); - letJoin.continuation = createJoin(environment.length, breakCollector); - _current = letJoin; + irBuilder._current = branch; + irBuilder.environment = condBuilder.environment; + breakCollector.addJump(irBuilder); + letJoin.continuation = + createJoin(irBuilder.environment.length, breakCollector); + irBuilder._current = letJoin; } else { - _current = condBuilder._current; - environment = condBuilder.environment; + irBuilder._current = condBuilder._current; + irBuilder.environment = condBuilder.environment; } return null; } @@ -1060,14 +1099,14 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // } // The condition and body are delimited. - IrBuilderVisitor condBuilder = new IrBuilderVisitor.recursive(this); + IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); ir.Primitive expressionReceiver = visit(node.expression); List emptyArguments = new List(); ir.Parameter iterator = new ir.Parameter(null); ir.Continuation iteratorInvoked = new ir.Continuation([iterator]); - add(new ir.LetCont(iteratorInvoked, + irBuilder.add(new ir.LetCont(iteratorInvoked, new ir.InvokeMethod(expressionReceiver, new Selector.getter("iterator", null), iteratorInvoked, emptyArguments))); @@ -1082,10 +1121,10 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { JumpTarget target = elements.getTargetDefinition(node); JumpCollector breakCollector = new JumpCollector(target); JumpCollector continueCollector = new JumpCollector(target); - breakCollectors.add(breakCollector); - continueCollectors.add(continueCollector); + irBuilder.state.breakCollectors.add(breakCollector); + irBuilder.state.continueCollectors.add(continueCollector); - IrBuilderVisitor bodyBuilder = new IrBuilderVisitor.delimited(condBuilder); + IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); ast.Node identifier = node.declaredIdentifier; Element variableElement = elements.getForInVariable(node); Selector selector = elements.getSelector(identifier); @@ -1096,7 +1135,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ast.Node declaredIdentifier = node.declaredIdentifier; if (declaredIdentifier is ast.VariableDefinitions) { - bodyBuilder.visit(declaredIdentifier); + withBuilder(bodyBuilder, () => visit(declaredIdentifier)); } ir.Parameter currentValue = new ir.Parameter(null); @@ -1105,19 +1144,22 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { new ir.InvokeMethod(iterator, new Selector.getter("current", null), currentInvoked, emptyArguments))); if (Elements.isLocal(variableElement)) { - bodyBuilder.setLocal(variableElement, currentValue); + withBuilder(bodyBuilder, () => setLocal(variableElement, currentValue)); } else if (Elements.isStaticOrTopLevel(variableElement)) { - bodyBuilder.setStatic(variableElement, selector, currentValue); + withBuilder(bodyBuilder, + () => setStatic(variableElement, selector, currentValue)); } else { - ir.Primitive receiver = bodyBuilder.lookupThis(); - bodyBuilder.setDynamic(null, receiver, selector, currentValue); + ir.Primitive receiver = + withBuilder(bodyBuilder, () => lookupThis()); + withBuilder(bodyBuilder, + () => setDynamic(null, receiver, selector, currentValue)); } - bodyBuilder.visit(node.body); - assert(breakCollectors.last == breakCollector); - assert(continueCollectors.last == continueCollector); - breakCollectors.removeLast(); - continueCollectors.removeLast(); + withBuilder(bodyBuilder, () => visit(node.body)); + assert(irBuilder.state.breakCollectors.last == breakCollector); + assert(irBuilder.state.continueCollectors.last == continueCollector); + irBuilder.state.breakCollectors.removeLast(); + irBuilder.state.continueCollectors.removeLast(); // Create body entry and loop exit continuations and a branch to them. ir.Continuation bodyContinuation = new ir.Continuation([]); @@ -1146,31 +1188,32 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { bodyContinuation.body = bodyBuilder._root; loopContinuation.body = condBuilder._root; - add(new ir.LetCont(loopContinuation, + irBuilder.add(new ir.LetCont(loopContinuation, new ir.InvokeContinuation(loopContinuation, - environment.index2value))); + irBuilder.environment.index2value))); if (hasBreaks) { - _current = branch; - environment = condBuilder.environment; - breakCollector.addJump(this); - letJoin.continuation = createJoin(environment.length, breakCollector); - _current = letJoin; + irBuilder._current = branch; + irBuilder.environment = condBuilder.environment; + breakCollector.addJump(irBuilder); + letJoin.continuation = + createJoin(irBuilder.environment.length, breakCollector); + irBuilder._current = letJoin; } else { - _current = condBuilder._current; - environment = condBuilder.environment; + irBuilder._current = condBuilder._current; + irBuilder.environment = condBuilder.environment; } return null; } ir.Primitive visitVariableDefinitions(ast.VariableDefinitions node) { - assert(isOpen); + assert(irBuilder.isOpen); if (node.modifiers.isConst) { for (ast.SendSet definition in node.definitions.nodes) { assert(!definition.arguments.isEmpty); assert(definition.arguments.tail.isEmpty); VariableElement element = elements[definition]; ConstantExpression value = getConstantForVariable(element); - declareLocalConstant(element, value); + irBuilder.declareLocalConstant(element, value); } } else { for (ast.Node definition in node.definitions.nodes) { @@ -1185,9 +1228,9 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } else { assert(definition is ast.Identifier); } - declareLocalVariable(element, - initialValue: initialValue, - isClosureVariable: isClosureVariable(element)); + irBuilder.declareLocalVariable(element, + initialValue: initialValue, + isClosureVariable: isClosureVariable(element)); } } return null; @@ -1198,39 +1241,41 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // // Return without a subexpression is translated as if it were return null. ir.Primitive visitReturn(ast.Return node) { - assert(isOpen); + assert(irBuilder.isOpen); assert(invariant(node, node.beginToken.value != 'native')); if (node.expression == null) { - buildReturn(); + irBuilder.buildReturn(); } else { - buildReturn(visit(node.expression)); + irBuilder.buildReturn(visit(node.expression)); } return null; } // ==== Expressions ==== ir.Primitive visitConditional(ast.Conditional node) { - assert(isOpen); + assert(irBuilder.isOpen); ir.Primitive condition = visit(node.condition); // The then and else expressions are delimited. - IrBuilderVisitor thenBuilder = new IrBuilderVisitor.delimited(this); - IrBuilderVisitor elseBuilder = new IrBuilderVisitor.delimited(this); - ir.Primitive thenValue = thenBuilder.visit(node.thenExpression); - ir.Primitive elseValue = elseBuilder.visit(node.elseExpression); + IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); + IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); + ir.Primitive thenValue = + withBuilder(thenBuilder, () => visit(node.thenExpression)); + ir.Primitive elseValue = + withBuilder(elseBuilder, () => visit(node.elseExpression)); // Treat the values of the subexpressions as named values in the // environment, so they will be treated as arguments to the join-point // continuation. - assert(environment.length == thenBuilder.environment.length); - assert(environment.length == elseBuilder.environment.length); + assert(irBuilder.environment.length == thenBuilder.environment.length); + assert(irBuilder.environment.length == elseBuilder.environment.length); thenBuilder.environment.extend(null, thenValue); elseBuilder.environment.extend(null, elseValue); JumpCollector jumps = new JumpCollector(null); jumps.addJump(thenBuilder); jumps.addJump(elseBuilder); ir.Continuation joinContinuation = - createJoin(environment.length + 1, jumps); + createJoin(irBuilder.environment.length + 1, jumps); // Build the term // let cont join(x, ..., result) = [] in @@ -1241,7 +1286,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Continuation elseContinuation = new ir.Continuation([]); thenContinuation.body = thenBuilder._root; elseContinuation.body = elseBuilder._root; - add(new ir.LetCont(joinContinuation, + irBuilder.add(new ir.LetCont(joinContinuation, new ir.LetCont(thenContinuation, new ir.LetCont(elseContinuation, new ir.Branch(new ir.IsTrue(condition), @@ -1255,27 +1300,27 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // For all simple literals: // Build(Literal(c), C) = C[let val x = Constant(c) in [], x] ir.Primitive visitLiteralBool(ast.LiteralBool node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateConstant(node); } ir.Primitive visitLiteralDouble(ast.LiteralDouble node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateConstant(node); } ir.Primitive visitLiteralInt(ast.LiteralInt node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateConstant(node); } ir.Primitive visitLiteralNull(ast.LiteralNull node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateConstant(node); } ir.Primitive visitLiteralString(ast.LiteralString node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateConstant(node); } @@ -1296,19 +1341,19 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitLiteralList(ast.LiteralList node) { - assert(isOpen); + assert(irBuilder.isOpen); if (node.isConst) { return translateConstant(node); } List values = node.elements.nodes.mapToList(visit); GenericType type = elements.getType(node); ir.Primitive result = new ir.LiteralList(type, values); - add(new ir.LetPrim(result)); + irBuilder.add(new ir.LetPrim(result)); return result; } ir.Primitive visitLiteralMap(ast.LiteralMap node) { - assert(isOpen); + assert(irBuilder.isOpen); if (node.isConst) { return translateConstant(node); } @@ -1320,17 +1365,17 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { }); GenericType type = elements.getType(node); ir.Primitive result = new ir.LiteralMap(type, keys, values); - add(new ir.LetPrim(result)); + irBuilder.add(new ir.LetPrim(result)); return result; } ir.Primitive visitLiteralSymbol(ast.LiteralSymbol node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateConstant(node); } ir.Primitive visitIdentifier(ast.Identifier node) { - assert(isOpen); + assert(irBuilder.isOpen); // "this" is the only identifier that should be met by the visitor. assert(node.isThis()); return lookupThis(); @@ -1338,7 +1383,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Primitive visitParenthesizedExpression( ast.ParenthesizedExpression node) { - assert(isOpen); + assert(irBuilder.isOpen); return visit(node.expression); } @@ -1347,12 +1392,12 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Primitive _currentCascadeReceiver; ir.Primitive visitCascadeReceiver(ast.CascadeReceiver node) { - assert(isOpen); + assert(irBuilder.isOpen); return _currentCascadeReceiver = visit(node.expression); } ir.Primitive visitCascade(ast.Cascade node) { - assert(isOpen); + assert(irBuilder.isOpen); var oldCascadeReceiver = _currentCascadeReceiver; // Throw away the result of visiting the expression. // Instead we return the result of visiting the CascadeReceiver. @@ -1364,18 +1409,18 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Primitive lookupThis() { ir.Primitive result = new ir.This(); - add(new ir.LetPrim(result)); + irBuilder.add(new ir.LetPrim(result)); return result; } // ==== Sends ==== ir.Primitive visitAssert(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); return giveup(node, 'Assert'); } ir.Primitive visitNamedArgument(ast.NamedArgument node) { - assert(isOpen); + assert(irBuilder.isOpen); return visit(node.expression); } @@ -1388,12 +1433,12 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { closureSelector.argumentCount, closureSelector.namedArguments); List args = arguments.nodes.mapToList(visit, growable:false); - return continueWithExpression( + return irBuilder.continueWithExpression( (k) => new ir.InvokeMethod(receiver, namedCallSelector, k, args)); } ir.Primitive visitClosureSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); Element element = elements[node]; ir.Primitive closureTarget; if (element == null) { @@ -1401,10 +1446,10 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } else if (isClosureVariable(element)) { LocalElement local = element; closureTarget = new ir.GetClosureVariable(local); - add(new ir.LetPrim(closureTarget)); + irBuilder.add(new ir.LetPrim(closureTarget)); } else { assert(Elements.isLocal(element)); - closureTarget = environment.lookup(element); + closureTarget = irBuilder.environment.lookup(element); } Selector closureSelector = elements.getSelector(node); return translateClosureCall(closureTarget, closureSelector, @@ -1423,24 +1468,24 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { /// Makes an [InvokeMethod] unless [node.receiver.isSuper()], in that case /// makes an [InvokeSuperMethod] ignoring [receiver]. ir.Expression createDynamicInvoke(ast.Send node, - Selector selector, - ir.Definition receiver, - ir.Continuation k, - List arguments) { + Selector selector, + ir.Definition receiver, + ir.Continuation k, + List arguments) { return node != null && node.receiver != null && node.receiver.isSuper() ? new ir.InvokeSuperMethod(selector, k, arguments) : new ir.InvokeMethod(receiver, selector, k, arguments); } ir.Primitive visitDynamicSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); Selector selector = elements.getSelector(node); ir.Primitive receiver = visitReceiver(node.receiver); List arguments = new List(); for (ast.Node n in node.arguments) { arguments.add(visit(n)); } - return continueWithExpression( + return irBuilder.continueWithExpression( (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); } @@ -1456,10 +1501,10 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } else if (isClosureVariable(element)) { LocalElement local = element; result = new ir.GetClosureVariable(local); - add(new ir.LetPrim(result)); + irBuilder.add(new ir.LetPrim(result)); } else if (Elements.isLocal(element)) { // Reference to local variable - result = buildGetLocal(element); + result = irBuilder.buildGetLocal(element); } else if (element == null || Elements.isInstanceField(element) || Elements.isInstanceMethod(element) || @@ -1480,7 +1525,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { assert(selector.kind == SelectorKind.GETTER || selector.kind == SelectorKind.INDEX); - result = continueWithExpression( + result = irBuilder.continueWithExpression( (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); } else if (element.isField || element.isGetter || element.isErroneous || element.isSetter) { @@ -1490,7 +1535,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // so the vm can fail at runtime. assert(selector.kind == SelectorKind.GETTER || selector.kind == SelectorKind.SETTER); - result = buildGetStatic(element, selector); + result = irBuilder.buildGetStatic(element, selector); } else if (Elements.isStaticOrTopLevelFunction(element)) { // Convert a top-level or static function to a function object. result = translateConstant(node); @@ -1502,7 +1547,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitGetterSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); return translateGetter(node, elements.getSelector(node)).result; } @@ -1517,15 +1562,17 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Continuation thenContinuation = new ir.Continuation([]); ir.Continuation elseContinuation = new ir.Continuation([]); - ir.Constant trueConstant = makePrimConst(constantSystem.createBool(true)); - ir.Constant falseConstant = makePrimConst(constantSystem.createBool(false)); + ir.Constant trueConstant = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createBool(true)); + ir.Constant falseConstant = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createBool(false)); thenContinuation.body = new ir.LetPrim(falseConstant) ..plug(new ir.InvokeContinuation(joinContinuation, [falseConstant])); elseContinuation.body = new ir.LetPrim(trueConstant) ..plug(new ir.InvokeContinuation(joinContinuation, [trueConstant])); - add(new ir.LetCont(joinContinuation, + irBuilder.add(new ir.LetCont(joinContinuation, new ir.LetCont(thenContinuation, new ir.LetCont(elseContinuation, new ir.Branch(new ir.IsTrue(condition), @@ -1543,38 +1590,40 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // local variable assignments in e1. ir.Primitive leftValue = visit(left); - IrBuilderVisitor rightBuilder = new IrBuilderVisitor.delimited(this); - ir.Primitive rightValue = rightBuilder.visit(right); + IrBuilder rightBuilder = new IrBuilder.delimited(irBuilder); + ir.Primitive rightValue = + withBuilder(rightBuilder, () => visit(right)); // A dummy empty target for the branch on the left subexpression branch. // This enables using the same infrastructure for join-point continuations // as in visitIf and visitConditional. It will hold a definition of the // appropriate constant and an invocation of the join-point continuation. - IrBuilderVisitor emptyBuilder = new IrBuilderVisitor.delimited(this); + IrBuilder emptyBuilder = new IrBuilder.delimited(irBuilder); // Dummy empty targets for right true and right false. They hold // definitions of the appropriate constant and an invocation of the // join-point continuation. - IrBuilderVisitor rightTrueBuilder = new IrBuilderVisitor.delimited(rightBuilder); - IrBuilderVisitor rightFalseBuilder = new IrBuilderVisitor.delimited(rightBuilder); + IrBuilder rightTrueBuilder = new IrBuilder.delimited(rightBuilder); + IrBuilder rightFalseBuilder = new IrBuilder.delimited(rightBuilder); // If we don't evaluate the right subexpression, the value of the whole // expression is this constant. ir.Constant leftBool = emptyBuilder.makePrimConst( - constantSystem.createBool(op.source == '||')); + emptyBuilder.state.constantSystem.createBool(op.source == '||')); // If we do evaluate the right subexpression, the value of the expression // is a true or false constant. ir.Constant rightTrue = rightTrueBuilder.makePrimConst( - constantSystem.createBool(true)); + rightTrueBuilder.state.constantSystem.createBool(true)); ir.Constant rightFalse = rightFalseBuilder.makePrimConst( - constantSystem.createBool(false)); + rightFalseBuilder.state.constantSystem.createBool(false)); emptyBuilder.add(new ir.LetPrim(leftBool)); rightTrueBuilder.add(new ir.LetPrim(rightTrue)); rightFalseBuilder.add(new ir.LetPrim(rightFalse)); // Treat the result values as named values in the environment, so they // will be treated as arguments to the join-point continuation. - assert(environment.length == emptyBuilder.environment.length); - assert(environment.length == rightTrueBuilder.environment.length); - assert(environment.length == rightFalseBuilder.environment.length); + assert(irBuilder.environment.length == emptyBuilder.environment.length); + assert(irBuilder.environment.length == rightTrueBuilder.environment.length); + assert(irBuilder.environment.length == + rightFalseBuilder.environment.length); emptyBuilder.environment.extend(null, leftBool); rightTrueBuilder.environment.extend(null, rightTrue); rightFalseBuilder.environment.extend(null, rightFalse); @@ -1586,7 +1635,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { jumps.addJump(rightTrueBuilder); jumps.addJump(rightFalseBuilder); ir.Continuation joinContinuation = - createJoin(environment.length + 1, jumps); + createJoin(irBuilder.environment.length + 1, jumps); ir.Continuation leftTrueContinuation = new ir.Continuation([]); ir.Continuation leftFalseContinuation = new ir.Continuation([]); ir.Continuation rightTrueContinuation = new ir.Continuation([]); @@ -1611,7 +1660,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { leftFalseContinuation.body = rightBuilder._root; } - add(new ir.LetCont(joinContinuation, + irBuilder.add(new ir.LetCont(joinContinuation, new ir.LetCont(leftTrueContinuation, new ir.LetCont(leftFalseContinuation, new ir.Branch(new ir.IsTrue(leftValue), @@ -1623,7 +1672,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitOperatorSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); ast.Operator op = node.selector; if (isUserDefinableOperator(op.source)) { return visitDynamicSend(node); @@ -1649,7 +1698,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { message: "unexpected operator $op")); DartType type = elements.getType(node.typeAnnotationFromIsCheckOrCast); ir.Primitive receiver = visit(node.receiver); - ir.Primitive check = continueWithExpression( + ir.Primitive check = irBuilder.continueWithExpression( (k) => new ir.TypeOperator(op.source, receiver, type, k)); return node.isIsNotCheck ? buildNegation(check) : check; } @@ -1657,7 +1706,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // Build(StaticSend(f, arguments), C) = C[C'[InvokeStatic(f, xs)]] // where (C', xs) = arguments.fold(Build, C) ir.Primitive visitStaticSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); Element element = elements[node]; assert(!element.isConstructor); // TODO(lry): support foreign functions. @@ -1670,12 +1719,12 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // TODO(lry): support default arguments, need support for locals. List arguments = node.arguments.mapToList(visit, growable:false); - return buildStaticInvocation(element, selector, arguments); + return irBuilder.buildStaticInvocation(element, selector, arguments); } ir.Primitive visitSuperSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); if (node.isPropertyAccess) { return visitGetterSend(node); } else { @@ -1688,7 +1737,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitTypeLiteralSend(ast.Send node) { - assert(isOpen); + assert(irBuilder.isOpen); // If the user is trying to invoke the type literal or variable, // it must be treated as a function call. if (node.argumentsNode != null) { @@ -1699,7 +1748,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { DartType type = elements.getTypeLiteralType(node); if (type is TypeVariableType) { ir.Primitive prim = new ir.ReifyTypeVar(type.element); - add(new ir.LetPrim(prim)); + irBuilder.add(new ir.LetPrim(prim)); return prim; } else { return translateConstant(node); @@ -1712,16 +1761,16 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { /// /// If `true`, [element] is a [LocalElement]. bool isClosureVariable(Element element) { - return closureLocals.isClosureVariable(element); + return irBuilder.state.closureLocals.contains(element); } void setLocal(Element element, ir.Primitive valueToStore) { if (isClosureVariable(element)) { LocalElement local = element; - add(new ir.SetClosureVariable(local, valueToStore)); + irBuilder.add(new ir.SetClosureVariable(local, valueToStore)); } else { valueToStore.useElementAsHint(element); - environment.update(element, valueToStore); + irBuilder.environment.update(element, valueToStore); } } @@ -1729,7 +1778,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { Selector selector, ir.Primitive valueToStore) { assert(element.isErroneous || element.isField || element.isSetter); - continueWithExpression( + irBuilder.continueWithExpression( (k) => new ir.InvokeStatic(element, selector, k, [valueToStore])); } @@ -1737,7 +1786,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Primitive receiver, Selector selector, ir.Primitive valueToStore) { List arguments = [valueToStore]; - continueWithExpression( + irBuilder.continueWithExpression( (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); } @@ -1747,12 +1796,12 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Primitive index, ir.Primitive valueToStore) { List arguments = [index, valueToStore]; - continueWithExpression( + irBuilder.continueWithExpression( (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); } ir.Primitive visitSendSet(ast.SendSet node) { - assert(isOpen); + assert(irBuilder.isOpen); Element element = elements[node]; ast.Operator op = node.assignmentOperator; // For complex operators, this is the result of getting (before assigning) @@ -1803,8 +1852,9 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { // Do the modification of the value in getter. ir.Primitive arg; if (ast.Operator.INCREMENT_OPERATORS.contains(op.source)) { - arg = makePrimConst(constantSystem.createInt(1)); - add(new ir.LetPrim(arg)); + arg = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createInt(1)); + irBuilder.add(new ir.LetPrim(arg)); } else { arg = visit(getAssignArgument()); } @@ -1812,7 +1862,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { ir.Continuation k = new ir.Continuation([valueToStore]); ir.Expression invoke = new ir.InvokeMethod(originalValue, operatorSelector, k, [arg]); - add(new ir.LetCont(k, invoke)); + irBuilder.add(new ir.LetCont(k, invoke)); } if (Elements.isLocal(element)) { @@ -1841,7 +1891,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { } ir.Primitive visitNewExpression(ast.NewExpression node) { - assert(isOpen); + assert(irBuilder.isOpen); if (node.isConst) { return translateConstant(node); } @@ -1851,20 +1901,20 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { DartType type = elements.getType(node); List args = node.send.arguments.mapToList(visit, growable:false); - return continueWithExpression( + return irBuilder.continueWithExpression( (k) => new ir.InvokeConstructor(type, element,selector, k, args)); } ir.Primitive visitStringJuxtaposition(ast.StringJuxtaposition node) { - assert(isOpen); + assert(irBuilder.isOpen); ir.Primitive first = visit(node.first); ir.Primitive second = visit(node.second); - return continueWithExpression( + return irBuilder.continueWithExpression( (k) => new ir.ConcatenateStrings(k, [first, second])); } ir.Primitive visitStringInterpolation(ast.StringInterpolation node) { - assert(isOpen); + assert(irBuilder.isOpen); List arguments = []; arguments.add(visitLiteralString(node.string)); var it = node.parts.iterator; @@ -1873,21 +1923,22 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { arguments.add(visit(part.expression)); arguments.add(visitLiteralString(part.string)); } - return continueWithExpression( + return irBuilder.continueWithExpression( (k) => new ir.ConcatenateStrings(k, arguments)); } ir.Primitive translateConstant(ast.Node node, [ConstantExpression constant]) { - assert(isOpen); + assert(irBuilder.isOpen); if (constant == null) { constant = getConstantForNode(node); } - ir.Primitive primitive = makeConst(constant); - add(new ir.LetPrim(primitive)); + ir.Primitive primitive = irBuilder.makeConst(constant); + irBuilder.add(new ir.LetPrim(primitive)); return primitive; } ir.FunctionDefinition makeSubFunction(ast.FunctionExpression node) { + // TODO(johnniwinther): Share the visitor. return new IrBuilderVisitor(elements, compiler, sourceFile) .buildFunctionInternal(elements[node]); } @@ -1896,7 +1947,7 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { FunctionElement element = elements[node]; ir.FunctionDefinition inner = makeSubFunction(node); ir.CreateFunction prim = new ir.CreateFunction(inner); - add(new ir.LetPrim(prim)); + irBuilder.add(new ir.LetPrim(prim)); return prim; } @@ -1904,11 +1955,11 @@ class IrBuilderVisitor extends ResolvedVisitor with IrBuilder { LocalFunctionElement element = elements[node.function]; ir.FunctionDefinition inner = makeSubFunction(node.function); if (isClosureVariable(element)) { - add(new ir.DeclareFunction(element, inner)); + irBuilder.add(new ir.DeclareFunction(element, inner)); } else { ir.CreateFunction prim = new ir.CreateFunction(inner); - add(new ir.LetPrim(prim)); - environment.extend(element, prim); + irBuilder.add(new ir.LetPrim(prim)); + irBuilder.environment.extend(element, prim); prim.useElementAsHint(element); } return null; From 0496f8f2a10704b57efc0898321f1c9e74f04f07 Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Fri, 17 Oct 2014 11:55:07 +0000 Subject: [PATCH 20/91] Support dynamic get/invocation in analyzer2dart. BUG= R=floitsch@google.com Review URL: https://codereview.chromium.org//662593003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41164 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/cps_generator.dart | 46 ++++++++++--- .../lib/src/semantic_visitor.dart | 2 +- pkg/analyzer2dart/lib/src/tree_shaker.dart | 2 +- pkg/analyzer2dart/test/end2end_test.dart | 47 +++++++++++++- .../implementation/cps_ir/cps_ir_builder.dart | 64 ++++++++++++++++--- .../implementation/use_unused_api.dart | 3 +- 6 files changed, 140 insertions(+), 24 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart index b472b7540fe2..c2e1b90a141e 100644 --- a/pkg/analyzer2dart/lib/src/cps_generator.dart +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart @@ -19,7 +19,7 @@ import 'package:compiler/implementation/universe/universe.dart'; import 'semantic_visitor.dart'; import 'element_converter.dart'; import 'util.dart'; -import 'package:analyzer2dart/src/identifier_semantics.dart'; +import 'identifier_semantics.dart'; class CpsGeneratingVisitor extends SemanticVisitor with IrBuilderMixin { @@ -53,13 +53,9 @@ class CpsGeneratingVisitor extends SemanticVisitor }); } - @override - visitStaticMethodInvocation(MethodInvocation node, - AccessSemantics semantics) { - analyzer.Element staticElement = semantics.element; - dart2js.Element element = converter.convertElement(staticElement); + List visitArguments(ArgumentList argumentList) { List arguments = []; - for (Expression argument in node.argumentList.arguments) { + for (Expression argument in argumentList.arguments) { ir.Definition value = argument.accept(this); if (value == null) { giveUp(argument, @@ -67,6 +63,27 @@ class CpsGeneratingVisitor extends SemanticVisitor } arguments.add(value); } + return arguments; + } + + @override + ir.Primitive visitDynamicInvocation(MethodInvocation node, + AccessSemantics semantics) { + // TODO(johnniwinther): Handle implicit `this`. + ir.Primitive receiver = semantics.target.accept(this); + List arguments = visitArguments(node.argumentList); + return irBuilder.buildDynamicInvocation( + receiver, + createSelectorFromMethodInvocation(node, node.methodName.name), + arguments); + } + + @override + ir.Primitive visitStaticMethodInvocation(MethodInvocation node, + AccessSemantics semantics) { + analyzer.Element staticElement = semantics.element; + dart2js.Element element = converter.convertElement(staticElement); + List arguments = visitArguments(node.argumentList); return irBuilder.buildStaticInvocation( element, createSelectorFromMethodInvocation(node, node.methodName.name), @@ -147,7 +164,16 @@ class CpsGeneratingVisitor extends SemanticVisitor analyzer.Element element = semantics.element; dart2js.Element target = converter.convertElement(element); assert(invariant(node, target.isLocal, '$target expected to be local.')); - return irBuilder.buildGetLocal(target); + return irBuilder.buildLocalGet(target); + } + + @override + ir.Node visitDynamicAccess(AstNode node, AccessSemantics semantics) { + // TODO(johnniwinther): Handle implicit `this`. + ir.Primitive receiver = semantics.target.accept(this); + return irBuilder.buildDynamicGet(receiver, + new Selector.getter(semantics.identifier.name, + converter.convertElement(element.library))); } @override @@ -157,8 +183,8 @@ class CpsGeneratingVisitor extends SemanticVisitor // TODO(johnniwinther): Selector information should be computed in the // [TreeShaker] and shared with the [CpsGeneratingVisitor]. assert(invariant(node, target.isTopLevel || target.isStatic, - '$target expected to be top-level or static.')); - return irBuilder.buildGetStatic(target, + '$target expected to be top-level or static.')); + return irBuilder.buildStaticGet(target, new Selector.getter(target.name, target.library)); } } diff --git a/pkg/analyzer2dart/lib/src/semantic_visitor.dart b/pkg/analyzer2dart/lib/src/semantic_visitor.dart index 0cc203c61280..b0b955c132cb 100644 --- a/pkg/analyzer2dart/lib/src/semantic_visitor.dart +++ b/pkg/analyzer2dart/lib/src/semantic_visitor.dart @@ -8,7 +8,7 @@ import 'package:analyzer/analyzer.dart'; import 'package:analyzer/src/generated/source.dart'; import 'util.dart'; -import 'package:analyzer2dart/src/identifier_semantics.dart'; +import 'identifier_semantics.dart'; /// An AST visitor which uses the [AccessSemantics] of invocations and accesses /// to fine-grain visitor methods. diff --git a/pkg/analyzer2dart/lib/src/tree_shaker.dart b/pkg/analyzer2dart/lib/src/tree_shaker.dart index 899751c91aa3..bdf94c5809b2 100644 --- a/pkg/analyzer2dart/lib/src/tree_shaker.dart +++ b/pkg/analyzer2dart/lib/src/tree_shaker.dart @@ -14,7 +14,7 @@ import 'package:compiler/implementation/universe/universe.dart'; import 'closed_world.dart'; import 'util.dart'; import 'semantic_visitor.dart'; -import 'package:analyzer2dart/src/identifier_semantics.dart'; +import 'identifier_semantics.dart'; /** * The result of performing local reachability analysis on a method. diff --git a/pkg/analyzer2dart/test/end2end_test.dart b/pkg/analyzer2dart/test/end2end_test.dart index 11e9691d25bd..49b4fcd35584 100644 --- a/pkg/analyzer2dart/test/end2end_test.dart +++ b/pkg/analyzer2dart/test/end2end_test.dart @@ -11,7 +11,6 @@ import 'package:analyzer/file_system/memory_file_system.dart'; import 'package:analyzer/src/generated/element.dart'; import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/generated/source.dart'; -import 'package:compiler/implementation/dart_backend/backend_ast_to_frontend_ast.dart'; import 'package:unittest/unittest.dart'; import '../lib/src/closed_world.dart'; @@ -196,6 +195,52 @@ main() { main() { return 0; } +'''); + }); + + test('Dynamic access', () { + checkResult(''' +main(a) { + return a.foo; +} +''', ''' +main(a) { + return a.foo; +} +'''); + + checkResult(''' +main() { + var a = ""; + return a.foo; +} +''', ''' +main() { + return "".foo; +} +'''); + }); + + test('Dynamic invocation', () { + checkResult(''' +main(a) { + return a.foo(0); +} +''', ''' +main(a) { + return a.foo(0); +} +'''); + + checkResult(''' +main() { + var a = ""; + return a.foo(0, 1); +} +''', ''' +main() { + return "".foo(0, 1); +} '''); }); } diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 12962f9d3b8e..0dc3a0a5372a 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -345,8 +345,10 @@ class IrBuilder { bool get isOpen => _root == null || _current != null; /// Create a parameter for [parameterElement] and add it to the current - /// environment. If [isClosureVariable] marks whether [parameterElement] is - /// accessed from an inner function. + /// environment. + /// + /// [isClosureVariable] marks whether [parameterElement] is accessed from an + /// inner function. void createParameter(LocalElement parameterElement, {bool isClosureVariable: false}) { ir.Parameter parameter = new ir.Parameter(parameterElement); @@ -358,11 +360,18 @@ class IrBuilder { } } + /// Add the constant [variableElement] to the environment with [value] as its + /// constant value. void declareLocalConstant(LocalVariableElement variableElement, ConstantExpression value) { state.localConstants.add(new ConstDeclaration(variableElement, value)); } + /// Add [variableElement] to the environment with [initialValue] as its + /// initial value. + /// + /// [isClosureVariable] marks whether [variableElement] is accessed from an + /// inner function. void declareLocalVariable(LocalVariableElement variableElement, {ir.Primitive initialValue, bool isClosureVariable: false}) { @@ -451,17 +460,28 @@ class IrBuilder { } /// Create a get access of [local]. - ir.Primitive buildGetLocal(Element local) { + ir.Primitive buildLocalGet(Element local) { assert(isOpen); return environment.lookup(local); } /// Create a get access of the static [element]. - ir.Primitive buildGetStatic(Element element, Selector selector) { + ir.Primitive buildStaticGet(Element element, Selector selector) { + assert(isOpen); + assert(selector.isGetter); + return continueWithExpression( + (k) => new ir.InvokeStatic( + element, selector, k, const [])); + } + + /// Create a dynamic get access on [receiver] where the property is defined + /// by the getter [selector]. + ir.Primitive buildDynamicGet(ir.Primitive receiver, Selector selector) { assert(isOpen); assert(selector.isGetter); return continueWithExpression( - (k) => new ir.InvokeStatic(element, selector, k, [])); + (k) => new ir.InvokeMethod( + receiver, selector, k, const [])); } /** @@ -500,6 +520,28 @@ class IrBuilder { } } + + /// Create a super invocation with method name and arguments structure defined + /// by [selector] and argument values defined by [arguments]. + ir.Primitive buildSuperInvocation(Selector selector, + List arguments) { + assert(isOpen); + return continueWithExpression( + (k) => new ir.InvokeSuperMethod(selector, k, arguments)); + + } + + /// Create a dynamic invocation on [receiver] with method name and arguments + /// structure defined by [selector] and argument values defined by + /// [arguments]. + ir.Primitive buildDynamicInvocation(ir.Definition receiver, + Selector selector, + List arguments) { + assert(isOpen); + return continueWithExpression( + (k) => new ir.InvokeMethod(receiver, selector, k, arguments)); + } + /// Create a static invocation of [element] with arguments structure defined /// by [selector] and argument values defined by [arguments]. ir.Primitive buildStaticInvocation(Element element, @@ -1485,8 +1527,7 @@ class IrBuilderVisitor extends ResolvedVisitor for (ast.Node n in node.arguments) { arguments.add(visit(n)); } - return irBuilder.continueWithExpression( - (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); + return irBuilder.buildDynamicInvocation(receiver, selector, arguments); } _GetterElements translateGetter(ast.Send node, Selector selector) { @@ -1504,7 +1545,7 @@ class IrBuilderVisitor extends ResolvedVisitor irBuilder.add(new ir.LetPrim(result)); } else if (Elements.isLocal(element)) { // Reference to local variable - result = irBuilder.buildGetLocal(element); + result = irBuilder.buildLocalGet(element); } else if (element == null || Elements.isInstanceField(element) || Elements.isInstanceMethod(element) || @@ -1535,7 +1576,7 @@ class IrBuilderVisitor extends ResolvedVisitor // so the vm can fail at runtime. assert(selector.kind == SelectorKind.GETTER || selector.kind == SelectorKind.SETTER); - result = irBuilder.buildGetStatic(element, selector); + result = irBuilder.buildStaticGet(element, selector); } else if (Elements.isStaticOrTopLevelFunction(element)) { // Convert a top-level or static function to a function object. result = translateConstant(node); @@ -1728,7 +1769,10 @@ class IrBuilderVisitor extends ResolvedVisitor if (node.isPropertyAccess) { return visitGetterSend(node); } else { - return visitDynamicSend(node); + Selector selector = elements.getSelector(node); + List arguments = + node.arguments.mapToList(visit, growable: false); + return irBuilder.buildSuperInvocation(selector, arguments); } } diff --git a/sdk/lib/_internal/compiler/implementation/use_unused_api.dart b/sdk/lib/_internal/compiler/implementation/use_unused_api.dart index d4a270e34cf4..354d710d97dc 100644 --- a/sdk/lib/_internal/compiler/implementation/use_unused_api.dart +++ b/sdk/lib/_internal/compiler/implementation/use_unused_api.dart @@ -232,7 +232,8 @@ useIr(cps_ir_nodes_sexpr.SExpressionStringifier stringifier, ..buildDoubleLiteral(null) ..buildBooleanLiteral(null) ..buildNullLiteral() - ..buildStringLiteral(null); + ..buildStringLiteral(null) + ..buildDynamicGet(null, null); } useCompiler(dart2jslib.Compiler compiler) { From 621f291a27d17fc7e955b3017f932b9fafb75a0d Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Fri, 17 Oct 2014 12:04:32 +0000 Subject: [PATCH 21/91] Make cps_ir_builder_visitor a part. BUG= R=floitsch@google.com Review URL: https://codereview.chromium.org//651163004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41165 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/cps_ir/cps_ir_builder.dart | 1579 +--------------- .../cps_ir/cps_ir_builder_visitor.dart | 1584 +++++++++++++++++ 2 files changed, 1585 insertions(+), 1578 deletions(-) create mode 100644 sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 0dc3a0a5372a..6a2c566ff946 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -16,106 +16,7 @@ import '../scanner/scannerlib.dart' show Token, isUserDefinableOperator; import '../universe/universe.dart' show SelectorKind; import 'cps_ir_nodes.dart' as ir; -/** - * This task iterates through all resolved elements and builds [ir.Node]s. The - * nodes are stored in the [nodes] map and accessible through [hasIr] and - * [getIr]. - * - * The functionality of the IrNodes is added gradually, therefore elements might - * have an IR or not, depending on the language features that are used. For - * elements that do have an IR, the tree [ast.Node]s and the [Token]s are not - * used in the rest of the compilation. This is ensured by setting the element's - * cached tree to `null` and also breaking the token stream to crash future - * attempts to parse. - * - * The type inferrer works on either IR nodes or tree nodes. The IR nodes are - * then translated into the SSA form for optimizations and code generation. - * Long-term, once the IR supports the full language, the backend can be - * re-implemented to work directly on the IR. - */ -class IrBuilderTask extends CompilerTask { - final Map nodes = - {}; - - IrBuilderTask(Compiler compiler) : super(compiler); - - String get name => 'IR builder'; - - bool hasIr(Element element) => nodes.containsKey(element.implementation); - - ir.FunctionDefinition getIr(Element element) => nodes[element.implementation]; - - void buildNodes({bool useNewBackend: false}) { - if (!irEnabled(useNewBackend: useNewBackend)) return; - measure(() { - Set resolved = compiler.enqueuer.resolution.resolvedElements; - resolved.forEach((AstElement element) { - if (canBuild(element)) { - TreeElements elementsMapping = element.resolvedAst.elements; - element = element.implementation; - compiler.withCurrentElement(element, () { - SourceFile sourceFile = elementSourceFile(element); - IrBuilderVisitor builder = - new IrBuilderVisitor(elementsMapping, compiler, sourceFile); - ir.FunctionDefinition function; - function = builder.buildFunction(element); - - if (function != null) { - nodes[element] = function; - compiler.tracer.traceCompilation(element.name, null); - compiler.tracer.traceGraph("IR Builder", function); - } - }); - } - }); - }); - } - - bool irEnabled({bool useNewBackend: false}) { - // TODO(sigurdm,kmillikin): Support checked-mode checks. - return (useNewBackend || const bool.fromEnvironment('USE_NEW_BACKEND')) && - compiler.backend is DartBackend && - !compiler.enableTypeAssertions && - !compiler.enableConcreteTypeInference; - } - - bool canBuild(Element element) { - FunctionElement function = element.asFunctionElement(); - // TODO(kmillikin,sigurdm): support lazy field initializers. - if (function == null) return false; - - if (!compiler.backend.shouldOutput(function)) return false; - - assert(invariant(element, !function.isNative)); - - // TODO(kmillikin,sigurdm): Support constructors. - if (function is ConstructorElement) return false; - - return true; - } - - bool get inCheckedMode { - bool result = false; - assert((result = true)); - return result; - } - - SourceFile elementSourceFile(Element element) { - if (element is FunctionElement) { - FunctionElement functionElement = element; - if (functionElement.patch != null) element = functionElement.patch; - } - return element.compilationUnit.script.file; - } -} - -class _GetterElements { - ir.Primitive result; - ir.Primitive index; - ir.Primitive receiver; - - _GetterElements({this.result, this.index, this.receiver}) ; -} +part 'cps_ir_builder_visitor.dart'; /// A mapping from variable elements to their compile-time values. /// @@ -595,1481 +496,3 @@ class IrBuilder { return false; } } - -/** - * A tree visitor that builds [IrNodes]. The visit methods add statements using - * to the [builder] and return the last added statement for trees that represent - * an expression. - */ -class IrBuilderVisitor extends ResolvedVisitor - with IrBuilderMixin { - final Compiler compiler; - final SourceFile sourceFile; - - // In SSA terms, join-point continuation parameters are the phis and the - // continuation invocation arguments are the corresponding phi inputs. To - // support name introduction and renaming for source level variables, we use - // nested (delimited) visitors for constructing subparts of the IR that will - // need renaming. Each source variable is assigned an index. - // - // Each nested visitor maintains a list of free variable uses in the body. - // These are implemented as a list of parameters, each with their own use - // list of references. When the delimited subexpression is plugged into the - // surrounding context, the free occurrences can be captured or become free - // occurrences in the next outer delimited subexpression. - // - // Each nested visitor maintains a list that maps indexes of variables - // assigned in the delimited subexpression to their reaching definition --- - // that is, the definition in effect at the hole in 'current'. These are - // used to determine if a join-point continuation needs to be passed - // arguments, and what the arguments are. - - /// Construct a top-level visitor. - IrBuilderVisitor(TreeElements elements, this.compiler, this.sourceFile) - : super(elements); - - /** - * Builds the [ir.FunctionDefinition] for a function element. In case the - * function uses features that cannot be expressed in the IR, this function - * returns `null`. - */ - ir.FunctionDefinition buildFunction(FunctionElement functionElement) { - return nullIfGiveup(() => buildFunctionInternal(functionElement)); - } - - ir.FunctionDefinition buildFunctionInternal(FunctionElement element) { - assert(invariant(element, element.isImplementation)); - ast.FunctionExpression function = element.node; - assert(function != null); - assert(!function.modifiers.isExternal); - assert(elements[function] != null); - - DetectClosureVariables closureLocals = new DetectClosureVariables(elements); - closureLocals.visit(function); - - return withBuilder( - new IrBuilder(compiler.backend.constantSystem, - element, closureLocals.usedFromClosure), - () { - FunctionSignature signature = element.functionSignature; - signature.orderedForEachParameter((ParameterElement parameterElement) { - irBuilder.createParameter( - parameterElement, - isClosureVariable: isClosureVariable(parameterElement)); - }); - - List defaults = new List(); - signature.orderedOptionalParameters.forEach((ParameterElement element) { - defaults.add(getConstantForVariable(element)); - }); - - visit(function.body); - return irBuilder.buildFunctionDefinition(element, defaults); - }); - } - - ir.Primitive visit(ast.Node node) => node.accept(this); - - // ==== Statements ==== - // Build(Block(stamements), C) = C' - // where C' = statements.fold(Build, C) - ir.Primitive visitBlock(ast.Block node) { - assert(irBuilder.isOpen); - for (ast.Node n in node.statements.nodes) { - visit(n); - if (!irBuilder.isOpen) return null; - } - return null; - } - - ir.Primitive visitBreakStatement(ast.BreakStatement node) { - if (!irBuilder.buildBreak(elements.getTargetOf(node))) { - compiler.internalError(node, "'break' target not found"); - } - return null; - } - - ir.Primitive visitContinueStatement(ast.ContinueStatement node) { - if (!irBuilder.buildContinue(elements.getTargetOf(node))) { - compiler.internalError(node, "'continue' target not found"); - } - return null; - } - - // Build(EmptyStatement, C) = C - ir.Primitive visitEmptyStatement(ast.EmptyStatement node) { - assert(irBuilder.isOpen); - return null; - } - - // Build(ExpressionStatement(e), C) = C' - // where (C', _) = Build(e, C) - ir.Primitive visitExpressionStatement(ast.ExpressionStatement node) { - assert(irBuilder.isOpen); - visit(node.expression); - return null; - } - - - /// Create a non-recursive join-point continuation. - /// - /// Given the environment length at the join point and a list of - /// jumps that should reach the join point, create a join-point - /// continuation. The join-point continuation has a parameter for each - /// variable that has different values reaching on different paths. - /// - /// The jumps are uninitialized [ir.InvokeContinuation] expressions. - /// They are filled in with the target continuation and appropriate - /// arguments. - /// - /// As a side effect, the environment of this builder is updated to include - /// the join-point continuation parameters. - ir.Continuation createJoin(int environmentLength, JumpCollector jumps) { - assert(jumps.length >= 2); - - // Compute which values are identical on all paths reaching the join. - // Handle the common case of a pair of contexts efficiently. - Environment first = jumps.environments[0]; - Environment second = jumps.environments[1]; - assert(environmentLength <= first.length); - assert(environmentLength <= second.length); - assert(first.sameDomain(environmentLength, second)); - // A running count of the join-point parameters. - int parameterCount = 0; - // The null elements of common correspond to required parameters of the - // join-point continuation. - List common = - new List.generate(environmentLength, - (i) { - ir.Primitive candidate = first[i]; - if (second[i] == candidate) { - return candidate; - } else { - ++parameterCount; - return null; - } - }); - // If there is already a parameter for each variable, the other - // environments do not need to be considered. - if (parameterCount < environmentLength) { - for (int i = 0; i < environmentLength; ++i) { - ir.Primitive candidate = common[i]; - if (candidate == null) continue; - for (Environment current in jumps.environments.skip(2)) { - assert(environmentLength <= current.length); - assert(first.sameDomain(environmentLength, current)); - if (candidate != current[i]) { - common[i] = null; - ++parameterCount; - break; - } - } - if (parameterCount >= environmentLength) break; - } - } - - // Create the join point continuation. - List parameters = []; - parameters.length = parameterCount; - int index = 0; - for (int i = 0; i < environmentLength; ++i) { - if (common[i] == null) { - parameters[index++] = new ir.Parameter(first.index2variable[i]); - } - } - assert(index == parameterCount); - ir.Continuation join = new ir.Continuation(parameters); - - // Fill in all the continuation invocations. - for (int i = 0; i < jumps.length; ++i) { - Environment currentEnvironment = jumps.environments[i]; - ir.InvokeContinuation invoke = jumps.invocations[i]; - // Sharing this.environment with one of the invocations will not do - // the right thing (this.environment has already been mutated). - List arguments = []; - arguments.length = parameterCount; - int index = 0; - for (int i = 0; i < environmentLength; ++i) { - if (common[i] == null) { - arguments[index++] = new ir.Reference(currentEnvironment[i]); - } - } - invoke.continuation = new ir.Reference(join); - invoke.arguments = arguments; - } - - // Mutate this.environment to be the environment at the join point. Do - // this after adding the continuation invocations, because this.environment - // might be collected by the jump collector and so the old environment - // values are needed for the continuation invocation. - // - // Iterate to environment.length because environmentLength includes values - // outside the environment which are 'phantom' variables used for the - // values of expressions like &&, ||, and ?:. - index = 0; - for (int i = 0; i < irBuilder.environment.length; ++i) { - if (common[i] == null) { - irBuilder.environment.index2value[i] = parameters[index++]; - } - } - - return join; - } - - /// Invoke a join-point continuation that contains arguments for all local - /// variables. - /// - /// Given the continuation and a list of uninitialized invocations, fill - /// in each invocation with the continuation and appropriate arguments. - void invokeFullJoin(ir.Continuation join, - JumpCollector jumps, - {recursive: false}) { - join.isRecursive = recursive; - for (int i = 0; i < jumps.length; ++i) { - Environment currentEnvironment = jumps.environments[i]; - ir.InvokeContinuation invoke = jumps.invocations[i]; - invoke.continuation = new ir.Reference(join); - invoke.arguments = new List.generate( - join.parameters.length, - (i) => new ir.Reference(currentEnvironment[i])); - invoke.isRecursive = recursive; - } - } - - ir.Primitive visitFor(ast.For node) { - assert(irBuilder.isOpen); - // TODO(kmillikin,sigurdm): Handle closure variables declared in a for-loop. - if (node.initializer is ast.VariableDefinitions) { - ast.VariableDefinitions definitions = node.initializer; - for (ast.Node definition in definitions.definitions.nodes) { - Element element = elements[definition]; - if (isClosureVariable(element)) { - return giveup(definition, 'Closure variable in for loop initializer'); - } - } - } - - // For loops use four named continuations: the entry to the condition, - // the entry to the body, the loop exit, and the loop successor (break). - // The CPS translation of - // [[for (initializer; condition; update) body; successor]] is: - // - // [[initializer]]; - // let cont loop(x, ...) = - // let prim cond = [[condition]] in - // let cont break() = [[successor]] in - // let cont exit() = break(v, ...) in - // let cont body() = - // let cont continue(x, ...) = [[update]]; loop(v, ...) in - // [[body]]; continue(v, ...) in - // branch cond (body, exit) in - // loop(v, ...) - // - // If there are no breaks in the body, the break continuation is inlined - // in the exit continuation (i.e., the translation of the successor - // statement occurs in the exit continuation). If there is only one - // invocation of the continue continuation (i.e., no continues in the - // body), the continue continuation is inlined in the body. - - if (node.initializer != null) visit(node.initializer); - - IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); - ir.Primitive condition; - if (node.condition == null) { - // If the condition is empty then the body is entered unconditionally. - condition = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createBool(true)); - condBuilder.add(new ir.LetPrim(condition)); - } else { - condition = withBuilder(condBuilder, () => visit(node.condition)); - } - - JumpTarget target = elements.getTargetDefinition(node); - JumpCollector breakCollector = new JumpCollector(target); - JumpCollector continueCollector = new JumpCollector(target); - irBuilder.state.breakCollectors.add(breakCollector); - irBuilder.state.continueCollectors.add(continueCollector); - - IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); - withBuilder(bodyBuilder, () => visit(node.body)); - assert(irBuilder.state.breakCollectors.last == breakCollector); - assert(irBuilder.state.continueCollectors.last == continueCollector); - irBuilder.state.breakCollectors.removeLast(); - irBuilder.state.continueCollectors.removeLast(); - - // The binding of the continue continuation should occur as late as - // possible, that is, at the nearest common ancestor of all the continue - // sites in the body. However, that is difficult to compute here, so it - // is instead placed just outside the body of the body continuation. - bool hasContinues = !continueCollector.isEmpty; - IrBuilder updateBuilder = hasContinues - ? new IrBuilder.recursive(condBuilder) - : bodyBuilder; - for (ast.Node n in node.update) { - if (!updateBuilder.isOpen) break; - withBuilder(updateBuilder, () => visit(n)); - } - - // Create body entry and loop exit continuations and a branch to them. - ir.Continuation bodyContinuation = new ir.Continuation([]); - ir.Continuation exitContinuation = new ir.Continuation([]); - ir.LetCont branch = - new ir.LetCont(exitContinuation, - new ir.LetCont(bodyContinuation, - new ir.Branch(new ir.IsTrue(condition), - bodyContinuation, - exitContinuation))); - // If there are breaks in the body, then there must be a join-point - // continuation for the normal exit and the breaks. - bool hasBreaks = !breakCollector.isEmpty; - ir.LetCont letJoin; - if (hasBreaks) { - letJoin = new ir.LetCont(null, branch); - condBuilder.add(letJoin); - condBuilder._current = branch; - } else { - condBuilder.add(branch); - } - ir.Continuation continueContinuation; - if (hasContinues) { - // If there are continues in the body, we need a named continue - // continuation as a join point. - continueContinuation = new ir.Continuation(updateBuilder._parameters); - if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder); - invokeFullJoin(continueContinuation, continueCollector); - } - ir.Continuation loopContinuation = - new ir.Continuation(condBuilder._parameters); - if (updateBuilder.isOpen) { - JumpCollector backEdges = new JumpCollector(null); - backEdges.addJump(updateBuilder); - invokeFullJoin(loopContinuation, backEdges, recursive: true); - } - - // Fill in the body and possible continue continuation bodies. Do this - // only after it is guaranteed that they are not empty. - if (hasContinues) { - continueContinuation.body = updateBuilder._root; - bodyContinuation.body = - new ir.LetCont(continueContinuation, bodyBuilder._root); - } else { - bodyContinuation.body = bodyBuilder._root; - } - - loopContinuation.body = condBuilder._root; - irBuilder.add(new ir.LetCont(loopContinuation, - new ir.InvokeContinuation(loopContinuation, - irBuilder.environment.index2value))); - if (hasBreaks) { - irBuilder._current = branch; - irBuilder.environment = condBuilder.environment; - breakCollector.addJump(irBuilder); - letJoin.continuation = - createJoin(irBuilder.environment.length, breakCollector); - irBuilder._current = letJoin; - } else { - irBuilder._current = condBuilder._current; - irBuilder.environment = condBuilder.environment; - } - return null; - } - - ir.Primitive visitIf(ast.If node) { - assert(irBuilder.isOpen); - ir.Primitive condition = visit(node.condition); - - // The then and else parts are delimited. - IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); - IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); - withBuilder(thenBuilder, () => visit(node.thenPart)); - if (node.hasElsePart) { - withBuilder(elseBuilder, () => visit(node.elsePart)); - } - - // Build the term - // (Result =) let cont then() = [[thenPart]] in - // let cont else() = [[elsePart]] in - // if condition (then, else) - ir.Continuation thenContinuation = new ir.Continuation([]); - ir.Continuation elseContinuation = new ir.Continuation([]); - ir.Expression letElse = - new ir.LetCont(elseContinuation, - new ir.Branch(new ir.IsTrue(condition), - thenContinuation, - elseContinuation)); - ir.Expression letThen = new ir.LetCont(thenContinuation, letElse); - ir.Expression result = letThen; - - ir.Continuation joinContinuation; // Null if there is no join. - if (thenBuilder.isOpen && elseBuilder.isOpen) { - // There is a join-point continuation. Build the term - // 'let cont join(x, ...) = [] in Result' and plug invocations of the - // join-point continuation into the then and else continuations. - JumpCollector jumps = new JumpCollector(null); - jumps.addJump(thenBuilder); - jumps.addJump(elseBuilder); - joinContinuation = createJoin(irBuilder.environment.length, jumps); - result = new ir.LetCont(joinContinuation, result); - } - - // The then or else term root could be null, but not both. If there is - // a join then an InvokeContinuation was just added to both of them. If - // there is no join, then at least one of them is closed and thus has a - // non-null root by the definition of the predicate isClosed. In the - // case that one of them is null, it must be the only one that is open - // and thus contains the new hole in the context. This case is handled - // after the branch is plugged into the current hole. - thenContinuation.body = thenBuilder._root; - elseContinuation.body = elseBuilder._root; - - irBuilder.add(result); - if (joinContinuation == null) { - // At least one subexpression is closed. - if (thenBuilder.isOpen) { - irBuilder._current = - (thenBuilder._root == null) ? letThen : thenBuilder._current; - irBuilder.environment = thenBuilder.environment; - } else if (elseBuilder.isOpen) { - irBuilder._current = - (elseBuilder._root == null) ? letElse : elseBuilder._current; - irBuilder.environment = elseBuilder.environment; - } else { - irBuilder._current = null; - } - } - return null; - } - - ir.Primitive visitLabeledStatement(ast.LabeledStatement node) { - ast.Statement body = node.statement; - return body is ast.Loop - ? visit(body) - : giveup(node, 'labeled statement'); - } - - ir.Primitive visitWhile(ast.While node) { - assert(irBuilder.isOpen); - // While loops use four named continuations: the entry to the body, the - // loop exit, the loop back edge (continue), and the loop exit (break). - // The CPS translation of [[while (condition) body; successor]] is: - // - // let cont continue(x, ...) = - // let prim cond = [[condition]] in - // let cont break() = [[successor]] in - // let cont exit() = break(v, ...) in - // let cont body() = [[body]]; continue(v, ...) in - // branch cond (body, exit) in - // continue(v, ...) - // - // If there are no breaks in the body, the break continuation is inlined - // in the exit continuation (i.e., the translation of the successor - // statement occurs in the exit continuation). - - // The condition and body are delimited. - IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); - ir.Primitive condition = - withBuilder(condBuilder, () => visit(node.condition)); - - JumpTarget target = elements.getTargetDefinition(node); - JumpCollector breakCollector = new JumpCollector(target); - JumpCollector continueCollector = new JumpCollector(target); - irBuilder.state.breakCollectors.add(breakCollector); - irBuilder.state.continueCollectors.add(continueCollector); - - IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); - withBuilder(bodyBuilder, () => visit(node.body)); - assert(irBuilder.state.breakCollectors.last == breakCollector); - assert(irBuilder.state.continueCollectors.last == continueCollector); - irBuilder.state.breakCollectors.removeLast(); - irBuilder.state.continueCollectors.removeLast(); - - // Create body entry and loop exit continuations and a branch to them. - ir.Continuation bodyContinuation = new ir.Continuation([]); - ir.Continuation exitContinuation = new ir.Continuation([]); - ir.LetCont branch = - new ir.LetCont(exitContinuation, - new ir.LetCont(bodyContinuation, - new ir.Branch(new ir.IsTrue(condition), - bodyContinuation, - exitContinuation))); - // If there are breaks in the body, then there must be a join-point - // continuation for the normal exit and the breaks. - bool hasBreaks = !breakCollector.isEmpty; - ir.LetCont letJoin; - if (hasBreaks) { - letJoin = new ir.LetCont(null, branch); - condBuilder.add(letJoin); - condBuilder._current = branch; - } else { - condBuilder.add(branch); - } - ir.Continuation loopContinuation = - new ir.Continuation(condBuilder._parameters); - if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder); - invokeFullJoin(loopContinuation, continueCollector, recursive: true); - bodyContinuation.body = bodyBuilder._root; - - loopContinuation.body = condBuilder._root; - irBuilder.add(new ir.LetCont(loopContinuation, - new ir.InvokeContinuation(loopContinuation, - irBuilder.environment.index2value))); - if (hasBreaks) { - irBuilder._current = branch; - irBuilder.environment = condBuilder.environment; - breakCollector.addJump(irBuilder); - letJoin.continuation = - createJoin(irBuilder.environment.length, breakCollector); - irBuilder._current = letJoin; - } else { - irBuilder._current = condBuilder._current; - irBuilder.environment = condBuilder.environment; - } - return null; - } - - ir.Primitive visitForIn(ast.ForIn node) { - // The for-in loop - // - // for (a in e) s; - // - // Is compiled analogously to: - // - // a = e.iterator; - // while (a.moveNext()) { - // var n0 = a.current; - // s; - // } - - // The condition and body are delimited. - IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); - - ir.Primitive expressionReceiver = visit(node.expression); - List emptyArguments = new List(); - - ir.Parameter iterator = new ir.Parameter(null); - ir.Continuation iteratorInvoked = new ir.Continuation([iterator]); - irBuilder.add(new ir.LetCont(iteratorInvoked, - new ir.InvokeMethod(expressionReceiver, - new Selector.getter("iterator", null), iteratorInvoked, - emptyArguments))); - - ir.Parameter condition = new ir.Parameter(null); - ir.Continuation moveNextInvoked = new ir.Continuation([condition]); - condBuilder.add(new ir.LetCont(moveNextInvoked, - new ir.InvokeMethod(iterator, - new Selector.call("moveNext", null, 0), - moveNextInvoked, emptyArguments))); - - JumpTarget target = elements.getTargetDefinition(node); - JumpCollector breakCollector = new JumpCollector(target); - JumpCollector continueCollector = new JumpCollector(target); - irBuilder.state.breakCollectors.add(breakCollector); - irBuilder.state.continueCollectors.add(continueCollector); - - IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); - ast.Node identifier = node.declaredIdentifier; - Element variableElement = elements.getForInVariable(node); - Selector selector = elements.getSelector(identifier); - - // node.declaredIdentifier can be either an ast.VariableDefinitions - // (defining a new local variable) or a send designating some existing - // variable. - ast.Node declaredIdentifier = node.declaredIdentifier; - - if (declaredIdentifier is ast.VariableDefinitions) { - withBuilder(bodyBuilder, () => visit(declaredIdentifier)); - } - - ir.Parameter currentValue = new ir.Parameter(null); - ir.Continuation currentInvoked = new ir.Continuation([currentValue]); - bodyBuilder.add(new ir.LetCont(currentInvoked, - new ir.InvokeMethod(iterator, new Selector.getter("current", null), - currentInvoked, emptyArguments))); - if (Elements.isLocal(variableElement)) { - withBuilder(bodyBuilder, () => setLocal(variableElement, currentValue)); - } else if (Elements.isStaticOrTopLevel(variableElement)) { - withBuilder(bodyBuilder, - () => setStatic(variableElement, selector, currentValue)); - } else { - ir.Primitive receiver = - withBuilder(bodyBuilder, () => lookupThis()); - withBuilder(bodyBuilder, - () => setDynamic(null, receiver, selector, currentValue)); - } - - withBuilder(bodyBuilder, () => visit(node.body)); - assert(irBuilder.state.breakCollectors.last == breakCollector); - assert(irBuilder.state.continueCollectors.last == continueCollector); - irBuilder.state.breakCollectors.removeLast(); - irBuilder.state.continueCollectors.removeLast(); - - // Create body entry and loop exit continuations and a branch to them. - ir.Continuation bodyContinuation = new ir.Continuation([]); - ir.Continuation exitContinuation = new ir.Continuation([]); - ir.LetCont branch = - new ir.LetCont(exitContinuation, - new ir.LetCont(bodyContinuation, - new ir.Branch(new ir.IsTrue(condition), - bodyContinuation, - exitContinuation))); - // If there are breaks in the body, then there must be a join-point - // continuation for the normal exit and the breaks. - bool hasBreaks = !breakCollector.isEmpty; - ir.LetCont letJoin; - if (hasBreaks) { - letJoin = new ir.LetCont(null, branch); - condBuilder.add(letJoin); - condBuilder._current = branch; - } else { - condBuilder.add(branch); - } - ir.Continuation loopContinuation = - new ir.Continuation(condBuilder._parameters); - if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder); - invokeFullJoin(loopContinuation, continueCollector, recursive: true); - bodyContinuation.body = bodyBuilder._root; - - loopContinuation.body = condBuilder._root; - irBuilder.add(new ir.LetCont(loopContinuation, - new ir.InvokeContinuation(loopContinuation, - irBuilder.environment.index2value))); - if (hasBreaks) { - irBuilder._current = branch; - irBuilder.environment = condBuilder.environment; - breakCollector.addJump(irBuilder); - letJoin.continuation = - createJoin(irBuilder.environment.length, breakCollector); - irBuilder._current = letJoin; - } else { - irBuilder._current = condBuilder._current; - irBuilder.environment = condBuilder.environment; - } - return null; - } - - ir.Primitive visitVariableDefinitions(ast.VariableDefinitions node) { - assert(irBuilder.isOpen); - if (node.modifiers.isConst) { - for (ast.SendSet definition in node.definitions.nodes) { - assert(!definition.arguments.isEmpty); - assert(definition.arguments.tail.isEmpty); - VariableElement element = elements[definition]; - ConstantExpression value = getConstantForVariable(element); - irBuilder.declareLocalConstant(element, value); - } - } else { - for (ast.Node definition in node.definitions.nodes) { - Element element = elements[definition]; - ir.Primitive initialValue; - // Definitions are either SendSets if there is an initializer, or - // Identifiers if there is no initializer. - if (definition is ast.SendSet) { - assert(!definition.arguments.isEmpty); - assert(definition.arguments.tail.isEmpty); - initialValue = visit(definition.arguments.head); - } else { - assert(definition is ast.Identifier); - } - irBuilder.declareLocalVariable(element, - initialValue: initialValue, - isClosureVariable: isClosureVariable(element)); - } - } - return null; - } - - // Build(Return(e), C) = C'[InvokeContinuation(return, x)] - // where (C', x) = Build(e, C) - // - // Return without a subexpression is translated as if it were return null. - ir.Primitive visitReturn(ast.Return node) { - assert(irBuilder.isOpen); - assert(invariant(node, node.beginToken.value != 'native')); - if (node.expression == null) { - irBuilder.buildReturn(); - } else { - irBuilder.buildReturn(visit(node.expression)); - } - return null; - } - - // ==== Expressions ==== - ir.Primitive visitConditional(ast.Conditional node) { - assert(irBuilder.isOpen); - ir.Primitive condition = visit(node.condition); - - // The then and else expressions are delimited. - IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); - IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); - ir.Primitive thenValue = - withBuilder(thenBuilder, () => visit(node.thenExpression)); - ir.Primitive elseValue = - withBuilder(elseBuilder, () => visit(node.elseExpression)); - - // Treat the values of the subexpressions as named values in the - // environment, so they will be treated as arguments to the join-point - // continuation. - assert(irBuilder.environment.length == thenBuilder.environment.length); - assert(irBuilder.environment.length == elseBuilder.environment.length); - thenBuilder.environment.extend(null, thenValue); - elseBuilder.environment.extend(null, elseValue); - JumpCollector jumps = new JumpCollector(null); - jumps.addJump(thenBuilder); - jumps.addJump(elseBuilder); - ir.Continuation joinContinuation = - createJoin(irBuilder.environment.length + 1, jumps); - - // Build the term - // let cont join(x, ..., result) = [] in - // let cont then() = [[thenPart]]; join(v, ...) in - // let cont else() = [[elsePart]]; join(v, ...) in - // if condition (then, else) - ir.Continuation thenContinuation = new ir.Continuation([]); - ir.Continuation elseContinuation = new ir.Continuation([]); - thenContinuation.body = thenBuilder._root; - elseContinuation.body = elseBuilder._root; - irBuilder.add(new ir.LetCont(joinContinuation, - new ir.LetCont(thenContinuation, - new ir.LetCont(elseContinuation, - new ir.Branch(new ir.IsTrue(condition), - thenContinuation, - elseContinuation))))); - return (thenValue == elseValue) - ? thenValue - : joinContinuation.parameters.last; - } - - // For all simple literals: - // Build(Literal(c), C) = C[let val x = Constant(c) in [], x] - ir.Primitive visitLiteralBool(ast.LiteralBool node) { - assert(irBuilder.isOpen); - return translateConstant(node); - } - - ir.Primitive visitLiteralDouble(ast.LiteralDouble node) { - assert(irBuilder.isOpen); - return translateConstant(node); - } - - ir.Primitive visitLiteralInt(ast.LiteralInt node) { - assert(irBuilder.isOpen); - return translateConstant(node); - } - - ir.Primitive visitLiteralNull(ast.LiteralNull node) { - assert(irBuilder.isOpen); - return translateConstant(node); - } - - ir.Primitive visitLiteralString(ast.LiteralString node) { - assert(irBuilder.isOpen); - return translateConstant(node); - } - - ConstantExpression getConstantForNode(ast.Node node) { - ConstantExpression constant = - compiler.backend.constantCompilerTask.compileNode(node, elements); - assert(invariant(node, constant != null, - message: 'No constant computed for $node')); - return constant; - } - - ConstantExpression getConstantForVariable(VariableElement element) { - ConstantExpression constant = - compiler.backend.constants.getConstantForVariable(element); - assert(invariant(element, constant != null, - message: 'No constant computed for $element')); - return constant; - } - - ir.Primitive visitLiteralList(ast.LiteralList node) { - assert(irBuilder.isOpen); - if (node.isConst) { - return translateConstant(node); - } - List values = node.elements.nodes.mapToList(visit); - GenericType type = elements.getType(node); - ir.Primitive result = new ir.LiteralList(type, values); - irBuilder.add(new ir.LetPrim(result)); - return result; - } - - ir.Primitive visitLiteralMap(ast.LiteralMap node) { - assert(irBuilder.isOpen); - if (node.isConst) { - return translateConstant(node); - } - List keys = new List(); - List values = new List(); - node.entries.nodes.forEach((ast.LiteralMapEntry node) { - keys.add(visit(node.key)); - values.add(visit(node.value)); - }); - GenericType type = elements.getType(node); - ir.Primitive result = new ir.LiteralMap(type, keys, values); - irBuilder.add(new ir.LetPrim(result)); - return result; - } - - ir.Primitive visitLiteralSymbol(ast.LiteralSymbol node) { - assert(irBuilder.isOpen); - return translateConstant(node); - } - - ir.Primitive visitIdentifier(ast.Identifier node) { - assert(irBuilder.isOpen); - // "this" is the only identifier that should be met by the visitor. - assert(node.isThis()); - return lookupThis(); - } - - ir.Primitive visitParenthesizedExpression( - ast.ParenthesizedExpression node) { - assert(irBuilder.isOpen); - return visit(node.expression); - } - - // Stores the result of visiting a CascadeReceiver, so we can return it from - // its enclosing Cascade. - ir.Primitive _currentCascadeReceiver; - - ir.Primitive visitCascadeReceiver(ast.CascadeReceiver node) { - assert(irBuilder.isOpen); - return _currentCascadeReceiver = visit(node.expression); - } - - ir.Primitive visitCascade(ast.Cascade node) { - assert(irBuilder.isOpen); - var oldCascadeReceiver = _currentCascadeReceiver; - // Throw away the result of visiting the expression. - // Instead we return the result of visiting the CascadeReceiver. - this.visit(node.expression); - ir.Primitive receiver = _currentCascadeReceiver; - _currentCascadeReceiver = oldCascadeReceiver; - return receiver; - } - - ir.Primitive lookupThis() { - ir.Primitive result = new ir.This(); - irBuilder.add(new ir.LetPrim(result)); - return result; - } - - // ==== Sends ==== - ir.Primitive visitAssert(ast.Send node) { - assert(irBuilder.isOpen); - return giveup(node, 'Assert'); - } - - ir.Primitive visitNamedArgument(ast.NamedArgument node) { - assert(irBuilder.isOpen); - return visit(node.expression); - } - - ir.Primitive translateClosureCall(ir.Primitive receiver, - Selector closureSelector, - ast.NodeList arguments) { - Selector namedCallSelector = new Selector(closureSelector.kind, - "call", - closureSelector.library, - closureSelector.argumentCount, - closureSelector.namedArguments); - List args = arguments.nodes.mapToList(visit, growable:false); - return irBuilder.continueWithExpression( - (k) => new ir.InvokeMethod(receiver, namedCallSelector, k, args)); - } - - ir.Primitive visitClosureSend(ast.Send node) { - assert(irBuilder.isOpen); - Element element = elements[node]; - ir.Primitive closureTarget; - if (element == null) { - closureTarget = visit(node.selector); - } else if (isClosureVariable(element)) { - LocalElement local = element; - closureTarget = new ir.GetClosureVariable(local); - irBuilder.add(new ir.LetPrim(closureTarget)); - } else { - assert(Elements.isLocal(element)); - closureTarget = irBuilder.environment.lookup(element); - } - Selector closureSelector = elements.getSelector(node); - return translateClosureCall(closureTarget, closureSelector, - node.argumentsNode); - } - - /// If [node] is null, returns this. - /// If [node] is super, returns null (for special handling) - /// Otherwise visits [node] and returns the result. - ir.Primitive visitReceiver(ast.Expression node) { - if (node == null) return lookupThis(); - if (node.isSuper()) return null; - return visit(node); - } - - /// Makes an [InvokeMethod] unless [node.receiver.isSuper()], in that case - /// makes an [InvokeSuperMethod] ignoring [receiver]. - ir.Expression createDynamicInvoke(ast.Send node, - Selector selector, - ir.Definition receiver, - ir.Continuation k, - List arguments) { - return node != null && node.receiver != null && node.receiver.isSuper() - ? new ir.InvokeSuperMethod(selector, k, arguments) - : new ir.InvokeMethod(receiver, selector, k, arguments); - } - - ir.Primitive visitDynamicSend(ast.Send node) { - assert(irBuilder.isOpen); - Selector selector = elements.getSelector(node); - ir.Primitive receiver = visitReceiver(node.receiver); - List arguments = new List(); - for (ast.Node n in node.arguments) { - arguments.add(visit(n)); - } - return irBuilder.buildDynamicInvocation(receiver, selector, arguments); - } - - _GetterElements translateGetter(ast.Send node, Selector selector) { - Element element = elements[node]; - ir.Primitive result; - ir.Primitive receiver; - ir.Primitive index; - - if (element != null && element.isConst) { - // Reference to constant local, top-level or static field - result = translateConstant(node); - } else if (isClosureVariable(element)) { - LocalElement local = element; - result = new ir.GetClosureVariable(local); - irBuilder.add(new ir.LetPrim(result)); - } else if (Elements.isLocal(element)) { - // Reference to local variable - result = irBuilder.buildLocalGet(element); - } else if (element == null || - Elements.isInstanceField(element) || - Elements.isInstanceMethod(element) || - selector.isIndex || - // TODO(johnniwinther): clean up semantics of resolution. - node.isSuperCall) { - // Dynamic dispatch to a getter. Sometimes resolution will suggest a - // target element, but in these cases we must still emit a dynamic - // dispatch. The target element may be an instance method in case we are - // converting a method to a function object. - - receiver = visitReceiver(node.receiver); - List arguments = new List(); - if (selector.isIndex) { - index = visit(node.arguments.head); - arguments.add(index); - } - - assert(selector.kind == SelectorKind.GETTER || - selector.kind == SelectorKind.INDEX); - result = irBuilder.continueWithExpression( - (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); - } else if (element.isField || element.isGetter || element.isErroneous || - element.isSetter) { - // TODO(johnniwinther): Change handling of setter selectors. - // Access to a static field or getter (non-static case handled above). - // Even if there is only a setter, we compile as if it was a getter, - // so the vm can fail at runtime. - assert(selector.kind == SelectorKind.GETTER || - selector.kind == SelectorKind.SETTER); - result = irBuilder.buildStaticGet(element, selector); - } else if (Elements.isStaticOrTopLevelFunction(element)) { - // Convert a top-level or static function to a function object. - result = translateConstant(node); - } else { - throw "Unexpected SendSet getter: $node, $element"; - } - return new _GetterElements( - result: result,index: index, receiver: receiver); - } - - ir.Primitive visitGetterSend(ast.Send node) { - assert(irBuilder.isOpen); - return translateGetter(node, elements.getSelector(node)).result; - - } - - ir.Primitive buildNegation(ir.Primitive condition) { - // ! e is translated as e ? false : true - - // Add a continuation parameter for the result of the expression. - ir.Parameter resultParameter = new ir.Parameter(null); - - ir.Continuation joinContinuation = new ir.Continuation([resultParameter]); - ir.Continuation thenContinuation = new ir.Continuation([]); - ir.Continuation elseContinuation = new ir.Continuation([]); - - ir.Constant trueConstant = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createBool(true)); - ir.Constant falseConstant = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createBool(false)); - - thenContinuation.body = new ir.LetPrim(falseConstant) - ..plug(new ir.InvokeContinuation(joinContinuation, [falseConstant])); - elseContinuation.body = new ir.LetPrim(trueConstant) - ..plug(new ir.InvokeContinuation(joinContinuation, [trueConstant])); - - irBuilder.add(new ir.LetCont(joinContinuation, - new ir.LetCont(thenContinuation, - new ir.LetCont(elseContinuation, - new ir.Branch(new ir.IsTrue(condition), - thenContinuation, - elseContinuation))))); - return resultParameter; - } - - ir.Primitive translateLogicalOperator(ast.Operator op, - ast.Expression left, - ast.Expression right) { - // e0 && e1 is translated as if e0 ? (e1 == true) : false. - // e0 || e1 is translated as if e0 ? true : (e1 == true). - // The translation must convert both e0 and e1 to booleans and handle - // local variable assignments in e1. - - ir.Primitive leftValue = visit(left); - IrBuilder rightBuilder = new IrBuilder.delimited(irBuilder); - ir.Primitive rightValue = - withBuilder(rightBuilder, () => visit(right)); - // A dummy empty target for the branch on the left subexpression branch. - // This enables using the same infrastructure for join-point continuations - // as in visitIf and visitConditional. It will hold a definition of the - // appropriate constant and an invocation of the join-point continuation. - IrBuilder emptyBuilder = new IrBuilder.delimited(irBuilder); - // Dummy empty targets for right true and right false. They hold - // definitions of the appropriate constant and an invocation of the - // join-point continuation. - IrBuilder rightTrueBuilder = new IrBuilder.delimited(rightBuilder); - IrBuilder rightFalseBuilder = new IrBuilder.delimited(rightBuilder); - - // If we don't evaluate the right subexpression, the value of the whole - // expression is this constant. - ir.Constant leftBool = emptyBuilder.makePrimConst( - emptyBuilder.state.constantSystem.createBool(op.source == '||')); - // If we do evaluate the right subexpression, the value of the expression - // is a true or false constant. - ir.Constant rightTrue = rightTrueBuilder.makePrimConst( - rightTrueBuilder.state.constantSystem.createBool(true)); - ir.Constant rightFalse = rightFalseBuilder.makePrimConst( - rightFalseBuilder.state.constantSystem.createBool(false)); - emptyBuilder.add(new ir.LetPrim(leftBool)); - rightTrueBuilder.add(new ir.LetPrim(rightTrue)); - rightFalseBuilder.add(new ir.LetPrim(rightFalse)); - - // Treat the result values as named values in the environment, so they - // will be treated as arguments to the join-point continuation. - assert(irBuilder.environment.length == emptyBuilder.environment.length); - assert(irBuilder.environment.length == rightTrueBuilder.environment.length); - assert(irBuilder.environment.length == - rightFalseBuilder.environment.length); - emptyBuilder.environment.extend(null, leftBool); - rightTrueBuilder.environment.extend(null, rightTrue); - rightFalseBuilder.environment.extend(null, rightFalse); - - // Wire up two continuations for the left subexpression, two continuations - // for the right subexpression, and a three-way join continuation. - JumpCollector jumps = new JumpCollector(null); - jumps.addJump(emptyBuilder); - jumps.addJump(rightTrueBuilder); - jumps.addJump(rightFalseBuilder); - ir.Continuation joinContinuation = - createJoin(irBuilder.environment.length + 1, jumps); - ir.Continuation leftTrueContinuation = new ir.Continuation([]); - ir.Continuation leftFalseContinuation = new ir.Continuation([]); - ir.Continuation rightTrueContinuation = new ir.Continuation([]); - ir.Continuation rightFalseContinuation = new ir.Continuation([]); - rightTrueContinuation.body = rightTrueBuilder._root; - rightFalseContinuation.body = rightFalseBuilder._root; - // The right subexpression has two continuations. - rightBuilder.add( - new ir.LetCont(rightTrueContinuation, - new ir.LetCont(rightFalseContinuation, - new ir.Branch(new ir.IsTrue(rightValue), - rightTrueContinuation, - rightFalseContinuation)))); - // Depending on the operator, the left subexpression's continuations are - // either the right subexpression or an invocation of the join-point - // continuation. - if (op.source == '&&') { - leftTrueContinuation.body = rightBuilder._root; - leftFalseContinuation.body = emptyBuilder._root; - } else { - leftTrueContinuation.body = emptyBuilder._root; - leftFalseContinuation.body = rightBuilder._root; - } - - irBuilder.add(new ir.LetCont(joinContinuation, - new ir.LetCont(leftTrueContinuation, - new ir.LetCont(leftFalseContinuation, - new ir.Branch(new ir.IsTrue(leftValue), - leftTrueContinuation, - leftFalseContinuation))))); - // There is always a join parameter for the result value, because it - // is different on at least two paths. - return joinContinuation.parameters.last; - } - - ir.Primitive visitOperatorSend(ast.Send node) { - assert(irBuilder.isOpen); - ast.Operator op = node.selector; - if (isUserDefinableOperator(op.source)) { - return visitDynamicSend(node); - } - if (op.source == '&&' || op.source == '||') { - assert(node.receiver != null); - assert(!node.arguments.isEmpty); - assert(node.arguments.tail.isEmpty); - return translateLogicalOperator(op, node.receiver, node.arguments.head); - } - if (op.source == "!") { - assert(node.receiver != null); - assert(node.arguments.isEmpty); - return buildNegation(visit(node.receiver)); - } - if (op.source == "!=") { - assert(node.receiver != null); - assert(!node.arguments.isEmpty); - assert(node.arguments.tail.isEmpty); - return buildNegation(visitDynamicSend(node)); - } - assert(invariant(node, op.source == "is" || op.source == "as", - message: "unexpected operator $op")); - DartType type = elements.getType(node.typeAnnotationFromIsCheckOrCast); - ir.Primitive receiver = visit(node.receiver); - ir.Primitive check = irBuilder.continueWithExpression( - (k) => new ir.TypeOperator(op.source, receiver, type, k)); - return node.isIsNotCheck ? buildNegation(check) : check; - } - - // Build(StaticSend(f, arguments), C) = C[C'[InvokeStatic(f, xs)]] - // where (C', xs) = arguments.fold(Build, C) - ir.Primitive visitStaticSend(ast.Send node) { - assert(irBuilder.isOpen); - Element element = elements[node]; - assert(!element.isConstructor); - // TODO(lry): support foreign functions. - if (element.isForeign(compiler.backend)) { - return giveup(node, 'StaticSend: foreign'); - } - - Selector selector = elements.getSelector(node); - - // TODO(lry): support default arguments, need support for locals. - List arguments = node.arguments.mapToList(visit, - growable:false); - return irBuilder.buildStaticInvocation(element, selector, arguments); - } - - - ir.Primitive visitSuperSend(ast.Send node) { - assert(irBuilder.isOpen); - if (node.isPropertyAccess) { - return visitGetterSend(node); - } else { - Selector selector = elements.getSelector(node); - List arguments = - node.arguments.mapToList(visit, growable: false); - return irBuilder.buildSuperInvocation(selector, arguments); - } - } - - visitTypePrefixSend(ast.Send node) { - compiler.internalError(node, "visitTypePrefixSend should not be called."); - } - - ir.Primitive visitTypeLiteralSend(ast.Send node) { - assert(irBuilder.isOpen); - // If the user is trying to invoke the type literal or variable, - // it must be treated as a function call. - if (node.argumentsNode != null) { - // TODO(sigurdm): Handle this to match proposed semantics of issue #19725. - return giveup(node, 'Type literal invoked as function'); - } - - DartType type = elements.getTypeLiteralType(node); - if (type is TypeVariableType) { - ir.Primitive prim = new ir.ReifyTypeVar(type.element); - irBuilder.add(new ir.LetPrim(prim)); - return prim; - } else { - return translateConstant(node); - } - } - - /// True if [element] is a local variable, local function, or parameter that - /// is accessed from an inner function. Recursive self-references in a local - /// function count as closure accesses. - /// - /// If `true`, [element] is a [LocalElement]. - bool isClosureVariable(Element element) { - return irBuilder.state.closureLocals.contains(element); - } - - void setLocal(Element element, ir.Primitive valueToStore) { - if (isClosureVariable(element)) { - LocalElement local = element; - irBuilder.add(new ir.SetClosureVariable(local, valueToStore)); - } else { - valueToStore.useElementAsHint(element); - irBuilder.environment.update(element, valueToStore); - } - } - - void setStatic(Element element, - Selector selector, - ir.Primitive valueToStore) { - assert(element.isErroneous || element.isField || element.isSetter); - irBuilder.continueWithExpression( - (k) => new ir.InvokeStatic(element, selector, k, [valueToStore])); - } - - void setDynamic(ast.Node node, - ir.Primitive receiver, Selector selector, - ir.Primitive valueToStore) { - List arguments = [valueToStore]; - irBuilder.continueWithExpression( - (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); - } - - void setIndex(ast.Node node, - ir.Primitive receiver, - Selector selector, - ir.Primitive index, - ir.Primitive valueToStore) { - List arguments = [index, valueToStore]; - irBuilder.continueWithExpression( - (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); - } - - ir.Primitive visitSendSet(ast.SendSet node) { - assert(irBuilder.isOpen); - Element element = elements[node]; - ast.Operator op = node.assignmentOperator; - // For complex operators, this is the result of getting (before assigning) - ir.Primitive originalValue; - // For []+= style operators, this saves the index. - ir.Primitive index; - ir.Primitive receiver; - // This is what gets assigned. - ir.Primitive valueToStore; - Selector selector = elements.getSelector(node); - Selector operatorSelector = - elements.getOperatorSelectorInComplexSendSet(node); - Selector getterSelector = - elements.getGetterSelectorInComplexSendSet(node); - assert( - // Indexing send-sets have an argument for the index. - (selector.isIndexSet ? 1 : 0) + - // Non-increment send-sets have one more argument. - (ast.Operator.INCREMENT_OPERATORS.contains(op.source) ? 0 : 1) - == node.argumentCount()); - - ast.Node getAssignArgument() { - assert(invariant(node, !node.arguments.isEmpty, - message: "argument expected")); - return selector.isIndexSet - ? node.arguments.tail.head - : node.arguments.head; - } - - // Get the value into valueToStore - if (op.source == "=") { - if (selector.isIndexSet) { - receiver = visitReceiver(node.receiver); - index = visit(node.arguments.head); - } else if (element == null || Elements.isInstanceField(element)) { - receiver = visitReceiver(node.receiver); - } - valueToStore = visit(getAssignArgument()); - } else { - // Get the original value into getter - assert(ast.Operator.COMPLEX_OPERATORS.contains(op.source)); - - _GetterElements getterResult = translateGetter(node, getterSelector); - index = getterResult.index; - receiver = getterResult.receiver; - originalValue = getterResult.result; - - // Do the modification of the value in getter. - ir.Primitive arg; - if (ast.Operator.INCREMENT_OPERATORS.contains(op.source)) { - arg = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createInt(1)); - irBuilder.add(new ir.LetPrim(arg)); - } else { - arg = visit(getAssignArgument()); - } - valueToStore = new ir.Parameter(null); - ir.Continuation k = new ir.Continuation([valueToStore]); - ir.Expression invoke = - new ir.InvokeMethod(originalValue, operatorSelector, k, [arg]); - irBuilder.add(new ir.LetCont(k, invoke)); - } - - if (Elements.isLocal(element)) { - setLocal(element, valueToStore); - } else if ((!node.isSuperCall && Elements.isErroneousElement(element)) || - Elements.isStaticOrTopLevel(element)) { - setStatic(element, elements.getSelector(node), valueToStore); - } else { - // Setter or index-setter invocation - Selector selector = elements.getSelector(node); - assert(selector.kind == SelectorKind.SETTER || - selector.kind == SelectorKind.INDEX); - if (selector.isIndexSet) { - setIndex(node, receiver, selector, index, valueToStore); - } else { - setDynamic(node, receiver, selector, valueToStore); - } - } - - if (node.isPostfix) { - assert(originalValue != null); - return originalValue; - } else { - return valueToStore; - } - } - - ir.Primitive visitNewExpression(ast.NewExpression node) { - assert(irBuilder.isOpen); - if (node.isConst) { - return translateConstant(node); - } - FunctionElement element = elements[node.send]; - Selector selector = elements.getSelector(node.send); - ast.Node selectorNode = node.send.selector; - DartType type = elements.getType(node); - List args = - node.send.arguments.mapToList(visit, growable:false); - return irBuilder.continueWithExpression( - (k) => new ir.InvokeConstructor(type, element,selector, k, args)); - } - - ir.Primitive visitStringJuxtaposition(ast.StringJuxtaposition node) { - assert(irBuilder.isOpen); - ir.Primitive first = visit(node.first); - ir.Primitive second = visit(node.second); - return irBuilder.continueWithExpression( - (k) => new ir.ConcatenateStrings(k, [first, second])); - } - - ir.Primitive visitStringInterpolation(ast.StringInterpolation node) { - assert(irBuilder.isOpen); - List arguments = []; - arguments.add(visitLiteralString(node.string)); - var it = node.parts.iterator; - while (it.moveNext()) { - ast.StringInterpolationPart part = it.current; - arguments.add(visit(part.expression)); - arguments.add(visitLiteralString(part.string)); - } - return irBuilder.continueWithExpression( - (k) => new ir.ConcatenateStrings(k, arguments)); - } - - ir.Primitive translateConstant(ast.Node node, [ConstantExpression constant]) { - assert(irBuilder.isOpen); - if (constant == null) { - constant = getConstantForNode(node); - } - ir.Primitive primitive = irBuilder.makeConst(constant); - irBuilder.add(new ir.LetPrim(primitive)); - return primitive; - } - - ir.FunctionDefinition makeSubFunction(ast.FunctionExpression node) { - // TODO(johnniwinther): Share the visitor. - return new IrBuilderVisitor(elements, compiler, sourceFile) - .buildFunctionInternal(elements[node]); - } - - ir.Primitive visitFunctionExpression(ast.FunctionExpression node) { - FunctionElement element = elements[node]; - ir.FunctionDefinition inner = makeSubFunction(node); - ir.CreateFunction prim = new ir.CreateFunction(inner); - irBuilder.add(new ir.LetPrim(prim)); - return prim; - } - - ir.Primitive visitFunctionDeclaration(ast.FunctionDeclaration node) { - LocalFunctionElement element = elements[node.function]; - ir.FunctionDefinition inner = makeSubFunction(node.function); - if (isClosureVariable(element)) { - irBuilder.add(new ir.DeclareFunction(element, inner)); - } else { - ir.CreateFunction prim = new ir.CreateFunction(inner); - irBuilder.add(new ir.LetPrim(prim)); - irBuilder.environment.extend(element, prim); - prim.useElementAsHint(element); - } - return null; - } - - static final String ABORT_IRNODE_BUILDER = "IrNode builder aborted"; - - dynamic giveup(ast.Node node, [String reason]) { - throw ABORT_IRNODE_BUILDER; - } - - ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { - try { - return action(); - } catch(e, tr) { - if (e == ABORT_IRNODE_BUILDER) { - return null; - } - rethrow; - } - } - - void internalError(String reason, {ast.Node node}) { - giveup(node); - } -} - -/// Classifies local variables and local functions as 'closure variables'. -/// A closure variable is one that is accessed from an inner function nested -/// one or more levels inside the one that declares it. -class DetectClosureVariables extends ast.Visitor { - final TreeElements elements; - DetectClosureVariables(this.elements); - - FunctionElement currentFunction; - Set usedFromClosure = new Set(); - Set recursiveFunctions = new Set(); - - bool isClosureVariable(Entity entity) => usedFromClosure.contains(entity); - - void markAsClosureVariable(Local local) { - usedFromClosure.add(local); - } - - visit(ast.Node node) => node.accept(this); - - visitNode(ast.Node node) { - node.visitChildren(this); - } - - visitSend(ast.Send node) { - Element element = elements[node]; - if (Elements.isLocal(element) && - !element.isConst && - element.enclosingElement != currentFunction) { - LocalElement local = element; - markAsClosureVariable(local); - } - node.visitChildren(this); - } - - visitFunctionExpression(ast.FunctionExpression node) { - FunctionElement oldFunction = currentFunction; - currentFunction = elements[node]; - visit(node.body); - currentFunction = oldFunction; - } - -} diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart new file mode 100644 index 000000000000..a8c3492a77bc --- /dev/null +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart @@ -0,0 +1,1584 @@ +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +part of dart2js.ir_builder; + +/** + * This task iterates through all resolved elements and builds [ir.Node]s. The + * nodes are stored in the [nodes] map and accessible through [hasIr] and + * [getIr]. + * + * The functionality of the IrNodes is added gradually, therefore elements might + * have an IR or not, depending on the language features that are used. For + * elements that do have an IR, the tree [ast.Node]s and the [Token]s are not + * used in the rest of the compilation. This is ensured by setting the element's + * cached tree to `null` and also breaking the token stream to crash future + * attempts to parse. + * + * The type inferrer works on either IR nodes or tree nodes. The IR nodes are + * then translated into the SSA form for optimizations and code generation. + * Long-term, once the IR supports the full language, the backend can be + * re-implemented to work directly on the IR. + */ +class IrBuilderTask extends CompilerTask { + final Map nodes = + {}; + + IrBuilderTask(Compiler compiler) : super(compiler); + + String get name => 'IR builder'; + + bool hasIr(Element element) => nodes.containsKey(element.implementation); + + ir.FunctionDefinition getIr(Element element) => nodes[element.implementation]; + + void buildNodes({bool useNewBackend: false}) { + if (!irEnabled(useNewBackend: useNewBackend)) return; + measure(() { + Set resolved = compiler.enqueuer.resolution.resolvedElements; + resolved.forEach((AstElement element) { + if (canBuild(element)) { + TreeElements elementsMapping = element.resolvedAst.elements; + element = element.implementation; + compiler.withCurrentElement(element, () { + SourceFile sourceFile = elementSourceFile(element); + IrBuilderVisitor builder = + new IrBuilderVisitor(elementsMapping, compiler, sourceFile); + ir.FunctionDefinition function; + function = builder.buildFunction(element); + + if (function != null) { + nodes[element] = function; + compiler.tracer.traceCompilation(element.name, null); + compiler.tracer.traceGraph("IR Builder", function); + } + }); + } + }); + }); + } + + bool irEnabled({bool useNewBackend: false}) { + // TODO(sigurdm,kmillikin): Support checked-mode checks. + return (useNewBackend || const bool.fromEnvironment('USE_NEW_BACKEND')) && + compiler.backend is DartBackend && + !compiler.enableTypeAssertions && + !compiler.enableConcreteTypeInference; + } + + bool canBuild(Element element) { + FunctionElement function = element.asFunctionElement(); + // TODO(kmillikin,sigurdm): support lazy field initializers. + if (function == null) return false; + + if (!compiler.backend.shouldOutput(function)) return false; + + assert(invariant(element, !function.isNative)); + + // TODO(kmillikin,sigurdm): Support constructors. + if (function is ConstructorElement) return false; + + return true; + } + + bool get inCheckedMode { + bool result = false; + assert((result = true)); + return result; + } + + SourceFile elementSourceFile(Element element) { + if (element is FunctionElement) { + FunctionElement functionElement = element; + if (functionElement.patch != null) element = functionElement.patch; + } + return element.compilationUnit.script.file; + } +} + +class _GetterElements { + ir.Primitive result; + ir.Primitive index; + ir.Primitive receiver; + + _GetterElements({this.result, this.index, this.receiver}) ; +} + +/** + * A tree visitor that builds [IrNodes]. The visit methods add statements using + * to the [builder] and return the last added statement for trees that represent + * an expression. + */ +class IrBuilderVisitor extends ResolvedVisitor + with IrBuilderMixin { + final Compiler compiler; + final SourceFile sourceFile; + + // In SSA terms, join-point continuation parameters are the phis and the + // continuation invocation arguments are the corresponding phi inputs. To + // support name introduction and renaming for source level variables, we use + // nested (delimited) visitors for constructing subparts of the IR that will + // need renaming. Each source variable is assigned an index. + // + // Each nested visitor maintains a list of free variable uses in the body. + // These are implemented as a list of parameters, each with their own use + // list of references. When the delimited subexpression is plugged into the + // surrounding context, the free occurrences can be captured or become free + // occurrences in the next outer delimited subexpression. + // + // Each nested visitor maintains a list that maps indexes of variables + // assigned in the delimited subexpression to their reaching definition --- + // that is, the definition in effect at the hole in 'current'. These are + // used to determine if a join-point continuation needs to be passed + // arguments, and what the arguments are. + + /// Construct a top-level visitor. + IrBuilderVisitor(TreeElements elements, this.compiler, this.sourceFile) + : super(elements); + + /** + * Builds the [ir.FunctionDefinition] for a function element. In case the + * function uses features that cannot be expressed in the IR, this function + * returns `null`. + */ + ir.FunctionDefinition buildFunction(FunctionElement functionElement) { + return nullIfGiveup(() => buildFunctionInternal(functionElement)); + } + + ir.FunctionDefinition buildFunctionInternal(FunctionElement element) { + assert(invariant(element, element.isImplementation)); + ast.FunctionExpression function = element.node; + assert(function != null); + assert(!function.modifiers.isExternal); + assert(elements[function] != null); + + DetectClosureVariables closureLocals = new DetectClosureVariables(elements); + closureLocals.visit(function); + + return withBuilder( + new IrBuilder(compiler.backend.constantSystem, + element, closureLocals.usedFromClosure), + () { + FunctionSignature signature = element.functionSignature; + signature.orderedForEachParameter((ParameterElement parameterElement) { + irBuilder.createParameter( + parameterElement, + isClosureVariable: isClosureVariable(parameterElement)); + }); + + List defaults = new List(); + signature.orderedOptionalParameters.forEach((ParameterElement element) { + defaults.add(getConstantForVariable(element)); + }); + + visit(function.body); + return irBuilder.buildFunctionDefinition(element, defaults); + }); + } + + ir.Primitive visit(ast.Node node) => node.accept(this); + + // ==== Statements ==== + // Build(Block(stamements), C) = C' + // where C' = statements.fold(Build, C) + ir.Primitive visitBlock(ast.Block node) { + assert(irBuilder.isOpen); + for (ast.Node n in node.statements.nodes) { + visit(n); + if (!irBuilder.isOpen) return null; + } + return null; + } + + ir.Primitive visitBreakStatement(ast.BreakStatement node) { + if (!irBuilder.buildBreak(elements.getTargetOf(node))) { + compiler.internalError(node, "'break' target not found"); + } + return null; + } + + ir.Primitive visitContinueStatement(ast.ContinueStatement node) { + if (!irBuilder.buildContinue(elements.getTargetOf(node))) { + compiler.internalError(node, "'continue' target not found"); + } + return null; + } + + // Build(EmptyStatement, C) = C + ir.Primitive visitEmptyStatement(ast.EmptyStatement node) { + assert(irBuilder.isOpen); + return null; + } + + // Build(ExpressionStatement(e), C) = C' + // where (C', _) = Build(e, C) + ir.Primitive visitExpressionStatement(ast.ExpressionStatement node) { + assert(irBuilder.isOpen); + visit(node.expression); + return null; + } + + + /// Create a non-recursive join-point continuation. + /// + /// Given the environment length at the join point and a list of + /// jumps that should reach the join point, create a join-point + /// continuation. The join-point continuation has a parameter for each + /// variable that has different values reaching on different paths. + /// + /// The jumps are uninitialized [ir.InvokeContinuation] expressions. + /// They are filled in with the target continuation and appropriate + /// arguments. + /// + /// As a side effect, the environment of this builder is updated to include + /// the join-point continuation parameters. + ir.Continuation createJoin(int environmentLength, JumpCollector jumps) { + assert(jumps.length >= 2); + + // Compute which values are identical on all paths reaching the join. + // Handle the common case of a pair of contexts efficiently. + Environment first = jumps.environments[0]; + Environment second = jumps.environments[1]; + assert(environmentLength <= first.length); + assert(environmentLength <= second.length); + assert(first.sameDomain(environmentLength, second)); + // A running count of the join-point parameters. + int parameterCount = 0; + // The null elements of common correspond to required parameters of the + // join-point continuation. + List common = + new List.generate(environmentLength, + (i) { + ir.Primitive candidate = first[i]; + if (second[i] == candidate) { + return candidate; + } else { + ++parameterCount; + return null; + } + }); + // If there is already a parameter for each variable, the other + // environments do not need to be considered. + if (parameterCount < environmentLength) { + for (int i = 0; i < environmentLength; ++i) { + ir.Primitive candidate = common[i]; + if (candidate == null) continue; + for (Environment current in jumps.environments.skip(2)) { + assert(environmentLength <= current.length); + assert(first.sameDomain(environmentLength, current)); + if (candidate != current[i]) { + common[i] = null; + ++parameterCount; + break; + } + } + if (parameterCount >= environmentLength) break; + } + } + + // Create the join point continuation. + List parameters = []; + parameters.length = parameterCount; + int index = 0; + for (int i = 0; i < environmentLength; ++i) { + if (common[i] == null) { + parameters[index++] = new ir.Parameter(first.index2variable[i]); + } + } + assert(index == parameterCount); + ir.Continuation join = new ir.Continuation(parameters); + + // Fill in all the continuation invocations. + for (int i = 0; i < jumps.length; ++i) { + Environment currentEnvironment = jumps.environments[i]; + ir.InvokeContinuation invoke = jumps.invocations[i]; + // Sharing this.environment with one of the invocations will not do + // the right thing (this.environment has already been mutated). + List arguments = []; + arguments.length = parameterCount; + int index = 0; + for (int i = 0; i < environmentLength; ++i) { + if (common[i] == null) { + arguments[index++] = new ir.Reference(currentEnvironment[i]); + } + } + invoke.continuation = new ir.Reference(join); + invoke.arguments = arguments; + } + + // Mutate this.environment to be the environment at the join point. Do + // this after adding the continuation invocations, because this.environment + // might be collected by the jump collector and so the old environment + // values are needed for the continuation invocation. + // + // Iterate to environment.length because environmentLength includes values + // outside the environment which are 'phantom' variables used for the + // values of expressions like &&, ||, and ?:. + index = 0; + for (int i = 0; i < irBuilder.environment.length; ++i) { + if (common[i] == null) { + irBuilder.environment.index2value[i] = parameters[index++]; + } + } + + return join; + } + + /// Invoke a join-point continuation that contains arguments for all local + /// variables. + /// + /// Given the continuation and a list of uninitialized invocations, fill + /// in each invocation with the continuation and appropriate arguments. + void invokeFullJoin(ir.Continuation join, + JumpCollector jumps, + {recursive: false}) { + join.isRecursive = recursive; + for (int i = 0; i < jumps.length; ++i) { + Environment currentEnvironment = jumps.environments[i]; + ir.InvokeContinuation invoke = jumps.invocations[i]; + invoke.continuation = new ir.Reference(join); + invoke.arguments = new List.generate( + join.parameters.length, + (i) => new ir.Reference(currentEnvironment[i])); + invoke.isRecursive = recursive; + } + } + + ir.Primitive visitFor(ast.For node) { + assert(irBuilder.isOpen); + // TODO(kmillikin,sigurdm): Handle closure variables declared in a for-loop. + if (node.initializer is ast.VariableDefinitions) { + ast.VariableDefinitions definitions = node.initializer; + for (ast.Node definition in definitions.definitions.nodes) { + Element element = elements[definition]; + if (isClosureVariable(element)) { + return giveup(definition, 'Closure variable in for loop initializer'); + } + } + } + + // For loops use four named continuations: the entry to the condition, + // the entry to the body, the loop exit, and the loop successor (break). + // The CPS translation of + // [[for (initializer; condition; update) body; successor]] is: + // + // [[initializer]]; + // let cont loop(x, ...) = + // let prim cond = [[condition]] in + // let cont break() = [[successor]] in + // let cont exit() = break(v, ...) in + // let cont body() = + // let cont continue(x, ...) = [[update]]; loop(v, ...) in + // [[body]]; continue(v, ...) in + // branch cond (body, exit) in + // loop(v, ...) + // + // If there are no breaks in the body, the break continuation is inlined + // in the exit continuation (i.e., the translation of the successor + // statement occurs in the exit continuation). If there is only one + // invocation of the continue continuation (i.e., no continues in the + // body), the continue continuation is inlined in the body. + + if (node.initializer != null) visit(node.initializer); + + IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); + ir.Primitive condition; + if (node.condition == null) { + // If the condition is empty then the body is entered unconditionally. + condition = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createBool(true)); + condBuilder.add(new ir.LetPrim(condition)); + } else { + condition = withBuilder(condBuilder, () => visit(node.condition)); + } + + JumpTarget target = elements.getTargetDefinition(node); + JumpCollector breakCollector = new JumpCollector(target); + JumpCollector continueCollector = new JumpCollector(target); + irBuilder.state.breakCollectors.add(breakCollector); + irBuilder.state.continueCollectors.add(continueCollector); + + IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); + withBuilder(bodyBuilder, () => visit(node.body)); + assert(irBuilder.state.breakCollectors.last == breakCollector); + assert(irBuilder.state.continueCollectors.last == continueCollector); + irBuilder.state.breakCollectors.removeLast(); + irBuilder.state.continueCollectors.removeLast(); + + // The binding of the continue continuation should occur as late as + // possible, that is, at the nearest common ancestor of all the continue + // sites in the body. However, that is difficult to compute here, so it + // is instead placed just outside the body of the body continuation. + bool hasContinues = !continueCollector.isEmpty; + IrBuilder updateBuilder = hasContinues + ? new IrBuilder.recursive(condBuilder) + : bodyBuilder; + for (ast.Node n in node.update) { + if (!updateBuilder.isOpen) break; + withBuilder(updateBuilder, () => visit(n)); + } + + // Create body entry and loop exit continuations and a branch to them. + ir.Continuation bodyContinuation = new ir.Continuation([]); + ir.Continuation exitContinuation = new ir.Continuation([]); + ir.LetCont branch = + new ir.LetCont(exitContinuation, + new ir.LetCont(bodyContinuation, + new ir.Branch(new ir.IsTrue(condition), + bodyContinuation, + exitContinuation))); + // If there are breaks in the body, then there must be a join-point + // continuation for the normal exit and the breaks. + bool hasBreaks = !breakCollector.isEmpty; + ir.LetCont letJoin; + if (hasBreaks) { + letJoin = new ir.LetCont(null, branch); + condBuilder.add(letJoin); + condBuilder._current = branch; + } else { + condBuilder.add(branch); + } + ir.Continuation continueContinuation; + if (hasContinues) { + // If there are continues in the body, we need a named continue + // continuation as a join point. + continueContinuation = new ir.Continuation(updateBuilder._parameters); + if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder); + invokeFullJoin(continueContinuation, continueCollector); + } + ir.Continuation loopContinuation = + new ir.Continuation(condBuilder._parameters); + if (updateBuilder.isOpen) { + JumpCollector backEdges = new JumpCollector(null); + backEdges.addJump(updateBuilder); + invokeFullJoin(loopContinuation, backEdges, recursive: true); + } + + // Fill in the body and possible continue continuation bodies. Do this + // only after it is guaranteed that they are not empty. + if (hasContinues) { + continueContinuation.body = updateBuilder._root; + bodyContinuation.body = + new ir.LetCont(continueContinuation, bodyBuilder._root); + } else { + bodyContinuation.body = bodyBuilder._root; + } + + loopContinuation.body = condBuilder._root; + irBuilder.add(new ir.LetCont(loopContinuation, + new ir.InvokeContinuation(loopContinuation, + irBuilder.environment.index2value))); + if (hasBreaks) { + irBuilder._current = branch; + irBuilder.environment = condBuilder.environment; + breakCollector.addJump(irBuilder); + letJoin.continuation = + createJoin(irBuilder.environment.length, breakCollector); + irBuilder._current = letJoin; + } else { + irBuilder._current = condBuilder._current; + irBuilder.environment = condBuilder.environment; + } + return null; + } + + ir.Primitive visitIf(ast.If node) { + assert(irBuilder.isOpen); + ir.Primitive condition = visit(node.condition); + + // The then and else parts are delimited. + IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); + IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); + withBuilder(thenBuilder, () => visit(node.thenPart)); + if (node.hasElsePart) { + withBuilder(elseBuilder, () => visit(node.elsePart)); + } + + // Build the term + // (Result =) let cont then() = [[thenPart]] in + // let cont else() = [[elsePart]] in + // if condition (then, else) + ir.Continuation thenContinuation = new ir.Continuation([]); + ir.Continuation elseContinuation = new ir.Continuation([]); + ir.Expression letElse = + new ir.LetCont(elseContinuation, + new ir.Branch(new ir.IsTrue(condition), + thenContinuation, + elseContinuation)); + ir.Expression letThen = new ir.LetCont(thenContinuation, letElse); + ir.Expression result = letThen; + + ir.Continuation joinContinuation; // Null if there is no join. + if (thenBuilder.isOpen && elseBuilder.isOpen) { + // There is a join-point continuation. Build the term + // 'let cont join(x, ...) = [] in Result' and plug invocations of the + // join-point continuation into the then and else continuations. + JumpCollector jumps = new JumpCollector(null); + jumps.addJump(thenBuilder); + jumps.addJump(elseBuilder); + joinContinuation = createJoin(irBuilder.environment.length, jumps); + result = new ir.LetCont(joinContinuation, result); + } + + // The then or else term root could be null, but not both. If there is + // a join then an InvokeContinuation was just added to both of them. If + // there is no join, then at least one of them is closed and thus has a + // non-null root by the definition of the predicate isClosed. In the + // case that one of them is null, it must be the only one that is open + // and thus contains the new hole in the context. This case is handled + // after the branch is plugged into the current hole. + thenContinuation.body = thenBuilder._root; + elseContinuation.body = elseBuilder._root; + + irBuilder.add(result); + if (joinContinuation == null) { + // At least one subexpression is closed. + if (thenBuilder.isOpen) { + irBuilder._current = + (thenBuilder._root == null) ? letThen : thenBuilder._current; + irBuilder.environment = thenBuilder.environment; + } else if (elseBuilder.isOpen) { + irBuilder._current = + (elseBuilder._root == null) ? letElse : elseBuilder._current; + irBuilder.environment = elseBuilder.environment; + } else { + irBuilder._current = null; + } + } + return null; + } + + ir.Primitive visitLabeledStatement(ast.LabeledStatement node) { + ast.Statement body = node.statement; + return body is ast.Loop + ? visit(body) + : giveup(node, 'labeled statement'); + } + + ir.Primitive visitWhile(ast.While node) { + assert(irBuilder.isOpen); + // While loops use four named continuations: the entry to the body, the + // loop exit, the loop back edge (continue), and the loop exit (break). + // The CPS translation of [[while (condition) body; successor]] is: + // + // let cont continue(x, ...) = + // let prim cond = [[condition]] in + // let cont break() = [[successor]] in + // let cont exit() = break(v, ...) in + // let cont body() = [[body]]; continue(v, ...) in + // branch cond (body, exit) in + // continue(v, ...) + // + // If there are no breaks in the body, the break continuation is inlined + // in the exit continuation (i.e., the translation of the successor + // statement occurs in the exit continuation). + + // The condition and body are delimited. + IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); + ir.Primitive condition = + withBuilder(condBuilder, () => visit(node.condition)); + + JumpTarget target = elements.getTargetDefinition(node); + JumpCollector breakCollector = new JumpCollector(target); + JumpCollector continueCollector = new JumpCollector(target); + irBuilder.state.breakCollectors.add(breakCollector); + irBuilder.state.continueCollectors.add(continueCollector); + + IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); + withBuilder(bodyBuilder, () => visit(node.body)); + assert(irBuilder.state.breakCollectors.last == breakCollector); + assert(irBuilder.state.continueCollectors.last == continueCollector); + irBuilder.state.breakCollectors.removeLast(); + irBuilder.state.continueCollectors.removeLast(); + + // Create body entry and loop exit continuations and a branch to them. + ir.Continuation bodyContinuation = new ir.Continuation([]); + ir.Continuation exitContinuation = new ir.Continuation([]); + ir.LetCont branch = + new ir.LetCont(exitContinuation, + new ir.LetCont(bodyContinuation, + new ir.Branch(new ir.IsTrue(condition), + bodyContinuation, + exitContinuation))); + // If there are breaks in the body, then there must be a join-point + // continuation for the normal exit and the breaks. + bool hasBreaks = !breakCollector.isEmpty; + ir.LetCont letJoin; + if (hasBreaks) { + letJoin = new ir.LetCont(null, branch); + condBuilder.add(letJoin); + condBuilder._current = branch; + } else { + condBuilder.add(branch); + } + ir.Continuation loopContinuation = + new ir.Continuation(condBuilder._parameters); + if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder); + invokeFullJoin(loopContinuation, continueCollector, recursive: true); + bodyContinuation.body = bodyBuilder._root; + + loopContinuation.body = condBuilder._root; + irBuilder.add(new ir.LetCont(loopContinuation, + new ir.InvokeContinuation(loopContinuation, + irBuilder.environment.index2value))); + if (hasBreaks) { + irBuilder._current = branch; + irBuilder.environment = condBuilder.environment; + breakCollector.addJump(irBuilder); + letJoin.continuation = + createJoin(irBuilder.environment.length, breakCollector); + irBuilder._current = letJoin; + } else { + irBuilder._current = condBuilder._current; + irBuilder.environment = condBuilder.environment; + } + return null; + } + + ir.Primitive visitForIn(ast.ForIn node) { + // The for-in loop + // + // for (a in e) s; + // + // Is compiled analogously to: + // + // a = e.iterator; + // while (a.moveNext()) { + // var n0 = a.current; + // s; + // } + + // The condition and body are delimited. + IrBuilder condBuilder = new IrBuilder.recursive(irBuilder); + + ir.Primitive expressionReceiver = visit(node.expression); + List emptyArguments = new List(); + + ir.Parameter iterator = new ir.Parameter(null); + ir.Continuation iteratorInvoked = new ir.Continuation([iterator]); + irBuilder.add(new ir.LetCont(iteratorInvoked, + new ir.InvokeMethod(expressionReceiver, + new Selector.getter("iterator", null), iteratorInvoked, + emptyArguments))); + + ir.Parameter condition = new ir.Parameter(null); + ir.Continuation moveNextInvoked = new ir.Continuation([condition]); + condBuilder.add(new ir.LetCont(moveNextInvoked, + new ir.InvokeMethod(iterator, + new Selector.call("moveNext", null, 0), + moveNextInvoked, emptyArguments))); + + JumpTarget target = elements.getTargetDefinition(node); + JumpCollector breakCollector = new JumpCollector(target); + JumpCollector continueCollector = new JumpCollector(target); + irBuilder.state.breakCollectors.add(breakCollector); + irBuilder.state.continueCollectors.add(continueCollector); + + IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder); + ast.Node identifier = node.declaredIdentifier; + Element variableElement = elements.getForInVariable(node); + Selector selector = elements.getSelector(identifier); + + // node.declaredIdentifier can be either an ast.VariableDefinitions + // (defining a new local variable) or a send designating some existing + // variable. + ast.Node declaredIdentifier = node.declaredIdentifier; + + if (declaredIdentifier is ast.VariableDefinitions) { + withBuilder(bodyBuilder, () => visit(declaredIdentifier)); + } + + ir.Parameter currentValue = new ir.Parameter(null); + ir.Continuation currentInvoked = new ir.Continuation([currentValue]); + bodyBuilder.add(new ir.LetCont(currentInvoked, + new ir.InvokeMethod(iterator, new Selector.getter("current", null), + currentInvoked, emptyArguments))); + if (Elements.isLocal(variableElement)) { + withBuilder(bodyBuilder, () => setLocal(variableElement, currentValue)); + } else if (Elements.isStaticOrTopLevel(variableElement)) { + withBuilder(bodyBuilder, + () => setStatic(variableElement, selector, currentValue)); + } else { + ir.Primitive receiver = + withBuilder(bodyBuilder, () => lookupThis()); + withBuilder(bodyBuilder, + () => setDynamic(null, receiver, selector, currentValue)); + } + + withBuilder(bodyBuilder, () => visit(node.body)); + assert(irBuilder.state.breakCollectors.last == breakCollector); + assert(irBuilder.state.continueCollectors.last == continueCollector); + irBuilder.state.breakCollectors.removeLast(); + irBuilder.state.continueCollectors.removeLast(); + + // Create body entry and loop exit continuations and a branch to them. + ir.Continuation bodyContinuation = new ir.Continuation([]); + ir.Continuation exitContinuation = new ir.Continuation([]); + ir.LetCont branch = + new ir.LetCont(exitContinuation, + new ir.LetCont(bodyContinuation, + new ir.Branch(new ir.IsTrue(condition), + bodyContinuation, + exitContinuation))); + // If there are breaks in the body, then there must be a join-point + // continuation for the normal exit and the breaks. + bool hasBreaks = !breakCollector.isEmpty; + ir.LetCont letJoin; + if (hasBreaks) { + letJoin = new ir.LetCont(null, branch); + condBuilder.add(letJoin); + condBuilder._current = branch; + } else { + condBuilder.add(branch); + } + ir.Continuation loopContinuation = + new ir.Continuation(condBuilder._parameters); + if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder); + invokeFullJoin(loopContinuation, continueCollector, recursive: true); + bodyContinuation.body = bodyBuilder._root; + + loopContinuation.body = condBuilder._root; + irBuilder.add(new ir.LetCont(loopContinuation, + new ir.InvokeContinuation(loopContinuation, + irBuilder.environment.index2value))); + if (hasBreaks) { + irBuilder._current = branch; + irBuilder.environment = condBuilder.environment; + breakCollector.addJump(irBuilder); + letJoin.continuation = + createJoin(irBuilder.environment.length, breakCollector); + irBuilder._current = letJoin; + } else { + irBuilder._current = condBuilder._current; + irBuilder.environment = condBuilder.environment; + } + return null; + } + + ir.Primitive visitVariableDefinitions(ast.VariableDefinitions node) { + assert(irBuilder.isOpen); + if (node.modifiers.isConst) { + for (ast.SendSet definition in node.definitions.nodes) { + assert(!definition.arguments.isEmpty); + assert(definition.arguments.tail.isEmpty); + VariableElement element = elements[definition]; + ConstantExpression value = getConstantForVariable(element); + irBuilder.declareLocalConstant(element, value); + } + } else { + for (ast.Node definition in node.definitions.nodes) { + Element element = elements[definition]; + ir.Primitive initialValue; + // Definitions are either SendSets if there is an initializer, or + // Identifiers if there is no initializer. + if (definition is ast.SendSet) { + assert(!definition.arguments.isEmpty); + assert(definition.arguments.tail.isEmpty); + initialValue = visit(definition.arguments.head); + } else { + assert(definition is ast.Identifier); + } + irBuilder.declareLocalVariable(element, + initialValue: initialValue, + isClosureVariable: isClosureVariable(element)); + } + } + return null; + } + + // Build(Return(e), C) = C'[InvokeContinuation(return, x)] + // where (C', x) = Build(e, C) + // + // Return without a subexpression is translated as if it were return null. + ir.Primitive visitReturn(ast.Return node) { + assert(irBuilder.isOpen); + assert(invariant(node, node.beginToken.value != 'native')); + if (node.expression == null) { + irBuilder.buildReturn(); + } else { + irBuilder.buildReturn(visit(node.expression)); + } + return null; + } + + // ==== Expressions ==== + ir.Primitive visitConditional(ast.Conditional node) { + assert(irBuilder.isOpen); + ir.Primitive condition = visit(node.condition); + + // The then and else expressions are delimited. + IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); + IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); + ir.Primitive thenValue = + withBuilder(thenBuilder, () => visit(node.thenExpression)); + ir.Primitive elseValue = + withBuilder(elseBuilder, () => visit(node.elseExpression)); + + // Treat the values of the subexpressions as named values in the + // environment, so they will be treated as arguments to the join-point + // continuation. + assert(irBuilder.environment.length == thenBuilder.environment.length); + assert(irBuilder.environment.length == elseBuilder.environment.length); + thenBuilder.environment.extend(null, thenValue); + elseBuilder.environment.extend(null, elseValue); + JumpCollector jumps = new JumpCollector(null); + jumps.addJump(thenBuilder); + jumps.addJump(elseBuilder); + ir.Continuation joinContinuation = + createJoin(irBuilder.environment.length + 1, jumps); + + // Build the term + // let cont join(x, ..., result) = [] in + // let cont then() = [[thenPart]]; join(v, ...) in + // let cont else() = [[elsePart]]; join(v, ...) in + // if condition (then, else) + ir.Continuation thenContinuation = new ir.Continuation([]); + ir.Continuation elseContinuation = new ir.Continuation([]); + thenContinuation.body = thenBuilder._root; + elseContinuation.body = elseBuilder._root; + irBuilder.add(new ir.LetCont(joinContinuation, + new ir.LetCont(thenContinuation, + new ir.LetCont(elseContinuation, + new ir.Branch(new ir.IsTrue(condition), + thenContinuation, + elseContinuation))))); + return (thenValue == elseValue) + ? thenValue + : joinContinuation.parameters.last; + } + + // For all simple literals: + // Build(Literal(c), C) = C[let val x = Constant(c) in [], x] + ir.Primitive visitLiteralBool(ast.LiteralBool node) { + assert(irBuilder.isOpen); + return translateConstant(node); + } + + ir.Primitive visitLiteralDouble(ast.LiteralDouble node) { + assert(irBuilder.isOpen); + return translateConstant(node); + } + + ir.Primitive visitLiteralInt(ast.LiteralInt node) { + assert(irBuilder.isOpen); + return translateConstant(node); + } + + ir.Primitive visitLiteralNull(ast.LiteralNull node) { + assert(irBuilder.isOpen); + return translateConstant(node); + } + + ir.Primitive visitLiteralString(ast.LiteralString node) { + assert(irBuilder.isOpen); + return translateConstant(node); + } + + ConstantExpression getConstantForNode(ast.Node node) { + ConstantExpression constant = + compiler.backend.constantCompilerTask.compileNode(node, elements); + assert(invariant(node, constant != null, + message: 'No constant computed for $node')); + return constant; + } + + ConstantExpression getConstantForVariable(VariableElement element) { + ConstantExpression constant = + compiler.backend.constants.getConstantForVariable(element); + assert(invariant(element, constant != null, + message: 'No constant computed for $element')); + return constant; + } + + ir.Primitive visitLiteralList(ast.LiteralList node) { + assert(irBuilder.isOpen); + if (node.isConst) { + return translateConstant(node); + } + List values = node.elements.nodes.mapToList(visit); + GenericType type = elements.getType(node); + ir.Primitive result = new ir.LiteralList(type, values); + irBuilder.add(new ir.LetPrim(result)); + return result; + } + + ir.Primitive visitLiteralMap(ast.LiteralMap node) { + assert(irBuilder.isOpen); + if (node.isConst) { + return translateConstant(node); + } + List keys = new List(); + List values = new List(); + node.entries.nodes.forEach((ast.LiteralMapEntry node) { + keys.add(visit(node.key)); + values.add(visit(node.value)); + }); + GenericType type = elements.getType(node); + ir.Primitive result = new ir.LiteralMap(type, keys, values); + irBuilder.add(new ir.LetPrim(result)); + return result; + } + + ir.Primitive visitLiteralSymbol(ast.LiteralSymbol node) { + assert(irBuilder.isOpen); + return translateConstant(node); + } + + ir.Primitive visitIdentifier(ast.Identifier node) { + assert(irBuilder.isOpen); + // "this" is the only identifier that should be met by the visitor. + assert(node.isThis()); + return lookupThis(); + } + + ir.Primitive visitParenthesizedExpression( + ast.ParenthesizedExpression node) { + assert(irBuilder.isOpen); + return visit(node.expression); + } + + // Stores the result of visiting a CascadeReceiver, so we can return it from + // its enclosing Cascade. + ir.Primitive _currentCascadeReceiver; + + ir.Primitive visitCascadeReceiver(ast.CascadeReceiver node) { + assert(irBuilder.isOpen); + return _currentCascadeReceiver = visit(node.expression); + } + + ir.Primitive visitCascade(ast.Cascade node) { + assert(irBuilder.isOpen); + var oldCascadeReceiver = _currentCascadeReceiver; + // Throw away the result of visiting the expression. + // Instead we return the result of visiting the CascadeReceiver. + this.visit(node.expression); + ir.Primitive receiver = _currentCascadeReceiver; + _currentCascadeReceiver = oldCascadeReceiver; + return receiver; + } + + ir.Primitive lookupThis() { + ir.Primitive result = new ir.This(); + irBuilder.add(new ir.LetPrim(result)); + return result; + } + + // ==== Sends ==== + ir.Primitive visitAssert(ast.Send node) { + assert(irBuilder.isOpen); + return giveup(node, 'Assert'); + } + + ir.Primitive visitNamedArgument(ast.NamedArgument node) { + assert(irBuilder.isOpen); + return visit(node.expression); + } + + ir.Primitive translateClosureCall(ir.Primitive receiver, + Selector closureSelector, + ast.NodeList arguments) { + Selector namedCallSelector = new Selector(closureSelector.kind, + "call", + closureSelector.library, + closureSelector.argumentCount, + closureSelector.namedArguments); + List args = arguments.nodes.mapToList(visit, growable:false); + return irBuilder.continueWithExpression( + (k) => new ir.InvokeMethod(receiver, namedCallSelector, k, args)); + } + + ir.Primitive visitClosureSend(ast.Send node) { + assert(irBuilder.isOpen); + Element element = elements[node]; + ir.Primitive closureTarget; + if (element == null) { + closureTarget = visit(node.selector); + } else if (isClosureVariable(element)) { + LocalElement local = element; + closureTarget = new ir.GetClosureVariable(local); + irBuilder.add(new ir.LetPrim(closureTarget)); + } else { + assert(Elements.isLocal(element)); + closureTarget = irBuilder.environment.lookup(element); + } + Selector closureSelector = elements.getSelector(node); + return translateClosureCall(closureTarget, closureSelector, + node.argumentsNode); + } + + /// If [node] is null, returns this. + /// If [node] is super, returns null (for special handling) + /// Otherwise visits [node] and returns the result. + ir.Primitive visitReceiver(ast.Expression node) { + if (node == null) return lookupThis(); + if (node.isSuper()) return null; + return visit(node); + } + + /// Makes an [InvokeMethod] unless [node.receiver.isSuper()], in that case + /// makes an [InvokeSuperMethod] ignoring [receiver]. + ir.Expression createDynamicInvoke(ast.Send node, + Selector selector, + ir.Definition receiver, + ir.Continuation k, + List arguments) { + return node != null && node.receiver != null && node.receiver.isSuper() + ? new ir.InvokeSuperMethod(selector, k, arguments) + : new ir.InvokeMethod(receiver, selector, k, arguments); + } + + ir.Primitive visitDynamicSend(ast.Send node) { + assert(irBuilder.isOpen); + Selector selector = elements.getSelector(node); + ir.Primitive receiver = visitReceiver(node.receiver); + List arguments = new List(); + for (ast.Node n in node.arguments) { + arguments.add(visit(n)); + } + return irBuilder.buildDynamicInvocation(receiver, selector, arguments); + } + + _GetterElements translateGetter(ast.Send node, Selector selector) { + Element element = elements[node]; + ir.Primitive result; + ir.Primitive receiver; + ir.Primitive index; + + if (element != null && element.isConst) { + // Reference to constant local, top-level or static field + result = translateConstant(node); + } else if (isClosureVariable(element)) { + LocalElement local = element; + result = new ir.GetClosureVariable(local); + irBuilder.add(new ir.LetPrim(result)); + } else if (Elements.isLocal(element)) { + // Reference to local variable + result = irBuilder.buildLocalGet(element); + } else if (element == null || + Elements.isInstanceField(element) || + Elements.isInstanceMethod(element) || + selector.isIndex || + // TODO(johnniwinther): clean up semantics of resolution. + node.isSuperCall) { + // Dynamic dispatch to a getter. Sometimes resolution will suggest a + // target element, but in these cases we must still emit a dynamic + // dispatch. The target element may be an instance method in case we are + // converting a method to a function object. + + receiver = visitReceiver(node.receiver); + List arguments = new List(); + if (selector.isIndex) { + index = visit(node.arguments.head); + arguments.add(index); + } + + assert(selector.kind == SelectorKind.GETTER || + selector.kind == SelectorKind.INDEX); + result = irBuilder.continueWithExpression( + (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); + } else if (element.isField || element.isGetter || element.isErroneous || + element.isSetter) { + // TODO(johnniwinther): Change handling of setter selectors. + // Access to a static field or getter (non-static case handled above). + // Even if there is only a setter, we compile as if it was a getter, + // so the vm can fail at runtime. + assert(selector.kind == SelectorKind.GETTER || + selector.kind == SelectorKind.SETTER); + result = irBuilder.buildStaticGet(element, selector); + } else if (Elements.isStaticOrTopLevelFunction(element)) { + // Convert a top-level or static function to a function object. + result = translateConstant(node); + } else { + throw "Unexpected SendSet getter: $node, $element"; + } + return new _GetterElements( + result: result,index: index, receiver: receiver); + } + + ir.Primitive visitGetterSend(ast.Send node) { + assert(irBuilder.isOpen); + return translateGetter(node, elements.getSelector(node)).result; + + } + + ir.Primitive buildNegation(ir.Primitive condition) { + // ! e is translated as e ? false : true + + // Add a continuation parameter for the result of the expression. + ir.Parameter resultParameter = new ir.Parameter(null); + + ir.Continuation joinContinuation = new ir.Continuation([resultParameter]); + ir.Continuation thenContinuation = new ir.Continuation([]); + ir.Continuation elseContinuation = new ir.Continuation([]); + + ir.Constant trueConstant = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createBool(true)); + ir.Constant falseConstant = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createBool(false)); + + thenContinuation.body = new ir.LetPrim(falseConstant) + ..plug(new ir.InvokeContinuation(joinContinuation, [falseConstant])); + elseContinuation.body = new ir.LetPrim(trueConstant) + ..plug(new ir.InvokeContinuation(joinContinuation, [trueConstant])); + + irBuilder.add(new ir.LetCont(joinContinuation, + new ir.LetCont(thenContinuation, + new ir.LetCont(elseContinuation, + new ir.Branch(new ir.IsTrue(condition), + thenContinuation, + elseContinuation))))); + return resultParameter; + } + + ir.Primitive translateLogicalOperator(ast.Operator op, + ast.Expression left, + ast.Expression right) { + // e0 && e1 is translated as if e0 ? (e1 == true) : false. + // e0 || e1 is translated as if e0 ? true : (e1 == true). + // The translation must convert both e0 and e1 to booleans and handle + // local variable assignments in e1. + + ir.Primitive leftValue = visit(left); + IrBuilder rightBuilder = new IrBuilder.delimited(irBuilder); + ir.Primitive rightValue = + withBuilder(rightBuilder, () => visit(right)); + // A dummy empty target for the branch on the left subexpression branch. + // This enables using the same infrastructure for join-point continuations + // as in visitIf and visitConditional. It will hold a definition of the + // appropriate constant and an invocation of the join-point continuation. + IrBuilder emptyBuilder = new IrBuilder.delimited(irBuilder); + // Dummy empty targets for right true and right false. They hold + // definitions of the appropriate constant and an invocation of the + // join-point continuation. + IrBuilder rightTrueBuilder = new IrBuilder.delimited(rightBuilder); + IrBuilder rightFalseBuilder = new IrBuilder.delimited(rightBuilder); + + // If we don't evaluate the right subexpression, the value of the whole + // expression is this constant. + ir.Constant leftBool = emptyBuilder.makePrimConst( + emptyBuilder.state.constantSystem.createBool(op.source == '||')); + // If we do evaluate the right subexpression, the value of the expression + // is a true or false constant. + ir.Constant rightTrue = rightTrueBuilder.makePrimConst( + rightTrueBuilder.state.constantSystem.createBool(true)); + ir.Constant rightFalse = rightFalseBuilder.makePrimConst( + rightFalseBuilder.state.constantSystem.createBool(false)); + emptyBuilder.add(new ir.LetPrim(leftBool)); + rightTrueBuilder.add(new ir.LetPrim(rightTrue)); + rightFalseBuilder.add(new ir.LetPrim(rightFalse)); + + // Treat the result values as named values in the environment, so they + // will be treated as arguments to the join-point continuation. + assert(irBuilder.environment.length == emptyBuilder.environment.length); + assert(irBuilder.environment.length == rightTrueBuilder.environment.length); + assert(irBuilder.environment.length == + rightFalseBuilder.environment.length); + emptyBuilder.environment.extend(null, leftBool); + rightTrueBuilder.environment.extend(null, rightTrue); + rightFalseBuilder.environment.extend(null, rightFalse); + + // Wire up two continuations for the left subexpression, two continuations + // for the right subexpression, and a three-way join continuation. + JumpCollector jumps = new JumpCollector(null); + jumps.addJump(emptyBuilder); + jumps.addJump(rightTrueBuilder); + jumps.addJump(rightFalseBuilder); + ir.Continuation joinContinuation = + createJoin(irBuilder.environment.length + 1, jumps); + ir.Continuation leftTrueContinuation = new ir.Continuation([]); + ir.Continuation leftFalseContinuation = new ir.Continuation([]); + ir.Continuation rightTrueContinuation = new ir.Continuation([]); + ir.Continuation rightFalseContinuation = new ir.Continuation([]); + rightTrueContinuation.body = rightTrueBuilder._root; + rightFalseContinuation.body = rightFalseBuilder._root; + // The right subexpression has two continuations. + rightBuilder.add( + new ir.LetCont(rightTrueContinuation, + new ir.LetCont(rightFalseContinuation, + new ir.Branch(new ir.IsTrue(rightValue), + rightTrueContinuation, + rightFalseContinuation)))); + // Depending on the operator, the left subexpression's continuations are + // either the right subexpression or an invocation of the join-point + // continuation. + if (op.source == '&&') { + leftTrueContinuation.body = rightBuilder._root; + leftFalseContinuation.body = emptyBuilder._root; + } else { + leftTrueContinuation.body = emptyBuilder._root; + leftFalseContinuation.body = rightBuilder._root; + } + + irBuilder.add(new ir.LetCont(joinContinuation, + new ir.LetCont(leftTrueContinuation, + new ir.LetCont(leftFalseContinuation, + new ir.Branch(new ir.IsTrue(leftValue), + leftTrueContinuation, + leftFalseContinuation))))); + // There is always a join parameter for the result value, because it + // is different on at least two paths. + return joinContinuation.parameters.last; + } + + ir.Primitive visitOperatorSend(ast.Send node) { + assert(irBuilder.isOpen); + ast.Operator op = node.selector; + if (isUserDefinableOperator(op.source)) { + return visitDynamicSend(node); + } + if (op.source == '&&' || op.source == '||') { + assert(node.receiver != null); + assert(!node.arguments.isEmpty); + assert(node.arguments.tail.isEmpty); + return translateLogicalOperator(op, node.receiver, node.arguments.head); + } + if (op.source == "!") { + assert(node.receiver != null); + assert(node.arguments.isEmpty); + return buildNegation(visit(node.receiver)); + } + if (op.source == "!=") { + assert(node.receiver != null); + assert(!node.arguments.isEmpty); + assert(node.arguments.tail.isEmpty); + return buildNegation(visitDynamicSend(node)); + } + assert(invariant(node, op.source == "is" || op.source == "as", + message: "unexpected operator $op")); + DartType type = elements.getType(node.typeAnnotationFromIsCheckOrCast); + ir.Primitive receiver = visit(node.receiver); + ir.Primitive check = irBuilder.continueWithExpression( + (k) => new ir.TypeOperator(op.source, receiver, type, k)); + return node.isIsNotCheck ? buildNegation(check) : check; + } + + // Build(StaticSend(f, arguments), C) = C[C'[InvokeStatic(f, xs)]] + // where (C', xs) = arguments.fold(Build, C) + ir.Primitive visitStaticSend(ast.Send node) { + assert(irBuilder.isOpen); + Element element = elements[node]; + assert(!element.isConstructor); + // TODO(lry): support foreign functions. + if (element.isForeign(compiler.backend)) { + return giveup(node, 'StaticSend: foreign'); + } + + Selector selector = elements.getSelector(node); + + // TODO(lry): support default arguments, need support for locals. + List arguments = node.arguments.mapToList(visit, + growable:false); + return irBuilder.buildStaticInvocation(element, selector, arguments); + } + + + ir.Primitive visitSuperSend(ast.Send node) { + assert(irBuilder.isOpen); + if (node.isPropertyAccess) { + return visitGetterSend(node); + } else { + Selector selector = elements.getSelector(node); + List arguments = + node.arguments.mapToList(visit, growable: false); + return irBuilder.buildSuperInvocation(selector, arguments); + } + } + + visitTypePrefixSend(ast.Send node) { + compiler.internalError(node, "visitTypePrefixSend should not be called."); + } + + ir.Primitive visitTypeLiteralSend(ast.Send node) { + assert(irBuilder.isOpen); + // If the user is trying to invoke the type literal or variable, + // it must be treated as a function call. + if (node.argumentsNode != null) { + // TODO(sigurdm): Handle this to match proposed semantics of issue #19725. + return giveup(node, 'Type literal invoked as function'); + } + + DartType type = elements.getTypeLiteralType(node); + if (type is TypeVariableType) { + ir.Primitive prim = new ir.ReifyTypeVar(type.element); + irBuilder.add(new ir.LetPrim(prim)); + return prim; + } else { + return translateConstant(node); + } + } + + /// True if [element] is a local variable, local function, or parameter that + /// is accessed from an inner function. Recursive self-references in a local + /// function count as closure accesses. + /// + /// If `true`, [element] is a [LocalElement]. + bool isClosureVariable(Element element) { + return irBuilder.state.closureLocals.contains(element); + } + + void setLocal(Element element, ir.Primitive valueToStore) { + if (isClosureVariable(element)) { + LocalElement local = element; + irBuilder.add(new ir.SetClosureVariable(local, valueToStore)); + } else { + valueToStore.useElementAsHint(element); + irBuilder.environment.update(element, valueToStore); + } + } + + void setStatic(Element element, + Selector selector, + ir.Primitive valueToStore) { + assert(element.isErroneous || element.isField || element.isSetter); + irBuilder.continueWithExpression( + (k) => new ir.InvokeStatic(element, selector, k, [valueToStore])); + } + + void setDynamic(ast.Node node, + ir.Primitive receiver, Selector selector, + ir.Primitive valueToStore) { + List arguments = [valueToStore]; + irBuilder.continueWithExpression( + (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); + } + + void setIndex(ast.Node node, + ir.Primitive receiver, + Selector selector, + ir.Primitive index, + ir.Primitive valueToStore) { + List arguments = [index, valueToStore]; + irBuilder.continueWithExpression( + (k) => createDynamicInvoke(node, selector, receiver, k, arguments)); + } + + ir.Primitive visitSendSet(ast.SendSet node) { + assert(irBuilder.isOpen); + Element element = elements[node]; + ast.Operator op = node.assignmentOperator; + // For complex operators, this is the result of getting (before assigning) + ir.Primitive originalValue; + // For []+= style operators, this saves the index. + ir.Primitive index; + ir.Primitive receiver; + // This is what gets assigned. + ir.Primitive valueToStore; + Selector selector = elements.getSelector(node); + Selector operatorSelector = + elements.getOperatorSelectorInComplexSendSet(node); + Selector getterSelector = + elements.getGetterSelectorInComplexSendSet(node); + assert( + // Indexing send-sets have an argument for the index. + (selector.isIndexSet ? 1 : 0) + + // Non-increment send-sets have one more argument. + (ast.Operator.INCREMENT_OPERATORS.contains(op.source) ? 0 : 1) + == node.argumentCount()); + + ast.Node getAssignArgument() { + assert(invariant(node, !node.arguments.isEmpty, + message: "argument expected")); + return selector.isIndexSet + ? node.arguments.tail.head + : node.arguments.head; + } + + // Get the value into valueToStore + if (op.source == "=") { + if (selector.isIndexSet) { + receiver = visitReceiver(node.receiver); + index = visit(node.arguments.head); + } else if (element == null || Elements.isInstanceField(element)) { + receiver = visitReceiver(node.receiver); + } + valueToStore = visit(getAssignArgument()); + } else { + // Get the original value into getter + assert(ast.Operator.COMPLEX_OPERATORS.contains(op.source)); + + _GetterElements getterResult = translateGetter(node, getterSelector); + index = getterResult.index; + receiver = getterResult.receiver; + originalValue = getterResult.result; + + // Do the modification of the value in getter. + ir.Primitive arg; + if (ast.Operator.INCREMENT_OPERATORS.contains(op.source)) { + arg = irBuilder.makePrimConst( + irBuilder.state.constantSystem.createInt(1)); + irBuilder.add(new ir.LetPrim(arg)); + } else { + arg = visit(getAssignArgument()); + } + valueToStore = new ir.Parameter(null); + ir.Continuation k = new ir.Continuation([valueToStore]); + ir.Expression invoke = + new ir.InvokeMethod(originalValue, operatorSelector, k, [arg]); + irBuilder.add(new ir.LetCont(k, invoke)); + } + + if (Elements.isLocal(element)) { + setLocal(element, valueToStore); + } else if ((!node.isSuperCall && Elements.isErroneousElement(element)) || + Elements.isStaticOrTopLevel(element)) { + setStatic(element, elements.getSelector(node), valueToStore); + } else { + // Setter or index-setter invocation + Selector selector = elements.getSelector(node); + assert(selector.kind == SelectorKind.SETTER || + selector.kind == SelectorKind.INDEX); + if (selector.isIndexSet) { + setIndex(node, receiver, selector, index, valueToStore); + } else { + setDynamic(node, receiver, selector, valueToStore); + } + } + + if (node.isPostfix) { + assert(originalValue != null); + return originalValue; + } else { + return valueToStore; + } + } + + ir.Primitive visitNewExpression(ast.NewExpression node) { + assert(irBuilder.isOpen); + if (node.isConst) { + return translateConstant(node); + } + FunctionElement element = elements[node.send]; + Selector selector = elements.getSelector(node.send); + ast.Node selectorNode = node.send.selector; + DartType type = elements.getType(node); + List args = + node.send.arguments.mapToList(visit, growable:false); + return irBuilder.continueWithExpression( + (k) => new ir.InvokeConstructor(type, element,selector, k, args)); + } + + ir.Primitive visitStringJuxtaposition(ast.StringJuxtaposition node) { + assert(irBuilder.isOpen); + ir.Primitive first = visit(node.first); + ir.Primitive second = visit(node.second); + return irBuilder.continueWithExpression( + (k) => new ir.ConcatenateStrings(k, [first, second])); + } + + ir.Primitive visitStringInterpolation(ast.StringInterpolation node) { + assert(irBuilder.isOpen); + List arguments = []; + arguments.add(visitLiteralString(node.string)); + var it = node.parts.iterator; + while (it.moveNext()) { + ast.StringInterpolationPart part = it.current; + arguments.add(visit(part.expression)); + arguments.add(visitLiteralString(part.string)); + } + return irBuilder.continueWithExpression( + (k) => new ir.ConcatenateStrings(k, arguments)); + } + + ir.Primitive translateConstant(ast.Node node, [ConstantExpression constant]) { + assert(irBuilder.isOpen); + if (constant == null) { + constant = getConstantForNode(node); + } + ir.Primitive primitive = irBuilder.makeConst(constant); + irBuilder.add(new ir.LetPrim(primitive)); + return primitive; + } + + ir.FunctionDefinition makeSubFunction(ast.FunctionExpression node) { + // TODO(johnniwinther): Share the visitor. + return new IrBuilderVisitor(elements, compiler, sourceFile) + .buildFunctionInternal(elements[node]); + } + + ir.Primitive visitFunctionExpression(ast.FunctionExpression node) { + FunctionElement element = elements[node]; + ir.FunctionDefinition inner = makeSubFunction(node); + ir.CreateFunction prim = new ir.CreateFunction(inner); + irBuilder.add(new ir.LetPrim(prim)); + return prim; + } + + ir.Primitive visitFunctionDeclaration(ast.FunctionDeclaration node) { + LocalFunctionElement element = elements[node.function]; + ir.FunctionDefinition inner = makeSubFunction(node.function); + if (isClosureVariable(element)) { + irBuilder.add(new ir.DeclareFunction(element, inner)); + } else { + ir.CreateFunction prim = new ir.CreateFunction(inner); + irBuilder.add(new ir.LetPrim(prim)); + irBuilder.environment.extend(element, prim); + prim.useElementAsHint(element); + } + return null; + } + + static final String ABORT_IRNODE_BUILDER = "IrNode builder aborted"; + + dynamic giveup(ast.Node node, [String reason]) { + throw ABORT_IRNODE_BUILDER; + } + + ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { + try { + return action(); + } catch(e, tr) { + if (e == ABORT_IRNODE_BUILDER) { + return null; + } + rethrow; + } + } + + void internalError(String reason, {ast.Node node}) { + giveup(node); + } +} + +/// Classifies local variables and local functions as 'closure variables'. +/// A closure variable is one that is accessed from an inner function nested +/// one or more levels inside the one that declares it. +class DetectClosureVariables extends ast.Visitor { + final TreeElements elements; + DetectClosureVariables(this.elements); + + FunctionElement currentFunction; + Set usedFromClosure = new Set(); + Set recursiveFunctions = new Set(); + + bool isClosureVariable(Entity entity) => usedFromClosure.contains(entity); + + void markAsClosureVariable(Local local) { + usedFromClosure.add(local); + } + + visit(ast.Node node) => node.accept(this); + + visitNode(ast.Node node) { + node.visitChildren(this); + } + + visitSend(ast.Send node) { + Element element = elements[node]; + if (Elements.isLocal(element) && + !element.isConst && + element.enclosingElement != currentFunction) { + LocalElement local = element; + markAsClosureVariable(local); + } + node.visitChildren(this); + } + + visitFunctionExpression(ast.FunctionExpression node) { + FunctionElement oldFunction = currentFunction; + currentFunction = elements[node]; + visit(node.body); + currentFunction = oldFunction; + } + +} From 3430239194977f48333015ee66ca6f1fe1b26838 Mon Sep 17 00:00:00 2001 From: "whesse@google.com" Date: Fri, 17 Oct 2014 12:11:27 +0000 Subject: [PATCH 22/91] Add additional check to vmservice/websocket_client test. Fix type errors in update_homebrew script. BUG= R=kustermann@google.com Review URL: https://codereview.chromium.org//652833005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41166 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/standalone/vmservice/websocket_client_test.dart | 2 ++ tools/apps/update_homebrew/bin/update_homebrew.dart | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/standalone/vmservice/websocket_client_test.dart b/tests/standalone/vmservice/websocket_client_test.dart index ebf75b3842c7..e6d978232dcc 100644 --- a/tests/standalone/vmservice/websocket_client_test.dart +++ b/tests/standalone/vmservice/websocket_client_test.dart @@ -21,6 +21,8 @@ class ClientsRequestTest extends ServiceWebSocketRequestHelper { // Verify response is correct for 'vm' sequence id. Expect.equals('VM', response['type']); _count++; + } else { + Expect.fail('Unexpected response from $seq: $response'); } if (_count == 2) { // After receiving both responses, the test is complete. diff --git a/tools/apps/update_homebrew/bin/update_homebrew.dart b/tools/apps/update_homebrew/bin/update_homebrew.dart index 91085c4818c5..28b82cb486b0 100644 --- a/tools/apps/update_homebrew/bin/update_homebrew.dart +++ b/tools/apps/update_homebrew/bin/update_homebrew.dart @@ -46,7 +46,7 @@ Future getVersion(String channel, int revision) { .whenComplete(client.close); } -Future setCurrentRevisions(Map revisions) { +Future setCurrentRevisions(Map revisions) { return new File('$repository/dart.rb') .readAsLines() .then((lines) { @@ -58,7 +58,7 @@ Future setCurrentRevisions(Map revisions) { }); } -Future setHashes(Map revisions, Map hashes) { +Future setHashes(Map revisions, Map hashes) { List waitOn = []; for (var channel in CHANNELS) { hashes[channel] = {}; From 6e7481e4afc5a1481faa9f8c76f338030c881f9b Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Fri, 17 Oct 2014 12:28:53 +0000 Subject: [PATCH 23/91] Support binary expressions in analyzer2dart. BUG= R=floitsch@google.com Review URL: https://codereview.chromium.org//661923003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41167 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/cps_generator.dart | 34 +++ pkg/analyzer2dart/test/end2end_test.dart | 192 ++++++++++++++ .../implementation/cps_ir/cps_ir_builder.dart | 226 ++++++++++++++++ .../cps_ir/cps_ir_builder_visitor.dart | 245 ++---------------- 4 files changed, 470 insertions(+), 227 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart index c2e1b90a141e..94c890d4c90b 100644 --- a/pkg/analyzer2dart/lib/src/cps_generator.dart +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart @@ -187,4 +187,38 @@ class CpsGeneratingVisitor extends SemanticVisitor return irBuilder.buildStaticGet(target, new Selector.getter(target.name, target.library)); } + + ir.Primitive handleBinaryExpression(BinaryExpression node, + String op) { + ir.Primitive left = node.leftOperand.accept(this); + ir.Primitive right = node.rightOperand.accept(this); + Selector selector = new Selector.binaryOperator(op); + return irBuilder.buildDynamicInvocation( + left, selector, [right]); + } + + ir.Node handleLazyOperator(BinaryExpression node, {bool isLazyOr: false}) { + ir.Primitive left = node.leftOperand.accept(this); + ir.Primitive buildRightValue(IrBuilder builder) { + return withBuilder(builder, () => node.rightOperand.accept(this)); + } + return irBuilder.buildLogicalOperator( + left, buildRightValue, isLazyOr: isLazyOr); + } + + @override + ir.Node visitBinaryExpression(BinaryExpression node) { + // TODO(johnniwinther,paulberry,brianwilkerson): The operator should be + // available through an enum. + String op = node.operator.lexeme; + switch (op) { + case '||': + case '&&': + return handleLazyOperator(node, isLazyOr: op == '||'); + case '!=': + return irBuilder.buildNegation(handleBinaryExpression(node, '==')); + default: + return handleBinaryExpression(node, op); + } + } } diff --git a/pkg/analyzer2dart/test/end2end_test.dart b/pkg/analyzer2dart/test/end2end_test.dart index 49b4fcd35584..c5f8ecf25253 100644 --- a/pkg/analyzer2dart/test/end2end_test.dart +++ b/pkg/analyzer2dart/test/end2end_test.dart @@ -241,6 +241,198 @@ main() { main() { return "".foo(0, 1); } +'''); + }); + + test('Binary expressions', () { + checkResult(''' +main(a) { + return a + deprecated; +} +''', ''' +main(a) { + return a + deprecated; +} +'''); + + checkResult(''' +main(a) { + return a - deprecated; +} +''', ''' +main(a) { + return a - deprecated; +} +'''); + + checkResult(''' +main(a) { + return a * deprecated; +} +''', ''' +main(a) { + return a * deprecated; +} +'''); + + checkResult(''' +main(a) { + return a / deprecated; +} +''', ''' +main(a) { + return a / deprecated; +} +'''); + + checkResult(''' +main(a) { + return a ~/ deprecated; +} +''', ''' +main(a) { + return a ~/ deprecated; +} +'''); + + checkResult(''' +main(a) { + return a % deprecated; +} +''', ''' +main(a) { + return a % deprecated; +} +'''); + + checkResult(''' +main(a) { + return a < deprecated; +} +''', ''' +main(a) { + return a < deprecated; +} +'''); + + checkResult(''' +main(a) { + return a <= deprecated; +} +''', ''' +main(a) { + return a <= deprecated; +} +'''); + + checkResult(''' +main(a) { + return a > deprecated; +} +''', ''' +main(a) { + return a > deprecated; +} +'''); + + checkResult(''' +main(a) { + return a >= deprecated; +} +''', ''' +main(a) { + return a >= deprecated; +} +'''); + + checkResult(''' +main(a) { + return a << deprecated; +} +''', ''' +main(a) { + return a << deprecated; +} +'''); + + checkResult(''' +main(a) { + return a >> deprecated; +} +''', ''' +main(a) { + return a >> deprecated; +} +'''); + + checkResult(''' +main(a) { + return a & deprecated; +} +''', ''' +main(a) { + return a & deprecated; +} +'''); + + checkResult(''' +main(a) { + return a | deprecated; +} +''', ''' +main(a) { + return a | deprecated; +} +'''); + + checkResult(''' +main(a) { + return a ^ deprecated; +} +''', ''' +main(a) { + return a ^ deprecated; +} +'''); + + checkResult(''' +main(a) { + return a == deprecated; +} +''', ''' +main(a) { + return a == deprecated; +} +'''); + + checkResult(''' +main(a) { + return a != deprecated; +} +''', ''' +main(a) { + return !(a == deprecated); +} +'''); + + checkResult(''' +main(a) { + return a || deprecated; +} +''', ''' +main(a) { + return a || deprecated; +} +'''); + + checkResult(''' +main(a) { + return a && deprecated; +} +''', ''' +main(a) { + return a && deprecated; +} '''); }); } diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 6a2c566ff946..38c036ee37c8 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -495,4 +495,230 @@ class IrBuilder { } return false; } + + /// Create a negation of [condition]. + ir.Primitive buildNegation(ir.Primitive condition) { + // ! e is translated as e ? false : true + + // Add a continuation parameter for the result of the expression. + ir.Parameter resultParameter = new ir.Parameter(null); + + ir.Continuation joinContinuation = new ir.Continuation([resultParameter]); + ir.Continuation thenContinuation = new ir.Continuation([]); + ir.Continuation elseContinuation = new ir.Continuation([]); + + ir.Constant trueConstant = + makePrimConst(state.constantSystem.createBool(true)); + ir.Constant falseConstant = + makePrimConst(state.constantSystem.createBool(false)); + + thenContinuation.body = new ir.LetPrim(falseConstant) + ..plug(new ir.InvokeContinuation(joinContinuation, [falseConstant])); + elseContinuation.body = new ir.LetPrim(trueConstant) + ..plug(new ir.InvokeContinuation(joinContinuation, [trueConstant])); + + add(new ir.LetCont(joinContinuation, + new ir.LetCont(thenContinuation, + new ir.LetCont(elseContinuation, + new ir.Branch(new ir.IsTrue(condition), + thenContinuation, + elseContinuation))))); + return resultParameter; + } + + /// Create a lazy and/or expression. [leftValue] is the value of the left + /// operand and [buildRightValue] is called to process the value of the right + /// operand in the context of its own [IrBuilder]. + ir.Primitive buildLogicalOperator( + ir.Primitive leftValue, + ir.Primitive buildRightValue(IrBuilder builder), + {bool isLazyOr: false}) { + // e0 && e1 is translated as if e0 ? (e1 == true) : false. + // e0 || e1 is translated as if e0 ? true : (e1 == true). + // The translation must convert both e0 and e1 to booleans and handle + // local variable assignments in e1. + + IrBuilder rightBuilder = new IrBuilder.delimited(this); + ir.Primitive rightValue = buildRightValue(rightBuilder); + // A dummy empty target for the branch on the left subexpression branch. + // This enables using the same infrastructure for join-point continuations + // as in visitIf and visitConditional. It will hold a definition of the + // appropriate constant and an invocation of the join-point continuation. + IrBuilder emptyBuilder = new IrBuilder.delimited(this); + // Dummy empty targets for right true and right false. They hold + // definitions of the appropriate constant and an invocation of the + // join-point continuation. + IrBuilder rightTrueBuilder = new IrBuilder.delimited(rightBuilder); + IrBuilder rightFalseBuilder = new IrBuilder.delimited(rightBuilder); + + // If we don't evaluate the right subexpression, the value of the whole + // expression is this constant. + ir.Constant leftBool = emptyBuilder.makePrimConst( + emptyBuilder.state.constantSystem.createBool(isLazyOr)); + // If we do evaluate the right subexpression, the value of the expression + // is a true or false constant. + ir.Constant rightTrue = rightTrueBuilder.makePrimConst( + rightTrueBuilder.state.constantSystem.createBool(true)); + ir.Constant rightFalse = rightFalseBuilder.makePrimConst( + rightFalseBuilder.state.constantSystem.createBool(false)); + emptyBuilder.add(new ir.LetPrim(leftBool)); + rightTrueBuilder.add(new ir.LetPrim(rightTrue)); + rightFalseBuilder.add(new ir.LetPrim(rightFalse)); + + // Treat the result values as named values in the environment, so they + // will be treated as arguments to the join-point continuation. + assert(environment.length == emptyBuilder.environment.length); + assert(environment.length == rightTrueBuilder.environment.length); + assert(environment.length == rightFalseBuilder.environment.length); + emptyBuilder.environment.extend(null, leftBool); + rightTrueBuilder.environment.extend(null, rightTrue); + rightFalseBuilder.environment.extend(null, rightFalse); + + // Wire up two continuations for the left subexpression, two continuations + // for the right subexpression, and a three-way join continuation. + JumpCollector jumps = new JumpCollector(null); + jumps.addJump(emptyBuilder); + jumps.addJump(rightTrueBuilder); + jumps.addJump(rightFalseBuilder); + ir.Continuation joinContinuation = + createJoin(environment.length + 1, jumps); + ir.Continuation leftTrueContinuation = new ir.Continuation([]); + ir.Continuation leftFalseContinuation = new ir.Continuation([]); + ir.Continuation rightTrueContinuation = new ir.Continuation([]); + ir.Continuation rightFalseContinuation = new ir.Continuation([]); + rightTrueContinuation.body = rightTrueBuilder._root; + rightFalseContinuation.body = rightFalseBuilder._root; + // The right subexpression has two continuations. + rightBuilder.add( + new ir.LetCont(rightTrueContinuation, + new ir.LetCont(rightFalseContinuation, + new ir.Branch(new ir.IsTrue(rightValue), + rightTrueContinuation, + rightFalseContinuation)))); + // Depending on the operator, the left subexpression's continuations are + // either the right subexpression or an invocation of the join-point + // continuation. + if (isLazyOr) { + leftTrueContinuation.body = emptyBuilder._root; + leftFalseContinuation.body = rightBuilder._root; + } else { + leftTrueContinuation.body = rightBuilder._root; + leftFalseContinuation.body = emptyBuilder._root; + } + + add(new ir.LetCont(joinContinuation, + new ir.LetCont(leftTrueContinuation, + new ir.LetCont(leftFalseContinuation, + new ir.Branch(new ir.IsTrue(leftValue), + leftTrueContinuation, + leftFalseContinuation))))); + // There is always a join parameter for the result value, because it + // is different on at least two paths. + return joinContinuation.parameters.last; + } + + /// Create a non-recursive join-point continuation. + /// + /// Given the environment length at the join point and a list of + /// jumps that should reach the join point, create a join-point + /// continuation. The join-point continuation has a parameter for each + /// variable that has different values reaching on different paths. + /// + /// The jumps are uninitialized [ir.InvokeContinuation] expressions. + /// They are filled in with the target continuation and appropriate + /// arguments. + /// + /// As a side effect, the environment of this builder is updated to include + /// the join-point continuation parameters. + ir.Continuation createJoin(int environmentLength, JumpCollector jumps) { + assert(jumps.length >= 2); + + // Compute which values are identical on all paths reaching the join. + // Handle the common case of a pair of contexts efficiently. + Environment first = jumps.environments[0]; + Environment second = jumps.environments[1]; + assert(environmentLength <= first.length); + assert(environmentLength <= second.length); + assert(first.sameDomain(environmentLength, second)); + // A running count of the join-point parameters. + int parameterCount = 0; + // The null elements of common correspond to required parameters of the + // join-point continuation. + List common = + new List.generate(environmentLength, + (i) { + ir.Primitive candidate = first[i]; + if (second[i] == candidate) { + return candidate; + } else { + ++parameterCount; + return null; + } + }); + // If there is already a parameter for each variable, the other + // environments do not need to be considered. + if (parameterCount < environmentLength) { + for (int i = 0; i < environmentLength; ++i) { + ir.Primitive candidate = common[i]; + if (candidate == null) continue; + for (Environment current in jumps.environments.skip(2)) { + assert(environmentLength <= current.length); + assert(first.sameDomain(environmentLength, current)); + if (candidate != current[i]) { + common[i] = null; + ++parameterCount; + break; + } + } + if (parameterCount >= environmentLength) break; + } + } + + // Create the join point continuation. + List parameters = []; + parameters.length = parameterCount; + int index = 0; + for (int i = 0; i < environmentLength; ++i) { + if (common[i] == null) { + parameters[index++] = new ir.Parameter(first.index2variable[i]); + } + } + assert(index == parameterCount); + ir.Continuation join = new ir.Continuation(parameters); + + // Fill in all the continuation invocations. + for (int i = 0; i < jumps.length; ++i) { + Environment currentEnvironment = jumps.environments[i]; + ir.InvokeContinuation invoke = jumps.invocations[i]; + // Sharing this.environment with one of the invocations will not do + // the right thing (this.environment has already been mutated). + List arguments = []; + arguments.length = parameterCount; + int index = 0; + for (int i = 0; i < environmentLength; ++i) { + if (common[i] == null) { + arguments[index++] = new ir.Reference(currentEnvironment[i]); + } + } + invoke.continuation = new ir.Reference(join); + invoke.arguments = arguments; + } + + // Mutate this.environment to be the environment at the join point. Do + // this after adding the continuation invocations, because this.environment + // might be collected by the jump collector and so the old environment + // values are needed for the continuation invocation. + // + // Iterate to environment.length because environmentLength includes values + // outside the environment which are 'phantom' variables used for the + // values of expressions like &&, ||, and ?:. + index = 0; + for (int i = 0; i < environment.length; ++i) { + if (common[i] == null) { + environment.index2value[i] = parameters[index++]; + } + } + + return join; + } } diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart index a8c3492a77bc..6ec3070f9fd7 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart @@ -219,112 +219,6 @@ class IrBuilderVisitor extends ResolvedVisitor return null; } - - /// Create a non-recursive join-point continuation. - /// - /// Given the environment length at the join point and a list of - /// jumps that should reach the join point, create a join-point - /// continuation. The join-point continuation has a parameter for each - /// variable that has different values reaching on different paths. - /// - /// The jumps are uninitialized [ir.InvokeContinuation] expressions. - /// They are filled in with the target continuation and appropriate - /// arguments. - /// - /// As a side effect, the environment of this builder is updated to include - /// the join-point continuation parameters. - ir.Continuation createJoin(int environmentLength, JumpCollector jumps) { - assert(jumps.length >= 2); - - // Compute which values are identical on all paths reaching the join. - // Handle the common case of a pair of contexts efficiently. - Environment first = jumps.environments[0]; - Environment second = jumps.environments[1]; - assert(environmentLength <= first.length); - assert(environmentLength <= second.length); - assert(first.sameDomain(environmentLength, second)); - // A running count of the join-point parameters. - int parameterCount = 0; - // The null elements of common correspond to required parameters of the - // join-point continuation. - List common = - new List.generate(environmentLength, - (i) { - ir.Primitive candidate = first[i]; - if (second[i] == candidate) { - return candidate; - } else { - ++parameterCount; - return null; - } - }); - // If there is already a parameter for each variable, the other - // environments do not need to be considered. - if (parameterCount < environmentLength) { - for (int i = 0; i < environmentLength; ++i) { - ir.Primitive candidate = common[i]; - if (candidate == null) continue; - for (Environment current in jumps.environments.skip(2)) { - assert(environmentLength <= current.length); - assert(first.sameDomain(environmentLength, current)); - if (candidate != current[i]) { - common[i] = null; - ++parameterCount; - break; - } - } - if (parameterCount >= environmentLength) break; - } - } - - // Create the join point continuation. - List parameters = []; - parameters.length = parameterCount; - int index = 0; - for (int i = 0; i < environmentLength; ++i) { - if (common[i] == null) { - parameters[index++] = new ir.Parameter(first.index2variable[i]); - } - } - assert(index == parameterCount); - ir.Continuation join = new ir.Continuation(parameters); - - // Fill in all the continuation invocations. - for (int i = 0; i < jumps.length; ++i) { - Environment currentEnvironment = jumps.environments[i]; - ir.InvokeContinuation invoke = jumps.invocations[i]; - // Sharing this.environment with one of the invocations will not do - // the right thing (this.environment has already been mutated). - List arguments = []; - arguments.length = parameterCount; - int index = 0; - for (int i = 0; i < environmentLength; ++i) { - if (common[i] == null) { - arguments[index++] = new ir.Reference(currentEnvironment[i]); - } - } - invoke.continuation = new ir.Reference(join); - invoke.arguments = arguments; - } - - // Mutate this.environment to be the environment at the join point. Do - // this after adding the continuation invocations, because this.environment - // might be collected by the jump collector and so the old environment - // values are needed for the continuation invocation. - // - // Iterate to environment.length because environmentLength includes values - // outside the environment which are 'phantom' variables used for the - // values of expressions like &&, ||, and ?:. - index = 0; - for (int i = 0; i < irBuilder.environment.length; ++i) { - if (common[i] == null) { - irBuilder.environment.index2value[i] = parameters[index++]; - } - } - - return join; - } - /// Invoke a join-point continuation that contains arguments for all local /// variables. /// @@ -474,7 +368,7 @@ class IrBuilderVisitor extends ResolvedVisitor irBuilder.environment = condBuilder.environment; breakCollector.addJump(irBuilder); letJoin.continuation = - createJoin(irBuilder.environment.length, breakCollector); + irBuilder.createJoin(irBuilder.environment.length, breakCollector); irBuilder._current = letJoin; } else { irBuilder._current = condBuilder._current; @@ -517,7 +411,8 @@ class IrBuilderVisitor extends ResolvedVisitor JumpCollector jumps = new JumpCollector(null); jumps.addJump(thenBuilder); jumps.addJump(elseBuilder); - joinContinuation = createJoin(irBuilder.environment.length, jumps); + joinContinuation = + irBuilder.createJoin(irBuilder.environment.length, jumps); result = new ir.LetCont(joinContinuation, result); } @@ -627,7 +522,7 @@ class IrBuilderVisitor extends ResolvedVisitor irBuilder.environment = condBuilder.environment; breakCollector.addJump(irBuilder); letJoin.continuation = - createJoin(irBuilder.environment.length, breakCollector); + irBuilder.createJoin(irBuilder.environment.length, breakCollector); irBuilder._current = letJoin; } else { irBuilder._current = condBuilder._current; @@ -747,7 +642,7 @@ class IrBuilderVisitor extends ResolvedVisitor irBuilder.environment = condBuilder.environment; breakCollector.addJump(irBuilder); letJoin.continuation = - createJoin(irBuilder.environment.length, breakCollector); + irBuilder.createJoin(irBuilder.environment.length, breakCollector); irBuilder._current = letJoin; } else { irBuilder._current = condBuilder._current; @@ -826,7 +721,7 @@ class IrBuilderVisitor extends ResolvedVisitor jumps.addJump(thenBuilder); jumps.addJump(elseBuilder); ir.Continuation joinContinuation = - createJoin(irBuilder.environment.length + 1, jumps); + irBuilder.createJoin(irBuilder.environment.length + 1, jumps); // Build the term // let cont join(x, ..., result) = [] in @@ -1102,123 +997,17 @@ class IrBuilderVisitor extends ResolvedVisitor } - ir.Primitive buildNegation(ir.Primitive condition) { - // ! e is translated as e ? false : true - - // Add a continuation parameter for the result of the expression. - ir.Parameter resultParameter = new ir.Parameter(null); - - ir.Continuation joinContinuation = new ir.Continuation([resultParameter]); - ir.Continuation thenContinuation = new ir.Continuation([]); - ir.Continuation elseContinuation = new ir.Continuation([]); - - ir.Constant trueConstant = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createBool(true)); - ir.Constant falseConstant = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createBool(false)); - - thenContinuation.body = new ir.LetPrim(falseConstant) - ..plug(new ir.InvokeContinuation(joinContinuation, [falseConstant])); - elseContinuation.body = new ir.LetPrim(trueConstant) - ..plug(new ir.InvokeContinuation(joinContinuation, [trueConstant])); - - irBuilder.add(new ir.LetCont(joinContinuation, - new ir.LetCont(thenContinuation, - new ir.LetCont(elseContinuation, - new ir.Branch(new ir.IsTrue(condition), - thenContinuation, - elseContinuation))))); - return resultParameter; - } - ir.Primitive translateLogicalOperator(ast.Operator op, ast.Expression left, ast.Expression right) { - // e0 && e1 is translated as if e0 ? (e1 == true) : false. - // e0 || e1 is translated as if e0 ? true : (e1 == true). - // The translation must convert both e0 and e1 to booleans and handle - // local variable assignments in e1. - ir.Primitive leftValue = visit(left); - IrBuilder rightBuilder = new IrBuilder.delimited(irBuilder); - ir.Primitive rightValue = - withBuilder(rightBuilder, () => visit(right)); - // A dummy empty target for the branch on the left subexpression branch. - // This enables using the same infrastructure for join-point continuations - // as in visitIf and visitConditional. It will hold a definition of the - // appropriate constant and an invocation of the join-point continuation. - IrBuilder emptyBuilder = new IrBuilder.delimited(irBuilder); - // Dummy empty targets for right true and right false. They hold - // definitions of the appropriate constant and an invocation of the - // join-point continuation. - IrBuilder rightTrueBuilder = new IrBuilder.delimited(rightBuilder); - IrBuilder rightFalseBuilder = new IrBuilder.delimited(rightBuilder); - - // If we don't evaluate the right subexpression, the value of the whole - // expression is this constant. - ir.Constant leftBool = emptyBuilder.makePrimConst( - emptyBuilder.state.constantSystem.createBool(op.source == '||')); - // If we do evaluate the right subexpression, the value of the expression - // is a true or false constant. - ir.Constant rightTrue = rightTrueBuilder.makePrimConst( - rightTrueBuilder.state.constantSystem.createBool(true)); - ir.Constant rightFalse = rightFalseBuilder.makePrimConst( - rightFalseBuilder.state.constantSystem.createBool(false)); - emptyBuilder.add(new ir.LetPrim(leftBool)); - rightTrueBuilder.add(new ir.LetPrim(rightTrue)); - rightFalseBuilder.add(new ir.LetPrim(rightFalse)); - - // Treat the result values as named values in the environment, so they - // will be treated as arguments to the join-point continuation. - assert(irBuilder.environment.length == emptyBuilder.environment.length); - assert(irBuilder.environment.length == rightTrueBuilder.environment.length); - assert(irBuilder.environment.length == - rightFalseBuilder.environment.length); - emptyBuilder.environment.extend(null, leftBool); - rightTrueBuilder.environment.extend(null, rightTrue); - rightFalseBuilder.environment.extend(null, rightFalse); - - // Wire up two continuations for the left subexpression, two continuations - // for the right subexpression, and a three-way join continuation. - JumpCollector jumps = new JumpCollector(null); - jumps.addJump(emptyBuilder); - jumps.addJump(rightTrueBuilder); - jumps.addJump(rightFalseBuilder); - ir.Continuation joinContinuation = - createJoin(irBuilder.environment.length + 1, jumps); - ir.Continuation leftTrueContinuation = new ir.Continuation([]); - ir.Continuation leftFalseContinuation = new ir.Continuation([]); - ir.Continuation rightTrueContinuation = new ir.Continuation([]); - ir.Continuation rightFalseContinuation = new ir.Continuation([]); - rightTrueContinuation.body = rightTrueBuilder._root; - rightFalseContinuation.body = rightFalseBuilder._root; - // The right subexpression has two continuations. - rightBuilder.add( - new ir.LetCont(rightTrueContinuation, - new ir.LetCont(rightFalseContinuation, - new ir.Branch(new ir.IsTrue(rightValue), - rightTrueContinuation, - rightFalseContinuation)))); - // Depending on the operator, the left subexpression's continuations are - // either the right subexpression or an invocation of the join-point - // continuation. - if (op.source == '&&') { - leftTrueContinuation.body = rightBuilder._root; - leftFalseContinuation.body = emptyBuilder._root; - } else { - leftTrueContinuation.body = emptyBuilder._root; - leftFalseContinuation.body = rightBuilder._root; + + ir.Primitive buildRightValue(IrBuilder rightBuilder) { + return withBuilder(rightBuilder, () => visit(right)); } - irBuilder.add(new ir.LetCont(joinContinuation, - new ir.LetCont(leftTrueContinuation, - new ir.LetCont(leftFalseContinuation, - new ir.Branch(new ir.IsTrue(leftValue), - leftTrueContinuation, - leftFalseContinuation))))); - // There is always a join parameter for the result value, because it - // is different on at least two paths. - return joinContinuation.parameters.last; + return irBuilder.buildLogicalOperator( + leftValue, buildRightValue, isLazyOr: op.source == '||'); } ir.Primitive visitOperatorSend(ast.Send node) { @@ -1236,13 +1025,13 @@ class IrBuilderVisitor extends ResolvedVisitor if (op.source == "!") { assert(node.receiver != null); assert(node.arguments.isEmpty); - return buildNegation(visit(node.receiver)); + return irBuilder.buildNegation(visit(node.receiver)); } if (op.source == "!=") { assert(node.receiver != null); assert(!node.arguments.isEmpty); assert(node.arguments.tail.isEmpty); - return buildNegation(visitDynamicSend(node)); + return irBuilder.buildNegation(visitDynamicSend(node)); } assert(invariant(node, op.source == "is" || op.source == "as", message: "unexpected operator $op")); @@ -1250,7 +1039,7 @@ class IrBuilderVisitor extends ResolvedVisitor ir.Primitive receiver = visit(node.receiver); ir.Primitive check = irBuilder.continueWithExpression( (k) => new ir.TypeOperator(op.source, receiver, type, k)); - return node.isIsNotCheck ? buildNegation(check) : check; + return node.isIsNotCheck ? irBuilder.buildNegation(check) : check; } // Build(StaticSend(f, arguments), C) = C[C'[InvokeStatic(f, xs)]] @@ -1279,8 +1068,10 @@ class IrBuilderVisitor extends ResolvedVisitor return visitGetterSend(node); } else { Selector selector = elements.getSelector(node); - List arguments = - node.arguments.mapToList(visit, growable: false); + List arguments = new List(); + for (ast.Node n in node.arguments) { + arguments.add(visit(n)); + } return irBuilder.buildSuperInvocation(selector, arguments); } } From b856819070fd8689a7027e98b39da2dc743b3dbe Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Fri, 17 Oct 2014 15:29:37 +0000 Subject: [PATCH 24/91] Don't run through iterable twice. R=kasperl@google.com Review URL: https://codereview.chromium.org//661953003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41168 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/lib/_internal/compiler/implementation/js/nodes.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js/nodes.dart b/sdk/lib/_internal/compiler/implementation/js/nodes.dart index 3f753139a52a..23ca6d09d315 100644 --- a/sdk/lib/_internal/compiler/implementation/js/nodes.dart +++ b/sdk/lib/_internal/compiler/implementation/js/nodes.dart @@ -941,8 +941,10 @@ class ArrayInitializer extends Expression { ArrayInitializer(this.length, this.elements); - factory ArrayInitializer.from(Iterable expressions) => - new ArrayInitializer(expressions.length, _convert(expressions)); + factory ArrayInitializer.from(Iterable expressions) { + List elements = _convert(expressions); + return new ArrayInitializer(elements.length, elements); + } accept(NodeVisitor visitor) => visitor.visitArrayInitializer(this); From 271aee1d835274124382e6aeb2ddfbcf146312a0 Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Fri, 17 Oct 2014 15:54:44 +0000 Subject: [PATCH 25/91] Handle non-factory redirects in constant evaluation. R=scheglov@google.com Review URL: https://codereview.chromium.org//640813004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41169 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/lib/src/generated/constant.dart | 31 +++ pkg/analyzer/test/generated/all_the_rest.dart | 196 ++++++++++++++++++ .../test/generated/resolver_test.dart | 13 ++ .../compile_time_constant_checked4_test.dart | 22 ++ tests/language/language_analyzer.status | 3 + 5 files changed, 265 insertions(+) create mode 100644 tests/language/compile_time_constant_checked4_test.dart diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart index 2c00d92c9ba5..fa82b571354f 100644 --- a/pkg/analyzer/lib/src/generated/constant.dart +++ b/pkg/analyzer/lib/src/generated/constant.dart @@ -791,6 +791,15 @@ class ConstantValueComputer { superName = name.name; } superArguments = superConstructorInvocation.argumentList.arguments; + } else if (initializer is RedirectingConstructorInvocation) { + // This is a redirecting constructor, so just evaluate the constructor + // it redirects to. + ConstructorElement constructor = initializer.staticElement; + if (constructor != null && constructor.isConst) { + return _evaluateConstructorCall( + node, initializer.argumentList.arguments, constructor, + initializerVisitor, errorReporter); + } } } // Evaluate explicit or implicit call to super(). @@ -915,6 +924,15 @@ class ConstantValueComputer_InitializerCloner extends AstCloner { invocation.staticElement = node.staticElement; return invocation; } + + @override + RedirectingConstructorInvocation visitRedirectingConstructorInvocation( + RedirectingConstructorInvocation node) { + RedirectingConstructorInvocation invocation = + super.visitRedirectingConstructorInvocation(node); + invocation.staticElement = node.staticElement; + return invocation; + } } /** @@ -4458,6 +4476,19 @@ class ReferenceFinder extends RecursiveAstVisitor { } return null; } + + @override + Object visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) { + super.visitRedirectingConstructorInvocation(node); + ConstructorElement target = node.staticElement; + if (target != null && target.isConst) { + ConstructorDeclaration targetDeclaration = _constructorDeclarationMap[target]; + if (targetDeclaration != null) { + _referenceGraph.addEdge(_source, targetDeclaration); + } + } + return null; + } } /** diff --git a/pkg/analyzer/test/generated/all_the_rest.dart b/pkg/analyzer/test/generated/all_the_rest.dart index 05a433b164a3..c194f19f41a3 100644 --- a/pkg/analyzer/test/generated/all_the_rest.dart +++ b/pkg/analyzer/test/generated/all_the_rest.dart @@ -3806,6 +3806,89 @@ class ConstantValueComputerTest extends ResolverTestCase { []); } + void test_dependencyOnNonFactoryRedirect() { + // a depends on A.foo() depends on A.bar() + _assertProperDependencies( + EngineTestCase.createSource( + [ + "const A a = const A.foo();", + "class A {", + " const A.foo() : this.bar();", + " const A.bar();", + "}"]), + []); + } + + void test_dependencyOnNonFactoryRedirect_arg() { + // a depends on A.foo() depends on b + _assertProperDependencies( + EngineTestCase.createSource( + [ + "const A a = const A.foo();", + "const int b = 1;", + "class A {", + " const A.foo() : this.bar(b);", + " const A.bar(x) : y = x;", + " final int y;" + "}"]), + []); + } + + void test_dependencyOnNonFactoryRedirect_defaultValue() { + // a depends on A.foo() depends on A.bar() depends on b + _assertProperDependencies( + EngineTestCase.createSource( + [ + "const A a = const A.foo();", + "const int b = 1;", + "class A {", + " const A.foo() : this.bar();", + " const A.bar([x = b]) : y = x;", + " final int y;", + "}"]), + []); + } + + void test_dependencyOnNonFactoryRedirect_toMissing() { + // a depends on A.foo() which depends on nothing, since A.bar() is + // missing. + _assertProperDependencies( + EngineTestCase.createSource( + [ + "const A a = const A.foo();", + "class A {", + " const A.foo() : this.bar();", + "}"]), + [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR]); + } + + void test_dependencyOnNonFactoryRedirect_toNonConst() { + // a depends on A.foo() which depends on nothing, since A.bar() is + // non-const. + _assertProperDependencies( + EngineTestCase.createSource( + [ + "const A a = const A.foo();", + "class A {", + " const A.foo() : this.bar();", + " A.bar();", + "}"]), + []); + } + + void test_dependencyOnNonFactoryRedirect_unnamed() { + // a depends on A.foo() depends on A() + _assertProperDependencies( + EngineTestCase.createSource( + [ + "const A a = const A.foo();", + "class A {", + " const A.foo() : this();", + " const A();", + "}"]), + []); + } + void test_dependencyOnOptionalParameterDefault() { // a depends on A() depends on B() _assertProperDependencies( @@ -4126,6 +4209,119 @@ class ConstantValueComputerTest extends ResolverTestCase { _assertIntField(superclassFields, "x", 3); } + void test_instanceCreationExpression_nonFactoryRedirect() { + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A.a1();", + "class A {", + " const A.a1() : this.a2();", + " const A.a2() : x = 5;", + " final int x;", + "}"])); + Map aFields = _assertType( + _evaluateInstanceCreationExpression(compilationUnit, "foo"), + "A"); + _assertIntField(aFields, 'x', 5); + } + + void test_instanceCreationExpression_nonFactoryRedirect_arg() { + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A.a1(1);", + "class A {", + " const A.a1(x) : this.a2(x + 100);", + " const A.a2(x) : y = x + 10;", + " final int y;", + "}"])); + Map aFields = _assertType( + _evaluateInstanceCreationExpression(compilationUnit, "foo"), + "A"); + _assertIntField(aFields, 'y', 111); + } + + void test_instanceCreationExpression_nonFactoryRedirect_cycle() { + // It is an error to have a cycle in non-factory redirects; however, we + // need to make sure that even if the error occurs, attempting to evaluate + // the constant will terminate. + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A();", + "class A {", + " const A() : this.b();", + " const A.b() : this();", + "}"])); + _assertValidUnknown( + _evaluateInstanceCreationExpression(compilationUnit, "foo")); + } + + void test_instanceCreationExpression_nonFactoryRedirect_defaultArg() { + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A.a1();", + "class A {", + " const A.a1() : this.a2();", + " const A.a2([x = 100]) : y = x + 10;", + " final int y;", + "}"])); + Map aFields = _assertType( + _evaluateInstanceCreationExpression(compilationUnit, "foo"), + "A"); + _assertIntField(aFields, 'y', 110); + } + + void test_instanceCreationExpression_nonFactoryRedirect_toMissing() { + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A.a1();", + "class A {", + " const A.a1() : this.a2();", + "}"])); + // We don't care what value foo evaluates to (since there is a compile + // error), but we shouldn't crash, and we should figure + // out that it evaluates to an instance of class A. + _assertType( + _evaluateInstanceCreationExpression(compilationUnit, "foo"), + "A"); + } + + void test_instanceCreationExpression_nonFactoryRedirect_toNonConst() { + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A.a1();", + "class A {", + " const A.a1() : this.a2();", + " A.a2();", + "}"])); + // We don't care what value foo evaluates to (since there is a compile + // error), but we shouldn't crash, and we should figure + // out that it evaluates to an instance of class A. + _assertType( + _evaluateInstanceCreationExpression(compilationUnit, "foo"), + "A"); + } + + void test_instanceCreationExpression_nonFactoryRedirect_unnamed() { + CompilationUnit compilationUnit = resolveSource( + EngineTestCase.createSource( + [ + "const foo = const A.a1();", + "class A {", + " const A.a1() : this();", + " const A() : x = 5;", + " final int x;", + "}"])); + Map aFields = _assertType( + _evaluateInstanceCreationExpression(compilationUnit, "foo"), + "A"); + _assertIntField(aFields, 'x', 5); + } + void test_instanceCreationExpression_redirect() { CompilationUnit compilationUnit = resolveSource( EngineTestCase.createSource( diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart index 6c7e93cfdbde..eea44007305b 100644 --- a/pkg/analyzer/test/generated/resolver_test.dart +++ b/pkg/analyzer/test/generated/resolver_test.dart @@ -842,6 +842,19 @@ class CheckedModeCompileTimeErrorCodeTest extends ResolverTestCase { verify([source]); } + void test_redirectingConstructor_paramTypeMismatch() { + Source source = addSource(EngineTestCase.createSource([ + "class A {", + " const A.a1(x) : this.a2(x);", + " const A.a2(String x);", + "}", + "var v = const A.a1(0);"])); + resolve(source); + assertErrors(source, [ + CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]); + verify([source]); + } + void test_parameterAssignable_null() { // Null is assignable to anything. Source source = addSource(EngineTestCase.createSource([ diff --git a/tests/language/compile_time_constant_checked4_test.dart b/tests/language/compile_time_constant_checked4_test.dart new file mode 100644 index 000000000000..f271e775f5f6 --- /dev/null +++ b/tests/language/compile_time_constant_checked4_test.dart @@ -0,0 +1,22 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +class A { + final _x; + const A.a1( + String /// 01: checked mode compile-time error, static type warning + x) : this.a2(x); + const A.a2( + String /// 02: checked mode compile-time error + x) : this.a3(x); + const A.a3( + String /// 03: checked mode compile-time error + x) : _x = x; +} + +use(x) => x; + +main() { + use(const A.a1(0)); +} diff --git a/tests/language/language_analyzer.status b/tests/language/language_analyzer.status index 08b421edec37..5c2c465da0eb 100644 --- a/tests/language/language_analyzer.status +++ b/tests/language/language_analyzer.status @@ -469,6 +469,9 @@ compile_time_constant_checked3_test/02: MissingCompileTimeError # Issue 16391 compile_time_constant_checked3_test/03: MissingCompileTimeError # Issue 16391 compile_time_constant_checked3_test/04: MissingCompileTimeError # Issue 16391 compile_time_constant_checked3_test/06: MissingCompileTimeError # Issue 16391 +compile_time_constant_checked4_test/01: MissingCompileTimeError # Issue 16391 +compile_time_constant_checked4_test/02: MissingCompileTimeError # Issue 16391 +compile_time_constant_checked4_test/03: MissingCompileTimeError # Issue 16391 compile_time_constant_checked_test/02: MissingCompileTimeError # Issue 16391 const_constructor2_test/13: MissingCompileTimeError # Issue 16391 const_constructor2_test/14: MissingCompileTimeError # Issue 16391 From 2fa3b2cab49b970ae69eeca45a0040bba5b98c92 Mon Sep 17 00:00:00 2001 From: "brianwilkerson@google.com" Date: Fri, 17 Oct 2014 16:47:11 +0000 Subject: [PATCH 26/91] Add command-line options for instrumentation R=paulberry@google.com Review URL: https://codereview.chromium.org//664743002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41171 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analysis_server/lib/driver.dart | 54 ++++++++++++++++------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/pkg/analysis_server/lib/driver.dart b/pkg/analysis_server/lib/driver.dart index e21077732ac3..284cf604ad76 100644 --- a/pkg/analysis_server/lib/driver.dart +++ b/pkg/analysis_server/lib/driver.dart @@ -13,7 +13,6 @@ import 'package:analyzer/src/generated/java_io.dart'; import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/generated/sdk_io.dart'; import 'package:args/args.dart'; -import 'package:logging/logging.dart'; /** * The [Driver] class represents a single running instance of the analysis @@ -26,21 +25,27 @@ class Driver { */ static const BINARY_NAME = 'server'; + /** + * The name of the option used to enable instrumentation. + */ + static const String ENABLE_INSTRUMENTATION_OPTION = "enable-instrumentation"; + /** * The name of the option used to print usage information. */ static const String HELP_OPTION = "help"; /** - * The name of the option used to specify the port to which the server will - * connect. + * The name of the option used to specify the log file to which + * instrumentation data is to be written. */ - static const String PORT_OPTION = "port"; + static const String INSTRUMENTATION_LOG_FILE_OPTION = "instrumentation-log-file"; /** - * The name of the option used to specify the log file. + * The name of the option used to specify the port to which the server will + * connect. */ - static const String LOG_FILE_OPTION = "log"; + static const String PORT_OPTION = "port"; /** * The path to the SDK. @@ -63,32 +68,31 @@ class Driver { */ void start(List args) { ArgParser parser = new ArgParser(); - parser.addFlag(HELP_OPTION, help: - "print this help message without starting a server", defaultsTo: false, + parser.addFlag(ENABLE_INSTRUMENTATION_OPTION, + help: "enable sending instrumentation information to a server", + defaultsTo: false, + negatable: false); + parser.addFlag(HELP_OPTION, + help: "print this help message without starting a server", + defaultsTo: false, negatable: false); - parser.addOption(PORT_OPTION, help: - "[port] the port on which the server will listen"); - parser.addOption(LOG_FILE_OPTION, help: - "[path] file to log debugging messages to"); - parser.addOption(SDK_OPTION, help: - "[path] path to the sdk"); + parser.addOption(INSTRUMENTATION_LOG_FILE_OPTION, + help: "[path] the file to which instrumentation data will be logged"); + parser.addOption(PORT_OPTION, + help: "[port] the port on which the server will listen"); + parser.addOption(SDK_OPTION, + help: "[path] the path to the sdk"); ArgResults results = parser.parse(args); if (results[HELP_OPTION]) { _printUsage(parser); return; } - if (results[LOG_FILE_OPTION] != null) { - try { - File file = new File(results[LOG_FILE_OPTION]); - IOSink sink = file.openWrite(); - Logger.root.onRecord.listen((LogRecord record) { - sink.writeln(record); - }); - } catch (exception) { - print('Could not open log file: $exception'); - exitCode = 1; - return; + if (results[ENABLE_INSTRUMENTATION_OPTION]) { + if (results[INSTRUMENTATION_LOG_FILE_OPTION] != null) { + // TODO(brianwilkerson) Initialize the instrumentation system with logging. + } else { + // TODO(brianwilkerson) Initialize the instrumentation system without logging. } } int port; From 82c1b3550b6d3b6db5a0d0fffc5c1dbbd80ebade Mon Sep 17 00:00:00 2001 From: "brianwilkerson@google.com" Date: Fri, 17 Oct 2014 16:57:33 +0000 Subject: [PATCH 27/91] Add (as yet unused) task R=scheglov@google.com Review URL: https://codereview.chromium.org//660203003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41172 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/lib/src/generated/engine.dart | 286 +++++++++---------- pkg/analyzer/lib/src/generated/resolver.dart | 14 +- pkg/analyzer/lib/src/task/task_dart.dart | 86 ++++++ pkg/analyzer/test/generated/engine_test.dart | 31 +- pkg/analyzer/test/task/task_dart_test.dart | 121 ++++++++ pkg/analyzer/test/task/test_all.dart | 17 ++ pkg/analyzer/test/test_all.dart | 4 +- 7 files changed, 398 insertions(+), 161 deletions(-) create mode 100644 pkg/analyzer/lib/src/task/task_dart.dart create mode 100644 pkg/analyzer/test/task/task_dart_test.dart create mode 100644 pkg/analyzer/test/task/test_all.dart diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart index f821825bfb7c..79220a5364e4 100644 --- a/pkg/analyzer/lib/src/generated/engine.dart +++ b/pkg/analyzer/lib/src/generated/engine.dart @@ -8,6 +8,9 @@ library engine; import 'dart:collection'; + +import 'package:analyzer/src/task/task_dart.dart'; + import 'java_core.dart'; import 'java_engine.dart'; import 'utilities_collection.dart'; @@ -2477,6 +2480,19 @@ class AnalysisContextImpl implements InternalAnalysisContext { return false; } + /** + * Create a [BuildUnitElementTask] for the given [source]. + */ + AnalysisContextImpl_TaskData _createBuildUnitElementTask(Source source, DartEntry dartEntry, Source librarySource) { + CompilationUnit unit = dartEntry.resolvableCompilationUnit; + if (unit == null) { + return _createParseDartTask(source, dartEntry); + } + return new AnalysisContextImpl_TaskData( + new BuildUnitElementTask(this, source, librarySource, unit), + false); + } + /** * Create a [GenerateDartErrorsTask] for the given source, marking the verification errors * as being in-process. The compilation unit and the library can be the same if the compilation @@ -2553,12 +2569,7 @@ class AnalysisContextImpl implements InternalAnalysisContext { } /** - * Create a [ParseDartTask] for the given source, marking the parse errors as being - * in-process. - * - * @param source the source whose content is to be parsed - * @param dartEntry the entry for the source - * @return task data representing the created task + * Create a [ParseDartTask] for the given [source]. */ AnalysisContextImpl_TaskData _createParseDartTask(Source source, DartEntry dartEntry) { if (dartEntry.getState(DartEntry.TOKEN_STREAM) != CacheState.VALID || dartEntry.getState(SourceEntry.LINE_INFO) != CacheState.VALID) { @@ -2571,12 +2582,7 @@ class AnalysisContextImpl implements InternalAnalysisContext { } /** - * Create a [ParseHtmlTask] for the given source, marking the parse errors as being - * in-process. - * - * @param source the source whose content is to be parsed - * @param htmlEntry the entry for the source - * @return task data representing the created task + * Create a [ParseHtmlTask] for the given [source]. */ AnalysisContextImpl_TaskData _createParseHtmlTask(Source source, HtmlEntry htmlEntry) { if (htmlEntry.getState(SourceEntry.CONTENT) != CacheState.VALID) { @@ -3810,6 +3816,27 @@ class AnalysisContextImpl implements InternalAnalysisContext { entry.setValue(HtmlEntry.ANGULAR_ENTRY, application); } + /** + * Record the results produced by performing a [task] and return the cache + * entry associated with the results. + */ + DartEntry _recordBuildUnitElementTask(BuildUnitElementTask task) { + Source source = task.source; + Source library = task.library; + DartEntry dartEntry = _cache.get(source); + CaughtException thrownException = task.exception; + if (thrownException != null) { + dartEntry.recordBuildElementErrorInLibrary(library, thrownException); + throw new AnalysisException('', thrownException); + } + dartEntry.setValueInLibrary(DartEntry.BUILT_UNIT, library, task.unit); + dartEntry.setValueInLibrary(DartEntry.BUILT_ELEMENT, library, task.unitElement); + ChangeNoticeImpl notice = _getNotice(source); + LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO); + notice.setErrors(dartEntry.allErrors, lineInfo); + return dartEntry; + } + /** * Given a cache entry and a library element, record the library element and other information * gleaned from the element in the cache entry. @@ -3841,7 +3868,7 @@ class AnalysisContextImpl implements InternalAnalysisContext { dartEntry.setValueInLibrary( DartEntry.VERIFICATION_ERRORS, librarySource, - task.errors); + task.errors); ChangeNoticeImpl notice = _getNotice(source); LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO); notice.setErrors(dartEntry.allErrors, lineInfo); @@ -4411,8 +4438,8 @@ class AnalysisContextImpl implements InternalAnalysisContext { } /** - * Instances of the class `AnalysisTaskResultRecorder` are used by an analysis context to - * record the results of a task. + * An `AnalysisTaskResultRecorder` is used by an analysis context to record the + * results of a task. */ class AnalysisContextImpl_AnalysisTaskResultRecorder implements AnalysisTaskVisitor { final AnalysisContextImpl AnalysisContextImpl_this; @@ -4420,49 +4447,68 @@ class AnalysisContextImpl_AnalysisTaskResultRecorder implements AnalysisTaskVisi AnalysisContextImpl_AnalysisTaskResultRecorder(this.AnalysisContextImpl_this); @override - DartEntry visitGenerateDartErrorsTask(GenerateDartErrorsTask task) => AnalysisContextImpl_this._recordGenerateDartErrorsTask(task); + DartEntry visitBuildUnitElementTask(BuildUnitElementTask task) + => AnalysisContextImpl_this._recordBuildUnitElementTask(task); + + @override + DartEntry visitGenerateDartErrorsTask(GenerateDartErrorsTask task) + => AnalysisContextImpl_this._recordGenerateDartErrorsTask(task); @override - DartEntry visitGenerateDartHintsTask(GenerateDartHintsTask task) => AnalysisContextImpl_this._recordGenerateDartHintsTask(task); + DartEntry visitGenerateDartHintsTask(GenerateDartHintsTask task) + => AnalysisContextImpl_this._recordGenerateDartHintsTask(task); @override - SourceEntry visitGetContentTask(GetContentTask task) => AnalysisContextImpl_this._recordGetContentsTask(task); + SourceEntry visitGetContentTask(GetContentTask task) + => AnalysisContextImpl_this._recordGetContentsTask(task); @override - DartEntry visitIncrementalAnalysisTask(IncrementalAnalysisTask task) => AnalysisContextImpl_this._recordIncrementalAnalysisTaskResults(task); + DartEntry visitIncrementalAnalysisTask(IncrementalAnalysisTask task) + => AnalysisContextImpl_this._recordIncrementalAnalysisTaskResults(task); @override - DartEntry visitParseDartTask(ParseDartTask task) => AnalysisContextImpl_this._recordParseDartTaskResults(task); + DartEntry visitParseDartTask(ParseDartTask task) + => AnalysisContextImpl_this._recordParseDartTaskResults(task); @override - HtmlEntry visitParseHtmlTask(ParseHtmlTask task) => AnalysisContextImpl_this._recordParseHtmlTaskResults(task); + HtmlEntry visitParseHtmlTask(ParseHtmlTask task) + => AnalysisContextImpl_this._recordParseHtmlTaskResults(task); @override - HtmlEntry visitPolymerBuildHtmlTask(PolymerBuildHtmlTask task) => AnalysisContextImpl_this._recordPolymerBuildHtmlTaskResults(task); + HtmlEntry visitPolymerBuildHtmlTask(PolymerBuildHtmlTask task) + => AnalysisContextImpl_this._recordPolymerBuildHtmlTaskResults(task); @override - HtmlEntry visitPolymerResolveHtmlTask(PolymerResolveHtmlTask task) => AnalysisContextImpl_this._recordPolymerResolveHtmlTaskResults(task); + HtmlEntry visitPolymerResolveHtmlTask(PolymerResolveHtmlTask task) + => AnalysisContextImpl_this._recordPolymerResolveHtmlTaskResults(task); @override - HtmlEntry visitResolveAngularComponentTemplateTask(ResolveAngularComponentTemplateTask task) => AnalysisContextImpl_this._recordResolveAngularComponentTemplateTaskResults(task); + HtmlEntry visitResolveAngularComponentTemplateTask(ResolveAngularComponentTemplateTask task) + => AnalysisContextImpl_this._recordResolveAngularComponentTemplateTaskResults(task); @override - HtmlEntry visitResolveAngularEntryHtmlTask(ResolveAngularEntryHtmlTask task) => AnalysisContextImpl_this._recordResolveAngularEntryHtmlTaskResults(task); + HtmlEntry visitResolveAngularEntryHtmlTask(ResolveAngularEntryHtmlTask task) + => AnalysisContextImpl_this._recordResolveAngularEntryHtmlTaskResults(task); @override - DartEntry visitResolveDartLibraryCycleTask(ResolveDartLibraryCycleTask task) => AnalysisContextImpl_this.recordResolveDartLibraryCycleTaskResults(task); + DartEntry visitResolveDartLibraryCycleTask(ResolveDartLibraryCycleTask task) + => AnalysisContextImpl_this.recordResolveDartLibraryCycleTaskResults(task); @override - DartEntry visitResolveDartLibraryTask(ResolveDartLibraryTask task) => AnalysisContextImpl_this.recordResolveDartLibraryTaskResults(task); + DartEntry visitResolveDartLibraryTask(ResolveDartLibraryTask task) + => AnalysisContextImpl_this.recordResolveDartLibraryTaskResults(task); @override - DartEntry visitResolveDartUnitTask(ResolveDartUnitTask task) => AnalysisContextImpl_this._recordResolveDartUnitTaskResults(task); + DartEntry visitResolveDartUnitTask(ResolveDartUnitTask task) + => AnalysisContextImpl_this._recordResolveDartUnitTaskResults(task); @override - HtmlEntry visitResolveHtmlTask(ResolveHtmlTask task) => AnalysisContextImpl_this._recordResolveHtmlTaskResults(task); + HtmlEntry visitResolveHtmlTask(ResolveHtmlTask task) + => AnalysisContextImpl_this._recordResolveHtmlTaskResults(task); @override - DartEntry visitScanDartTask(ScanDartTask task) => AnalysisContextImpl_this._recordScanDartTaskResults(task); + DartEntry visitScanDartTask(ScanDartTask task) + => AnalysisContextImpl_this._recordScanDartTaskResults(task); } class AnalysisContextImpl_ContextRetentionPolicy implements CacheRetentionPolicy { @@ -5937,143 +5983,104 @@ abstract class AnalysisTask { } /** - * The interface `AnalysisTaskVisitor` defines the behavior of objects that can visit tasks. - * While tasks are not structured in any interesting way, this class provides the ability to - * dispatch to an appropriate method. + * An `AnalysisTaskVisitor` visits tasks. While tasks are not structured in any + * interesting way, this class provides the ability to dispatch to an + * appropriate method. */ abstract class AnalysisTaskVisitor { /** - * Visit a [GenerateDartErrorsTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. + */ + E visitBuildUnitElementTask(BuildUnitElementTask task); + + /** + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitGenerateDartErrorsTask(GenerateDartErrorsTask task); /** - * Visit a [GenerateDartHintsTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitGenerateDartHintsTask(GenerateDartHintsTask task); /** - * Visit a [GetContentTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitGetContentTask(GetContentTask task); /** - * Visit an [IncrementalAnalysisTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitIncrementalAnalysisTask(IncrementalAnalysisTask incrementalAnalysisTask); /** - * Visit a [ParseDartTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitParseDartTask(ParseDartTask task); /** - * Visit a [ParseHtmlTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitParseHtmlTask(ParseHtmlTask task); /** - * Visit a [PolymerBuildHtmlTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitPolymerBuildHtmlTask(PolymerBuildHtmlTask task); /** - * Visit a [PolymerResolveHtmlTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitPolymerResolveHtmlTask(PolymerResolveHtmlTask task); /** - * Visit a [ResolveAngularComponentTemplateTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitResolveAngularComponentTemplateTask(ResolveAngularComponentTemplateTask task); /** - * Visit a [ResolveAngularEntryHtmlTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitResolveAngularEntryHtmlTask(ResolveAngularEntryHtmlTask task); /** - * Visit a [ResolveDartLibraryCycleTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitResolveDartLibraryCycleTask(ResolveDartLibraryCycleTask task); /** - * Visit a [ResolveDartLibraryTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitResolveDartLibraryTask(ResolveDartLibraryTask task); /** - * Visit a [ResolveDartUnitTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitResolveDartUnitTask(ResolveDartUnitTask task); /** - * Visit a [ResolveHtmlTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitResolveHtmlTask(ResolveHtmlTask task); /** - * Visit a [ScanDartTask]. - * - * @param task the task to be visited - * @return the result of visiting the task - * @throws AnalysisException if the visitor throws an exception for some reason + * Visit the given [task], returning the result of the visit. This method will + * throw an AnalysisException if the visitor throws an exception. */ E visitScanDartTask(ScanDartTask task); } @@ -7774,11 +7781,12 @@ class DartEntry extends SourceEntry { = new DataDescriptor>("DartEntry.ANGULAR_ERRORS", AnalysisError.NO_ERRORS); /** - * The data descriptor representing the errors resulting from building the - * element model. + * The data descriptor representing the element model representing a single + * compilation unit. This model is incomplete and should not be used except as + * input to another task. */ - static final DataDescriptor> BUILD_ELEMENT_ERRORS - = new DataDescriptor>("DartEntry.BUILD_ELEMENT_ERRORS", AnalysisError.NO_ERRORS); + static final DataDescriptor> BUILT_ELEMENT + = new DataDescriptor>("DartEntry.BUILT_ELEMENT"); /** * The data descriptor representing the AST structure after the element model @@ -7936,7 +7944,6 @@ class DartEntry extends SourceEntry { errors.addAll(getValue(PARSE_ERRORS)); ResolutionState state = _resolutionState; while (state != null) { - errors.addAll(state.getValue(BUILD_ELEMENT_ERRORS)); errors.addAll(state.getValue(RESOLUTION_ERRORS)); errors.addAll(state.getValue(VERIFICATION_ERRORS)); errors.addAll(state.getValue(HINTS)); @@ -8162,21 +8169,15 @@ class DartEntry extends SourceEntry { } /** - * Record that an error occurred while attempting to build the element model - * for the source represented by this entry. This will set the state of all - * resolution-based information as being in error, but will not change the - * state of any parse results. - * - * @param librarySource the source of the library in which the element model was being built - * @param exception the exception that shows where the error occurred + * Record that an [exception] occurred while attempting to build the element + * model for the source represented by this entry in the context of the given + * [library]. This will set the state of all resolution-based information as + * being in error, but will not change the state of any parse results. */ void recordBuildElementErrorInLibrary(Source librarySource, CaughtException exception) { - this.exception = exception; - setState(ELEMENT, CacheState.ERROR); - setState(IS_LAUNCHABLE, CacheState.ERROR); - setState(IS_CLIENT, CacheState.ERROR); - ResolutionState state = _getOrCreateResolutionState(librarySource); - state.recordBuildElementError(); + setStateInLibrary(BUILT_ELEMENT, librarySource, CacheState.ERROR); + setStateInLibrary(BUILT_UNIT, librarySource, CacheState.ERROR); + recordResolutionErrorInLibrary(librarySource, exception); } @override @@ -8525,7 +8526,7 @@ class DartEntry extends SourceEntry { * relative to a library. */ bool _isValidLibraryDescriptor(DataDescriptor descriptor) { - return descriptor == BUILD_ELEMENT_ERRORS + return descriptor == BUILT_ELEMENT || descriptor == BUILT_UNIT || descriptor == HINTS || descriptor == RESOLUTION_ERRORS @@ -11962,8 +11963,6 @@ class ResolutionState { void invalidateAllResolutionInformation() { _nextState = null; _librarySource = null; - setState(DartEntry.BUILT_UNIT, CacheState.INVALID); - setState(DartEntry.BUILD_ELEMENT_ERRORS, CacheState.INVALID); setState(DartEntry.RESOLVED_UNIT, CacheState.INVALID); setState(DartEntry.RESOLUTION_ERRORS, CacheState.INVALID); setState(DartEntry.VERIFICATION_ERRORS, CacheState.INVALID); @@ -11971,26 +11970,27 @@ class ResolutionState { } /** - * Record that an error occurred while attempting to build the element model for the source - * represented by this state. + * Record that an exception occurred while attempting to build the element + * model for the source associated with this state. */ void recordBuildElementError() { setState(DartEntry.BUILT_UNIT, CacheState.ERROR); - setState(DartEntry.BUILD_ELEMENT_ERRORS, CacheState.ERROR); + setState(DartEntry.BUILT_ELEMENT, CacheState.ERROR); recordResolutionError(); } /** - * Record that an error occurred while attempting to generate hints for the source represented - * by this entry. This will set the state of all verification information as being in error. + * Record that an exception occurred while attempting to generate hints for + * the source associated with this entry. This will set the state of all + * verification information as being in error. */ void recordHintError() { setState(DartEntry.HINTS, CacheState.ERROR); } /** - * Record that an error occurred while attempting to resolve the source represented by this - * state. + * Record that an exception occurred while attempting to resolve the source + * associated with this state. */ void recordResolutionError() { setState(DartEntry.RESOLVED_UNIT, CacheState.ERROR); @@ -11999,9 +11999,9 @@ class ResolutionState { } /** - * Record that an error occurred while attempting to scan or parse the entry represented by this - * entry. This will set the state of all resolution-based information as being in error, but - * will not change the state of any parse results. + * Record that an exception occurred while attempting to scan or parse the + * source associated with this entry. This will set the state of all + * resolution-based information as being in error. */ void recordResolutionErrorsInAllLibraries() { recordBuildElementError(); @@ -12011,9 +12011,9 @@ class ResolutionState { } /** - * Record that an error occurred while attempting to generate errors and warnings for the source - * represented by this entry. This will set the state of all verification information as being - * in error. + * Record that an exception occurred while attempting to generate errors and + * warnings for the source associated with this entry. This will set the state + * of all verification information as being in error. */ void recordVerificationError() { setState(DartEntry.VERIFICATION_ERRORS, CacheState.ERROR); @@ -12092,8 +12092,8 @@ class ResolutionState { */ void _writeOn(StringBuffer buffer) { if (_librarySource != null) { + _writeStateOn(buffer, "builtElement", DartEntry.BUILT_ELEMENT); _writeStateOn(buffer, "builtUnit", DartEntry.BUILT_UNIT); - _writeStateOn(buffer, "buildElementErrors", DartEntry.BUILD_ELEMENT_ERRORS); _writeStateOn(buffer, "resolvedUnit", DartEntry.RESOLVED_UNIT); _writeStateOn(buffer, "resolutionErrors", DartEntry.RESOLUTION_ERRORS); _writeStateOn(buffer, "verificationErrors", DartEntry.VERIFICATION_ERRORS); diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 6e26b9e0c537..7c697cadac26 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -1269,17 +1269,14 @@ class ClassScope extends EnclosedScope { } /** - * Instances of the class `CompilationUnitBuilder` build an element model for a single - * compilation unit. + * A `CompilationUnitBuilder` builds an element model for a single compilation + * unit. */ class CompilationUnitBuilder { /** - * Build the compilation unit element for the given source. - * - * @param source the source describing the compilation unit - * @param unit the AST structure representing the compilation unit - * @return the compilation unit element that was built - * @throws AnalysisException if the analysis could not be performed + * Build the compilation unit element for the given [source] based on the + * compilation [unit] associated with the source. Throw an AnalysisException + * if the element could not be built. */ CompilationUnitElementImpl buildCompilationUnit(Source source, CompilationUnit unit) { TimeCounter_TimeCounterHandle timeCounter = PerformanceStatistics.resolve.start(); @@ -1299,6 +1296,7 @@ class CompilationUnitBuilder { element.types = holder.types; element.topLevelVariables = holder.topLevelVariables; unit.element = element; + holder.validate(); return element; } finally { timeCounter.stop(); diff --git a/pkg/analyzer/lib/src/task/task_dart.dart b/pkg/analyzer/lib/src/task/task_dart.dart new file mode 100644 index 000000000000..8e123b3b8cfe --- /dev/null +++ b/pkg/analyzer/lib/src/task/task_dart.dart @@ -0,0 +1,86 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +library engine.task.dart; + +import 'package:analyzer/src/generated/ast.dart'; +import 'package:analyzer/src/generated/element.dart'; +import 'package:analyzer/src/generated/engine.dart'; +import 'package:analyzer/src/generated/resolver.dart'; +import 'package:analyzer/src/generated/source.dart'; + +/** + * A `BuildUnitElementTask` builds a compilation unit element for a single + * compilation unit. + */ +class BuildUnitElementTask extends AnalysisTask { + /** + * The source for which an element model will be built. + */ + final Source source; + + /** + * The source of the library in which an element model will be built. + */ + final Source library; + + /** + * The compilation unit from which an element model will be built. + */ + final CompilationUnit unit; + + /** + * The element model that was built. + */ + CompilationUnitElement unitElement; + + /** + * Initialize a newly created task to build a compilation unit element for + * the given [source] in the given [library] based on the compilation [unit] + * that was parsed. + */ + BuildUnitElementTask(InternalAnalysisContext context, this.source, this.library, this.unit) + : super(context); + + @override + accept(AnalysisTaskVisitor visitor) { + return visitor.visitBuildUnitElementTask(this); + } + + /** + * Return the compilation unit from which the element model was built. + */ + CompilationUnit getCompilationUnit() { + return unit; + } + + /** + * Return the source that is to be parsed. + */ + Source getSource() { + return source; + } + + /** + * Return the compilation unit element that was produced, or `null` if the + * task has not yet been performed or if an exception occurred. + */ + CompilationUnitElement getUnitElement() { + return unitElement; + } + + @override + void internalPerform() { + CompilationUnitBuilder builder = new CompilationUnitBuilder(); + unitElement = builder.buildCompilationUnit(source, unit); + } + + @override + String get taskDescription { + if (source == null) { + return "build the unit element model for null source"; + } + return "build the unit element model for " + source.fullName; + } +} diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart index 459253e537cb..845636ee75be 100644 --- a/pkg/analyzer/test/generated/engine_test.dart +++ b/pkg/analyzer/test/generated/engine_test.dart @@ -28,6 +28,7 @@ import 'package:analyzer/src/generated/source_io.dart'; import 'package:analyzer/src/generated/testing/ast_factory.dart'; import 'package:analyzer/src/generated/testing/element_factory.dart'; import 'package:analyzer/src/generated/utilities_collection.dart'; +import 'package:analyzer/src/task/task_dart.dart'; import 'package:typed_mock/typed_mock.dart'; import 'package:unittest/unittest.dart' as _ut; @@ -2587,7 +2588,7 @@ class DartEntryTest extends EngineTestCase { entry.getState(DartEntry.IS_LAUNCHABLE)); } - void test_recordBuildElementErrorInLibrary() { + void test_recordBuildElementError() { // TODO(brianwilkerson) This test should set the state for two libraries, // record an error in one library, then verify that the data for the other // library is still valid. @@ -2599,6 +2600,12 @@ class DartEntryTest extends EngineTestCase { JUnitTestCase.assertSame( CacheState.INVALID, entry.getState(SourceEntry.CONTENT)); + JUnitTestCase.assertSame( + CacheState.ERROR, + entry.getStateInLibrary(DartEntry.BUILT_ELEMENT, source)); + JUnitTestCase.assertSame( + CacheState.ERROR, + entry.getStateInLibrary(DartEntry.BUILT_UNIT, source)); JUnitTestCase.assertSame( CacheState.ERROR, entry.getState(DartEntry.ELEMENT)); @@ -2627,7 +2634,7 @@ class DartEntryTest extends EngineTestCase { CacheState.INVALID, entry.getState(DartEntry.PARSED_UNIT)); JUnitTestCase.assertSame( - CacheState.INVALID, + CacheState.ERROR, entry.getState(DartEntry.PUBLIC_NAMESPACE)); JUnitTestCase.assertSame( CacheState.INVALID, @@ -2954,7 +2961,7 @@ class DartEntryTest extends EngineTestCase { } void test_recordScanError() { - // Source source = new TestSource(); +// Source source = new TestSource(); DartEntry entry = new DartEntry(); entry.recordScanError(new CaughtException(new AnalysisException(), null)); JUnitTestCase.assertSame( @@ -3002,12 +3009,12 @@ class DartEntryTest extends EngineTestCase { // The following lines are commented out because we don't currently have // any way of setting the state for data associated with a library we // don't know anything about. -// assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.BUILD_ELEMENT_ERRORS, source)); -// assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.BUILT_UNIT, source)); -// assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.HINTS, source)); -// assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source)); -// assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source)); -// assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source)); +// JUnitTestCase.assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.BUILT_ELEMENT, source)); +// JUnitTestCase.assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.BUILT_UNIT, source)); +// JUnitTestCase.assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.HINTS, source)); +// JUnitTestCase.assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source)); +// JUnitTestCase.assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source)); +// JUnitTestCase.assertSame(CacheState.ERROR, entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source)); } void test_recordVerificationErrorInLibrary() { @@ -6856,6 +6863,12 @@ class TestAnalysisContext_test_setSourceFactory extends TestAnalysisContext { * failure. */ class TestTaskVisitor implements AnalysisTaskVisitor { + @override + E visitBuildUnitElementTask(BuildUnitElementTask task) { + JUnitTestCase.fail("Unexpectedly invoked visitGenerateDartErrorsTask"); + return null; + } + @override E visitGenerateDartErrorsTask(GenerateDartErrorsTask task) { JUnitTestCase.fail("Unexpectedly invoked visitGenerateDartErrorsTask"); diff --git a/pkg/analyzer/test/task/task_dart_test.dart b/pkg/analyzer/test/task/task_dart_test.dart new file mode 100644 index 000000000000..723216bcf88c --- /dev/null +++ b/pkg/analyzer/test/task/task_dart_test.dart @@ -0,0 +1,121 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +library test.engine.task.dart; + +import 'package:analyzer/src/generated/ast.dart'; +import 'package:analyzer/src/generated/engine.dart'; +import 'package:analyzer/src/generated/java_engine.dart'; +import 'package:analyzer/src/generated/source.dart'; +import 'package:analyzer/src/generated/source_io.dart'; +import 'package:analyzer/src/task/task_dart.dart'; +import 'package:unittest/unittest.dart'; + +import '../generated/engine_test.dart'; +import '../generated/resolver_test.dart'; +import '../generated/test_support.dart'; +import '../reflective_tests.dart'; + +main() { + groupSep = ' | '; + runReflectiveTests(BuildUnitElementTaskTest); +} + +class BuildUnitElementTaskTest extends EngineTestCase { + void test_accept() { + BuildUnitElementTask task = new BuildUnitElementTask(null, null, null, null); + expect(task.accept(new BuildUnitElementTaskTV_accept()), isTrue); + } + + void test_getException() { + BuildUnitElementTask task = new BuildUnitElementTask(null, null, null, null); + expect(task.exception, isNull); + } + + void test_getLibrarySource() { + Source source = new TestSource('/part.dart'); + Source library = new TestSource('/lib.dart'); + BuildUnitElementTask task = + new BuildUnitElementTask(null, source, library, null); + expect(task.library, equals(library)); + } + + void test_getUnitSource() { + Source source = new TestSource('/part.dart'); + Source library = new TestSource('/lib.dart'); + BuildUnitElementTask task = + new BuildUnitElementTask(null, source, library, null); + expect(task.source, equals(source)); + } + + void test_perform_exception() { + TestSource source = new TestSource(); + source.generateExceptionOnRead = true; + InternalAnalysisContext context = new AnalysisContextImpl(); + context.sourceFactory = new SourceFactory([new FileUriResolver()]); + CompilationUnit unit = parseUnit(context, source, ""); + BuildUnitElementTask task = + new BuildUnitElementTask(context, null, source, unit); + task.perform(new BuildUnitElementTaskTV_perform_exception()); + } + + void test_perform_valid() { + var content = EngineTestCase.createSource(["library lib;", "class A {}"]); + Source source = new TestSource('/test.dart', content); + InternalAnalysisContext context = AnalysisContextFactory.contextWithCore(); + CompilationUnit unit = parseUnit(context, source, content); + BuildUnitElementTask task = + new BuildUnitElementTask(context, source, source, unit); + task.perform(new BuildUnitElementTaskTV_perform_valid(source, unit)); + } + + CompilationUnit parseUnit(InternalAnalysisContext context, Source source, String content) { + ScanDartTask scanTask = new ScanDartTask( + context, + source, + content); + scanTask.perform(new ScanDartTaskTestTV_accept()); + ParseDartTask parseTask = new ParseDartTask( + context, + source, + scanTask.tokenStream, + scanTask.lineInfo); + parseTask.perform(new ParseDartTaskTestTV_accept()); + return parseTask.compilationUnit; + } +} + +class BuildUnitElementTaskTV_accept extends TestTaskVisitor { + @override + bool visitBuildUnitElementTask(BuildUnitElementTask task) => true; +} + +class BuildUnitElementTaskTV_perform_exception extends TestTaskVisitor { + @override + bool visitBuildUnitElementTask(BuildUnitElementTask task) { + expect(task.exception, isNotNull); + return true; + } +} + +class BuildUnitElementTaskTV_perform_valid extends TestTaskVisitor { + Source source; + + CompilationUnit unit; + + BuildUnitElementTaskTV_perform_valid(this.source, this.unit); + + @override + bool visitBuildUnitElementTask(BuildUnitElementTask task) { + CaughtException exception = task.exception; + if (exception != null) { + throw exception; + } + expect(task.source, equals(source)); + expect(task.library, equals(source)); + expect(task.unit, equals(unit)); + expect(task.unitElement, isNotNull); + return true; + } +} diff --git a/pkg/analyzer/test/task/test_all.dart b/pkg/analyzer/test/task/test_all.dart new file mode 100644 index 000000000000..9ecd16215ffb --- /dev/null +++ b/pkg/analyzer/test/task/test_all.dart @@ -0,0 +1,17 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +library test.task; + +import 'package:unittest/unittest.dart'; + +import 'task_dart_test.dart' as task_dart_test; + +/// Utility for manually running all tests. +main() { + groupSep = ' | '; + group('generated tests', () { + task_dart_test.main(); + }); +} diff --git a/pkg/analyzer/test/test_all.dart b/pkg/analyzer/test/test_all.dart index b1fceafe7258..5aa9922ed6bd 100644 --- a/pkg/analyzer/test/test_all.dart +++ b/pkg/analyzer/test/test_all.dart @@ -13,6 +13,7 @@ import 'generated/test_all.dart' as generated; import 'options_test.dart' as options; import 'parse_compilation_unit_test.dart' as parse_compilation_unit; import 'source/test_all.dart' as source; +import 'task/test_all.dart' as task; /// Utility for manually running all tests. @@ -26,5 +27,6 @@ main() { options.main(); parse_compilation_unit.main(); source.main(); + task.main(); }); -} \ No newline at end of file +} From 39703863c413359eab6fe508fae160a204118050 Mon Sep 17 00:00:00 2001 From: "iposva@google.com" Date: Fri, 17 Oct 2014 17:02:19 +0000 Subject: [PATCH 28/91] - Add a separate step to finalize the VM isolate explicitly. - Allocate the method extractor parameter types and names only once, namely in the VM isolate. R=johnmccutchan@google.com Review URL: https://codereview.chromium.org//664593002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41173 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/dart.cc | 23 ++-------------- runtime/vm/object.cc | 61 +++++++++++++++++++++++++++++++++++++----- runtime/vm/object.h | 20 ++++++++++++-- runtime/vm/resolver.cc | 8 ++---- runtime/vm/symbols.cc | 1 - 5 files changed, 77 insertions(+), 36 deletions(-) diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc index 84f3908c098b..b7dbc3f8b35e 100644 --- a/runtime/vm/dart.cc +++ b/runtime/vm/dart.cc @@ -45,21 +45,6 @@ ThreadPool* Dart::thread_pool_ = NULL; DebugInfo* Dart::pprof_symbol_generator_ = NULL; ReadOnlyHandles* Dart::predefined_handles_ = NULL; -// An object visitor which will mark all visited objects. This is used to -// premark all objects in the vm_isolate_ heap. -class PremarkingVisitor : public ObjectVisitor { - public: - explicit PremarkingVisitor(Isolate* isolate) : ObjectVisitor(isolate) {} - - void VisitObject(RawObject* obj) { - // RawInstruction objects are premarked on allocation. - if (!obj->IsMarked()) { - obj->SetMarkBit(); - } - } -}; - - // Structure for managing read-only global handles allocation used for // creating global read-only handles that are pre created and initialized // for use across all isolates. Having these global pre created handles @@ -131,7 +116,7 @@ const char* Dart::InitOnce(Dart_IsolateCreateCallback create, FLAG_old_gen_heap_size * MBInWords); ObjectStore::Init(vm_isolate_); TargetCPUFeatures::InitOnce(); - Object::InitOnce(); + Object::InitOnce(vm_isolate_); ArgumentsDescriptor::InitOnce(); StubCode::InitOnce(); Symbols::InitOnce(vm_isolate_); @@ -142,11 +127,7 @@ const char* Dart::InitOnce(Dart_IsolateCreateCallback create, return "SSE2 is required."; } #endif - PremarkingVisitor premarker(vm_isolate_); - vm_isolate_->heap()->WriteProtect(false); - ASSERT(vm_isolate_->heap()->UsedInWords(Heap::kNew) == 0); - vm_isolate_->heap()->IterateOldObjects(&premarker); - vm_isolate_->heap()->WriteProtect(true); + Object::FinalizeVMIsolate(vm_isolate_); } // There is a planned and known asymmetry here: We enter one scope for the VM // isolate so that we can allocate the "persistent" scoped handles for the diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc index 9d894ea39e13..03908d9acdf9 100644 --- a/runtime/vm/object.cc +++ b/runtime/vm/object.cc @@ -101,6 +101,8 @@ Array* Object::zero_array_ = NULL; PcDescriptors* Object::empty_descriptors_ = NULL; LocalVarDescriptors* Object::empty_var_descriptors_ = NULL; ExceptionHandlers* Object::empty_exception_handlers_ = NULL; +Array* Object::extractor_parameter_types_ = NULL; +Array* Object::extractor_parameter_names_ = NULL; Instance* Object::sentinel_ = NULL; Instance* Object::transition_sentinel_ = NULL; Instance* Object::unknown_constant_ = NULL; @@ -449,7 +451,10 @@ static type SpecialCharacter(type value) { } -void Object::InitOnce() { +void Object::InitOnce(Isolate* isolate) { + // Should only be run by the vm isolate. + ASSERT(isolate == Dart::vm_isolate()); + // TODO(iposva): NoGCScope needs to be added here. ASSERT(class_class() == null_); // Initialize the static vtable values. @@ -460,7 +465,6 @@ void Object::InitOnce() { Smi::handle_vtable_ = fake_smi.vtable(); } - Isolate* isolate = Isolate::Current(); Heap* heap = isolate->heap(); // Allocate the read only object handles here. @@ -474,6 +478,8 @@ void Object::InitOnce() { empty_descriptors_ = PcDescriptors::ReadOnlyHandle(); empty_var_descriptors_ = LocalVarDescriptors::ReadOnlyHandle(); empty_exception_handlers_ = ExceptionHandlers::ReadOnlyHandle(); + extractor_parameter_types_ = Array::ReadOnlyHandle(); + extractor_parameter_names_ = Array::ReadOnlyHandle(); sentinel_ = Instance::ReadOnlyHandle(); transition_sentinel_ = Instance::ReadOnlyHandle(); unknown_constant_ = Instance::ReadOnlyHandle(); @@ -793,6 +799,12 @@ void Object::InitOnce() { ASSERT(empty_array_->IsArray()); ASSERT(!zero_array_->IsSmi()); ASSERT(zero_array_->IsArray()); + ASSERT(!empty_descriptors_->IsSmi()); + ASSERT(empty_descriptors_->IsPcDescriptors()); + ASSERT(!empty_var_descriptors_->IsSmi()); + ASSERT(empty_var_descriptors_->IsLocalVarDescriptors()); + ASSERT(!empty_exception_handlers_->IsSmi()); + ASSERT(empty_exception_handlers_->IsExceptionHandlers()); ASSERT(!sentinel_->IsSmi()); ASSERT(sentinel_->IsInstance()); ASSERT(!transition_sentinel_->IsSmi()); @@ -813,14 +825,44 @@ void Object::InitOnce() { } +// An object visitor which will mark all visited objects. This is used to +// premark all objects in the vm_isolate_ heap. +class PremarkingVisitor : public ObjectVisitor { + public: + explicit PremarkingVisitor(Isolate* isolate) : ObjectVisitor(isolate) {} + + void VisitObject(RawObject* obj) { + // RawInstruction objects are premarked on allocation. + if (!obj->IsMarked()) { + obj->SetMarkBit(); + } + } +}; + + #define SET_CLASS_NAME(class_name, name) \ cls = class_name##_class(); \ cls.set_name(Symbols::name()); \ -void Object::RegisterSingletonClassNames() { - Class& cls = Class::Handle(); +void Object::FinalizeVMIsolate(Isolate* isolate) { + // Should only be run by the vm isolate. + ASSERT(isolate == Dart::vm_isolate()); + + // Allocate the parameter arrays for method extractor types and names. + *extractor_parameter_types_ = Array::New(1, Heap::kOld); + extractor_parameter_types_->SetAt(0, Type::Handle(Type::DynamicType())); + *extractor_parameter_names_ = Array::New(1, Heap::kOld); + extractor_parameter_names_->SetAt(0, Symbols::This()); + + ASSERT(!extractor_parameter_types_->IsSmi()); + ASSERT(extractor_parameter_types_->IsArray()); + ASSERT(!extractor_parameter_names_->IsSmi()); + ASSERT(extractor_parameter_names_->IsArray()); + // Set up names for all VM singleton classes. + Class& cls = Class::Handle(isolate); + SET_CLASS_NAME(class, Class); SET_CLASS_NAME(dynamic, Dynamic); SET_CLASS_NAME(void, Void); @@ -855,10 +897,17 @@ void Object::RegisterSingletonClassNames() { // Set up names for object array and one byte string class which are // pre-allocated in the vm isolate also. - cls = Dart::vm_isolate()->object_store()->array_class(); + cls = isolate->object_store()->array_class(); cls.set_name(Symbols::_List()); - cls = Dart::vm_isolate()->object_store()->one_byte_string_class(); + cls = isolate->object_store()->one_byte_string_class(); cls.set_name(Symbols::OneByteString()); + + // Make the VM isolate read-only after setting all objects as marked. + PremarkingVisitor premarker(isolate); + isolate->heap()->WriteProtect(false); + ASSERT(isolate->heap()->UsedInWords(Heap::kNew) == 0); + isolate->heap()->IterateOldObjects(&premarker); + isolate->heap()->WriteProtect(true); } diff --git a/runtime/vm/object.h b/runtime/vm/object.h index 734f4066559b..3dcded6e4f9e 100644 --- a/runtime/vm/object.h +++ b/runtime/vm/object.h @@ -404,6 +404,16 @@ class Object { return *empty_exception_handlers_; } + static const Array& extractor_parameter_types() { + ASSERT(extractor_parameter_types_ != NULL); + return *extractor_parameter_types_; + } + + static const Array& extractor_parameter_names() { + ASSERT(extractor_parameter_names_ != NULL); + return *extractor_parameter_names_; + } + // The sentinel is a value that cannot be produced by Dart code. // It can be used to mark special values, for example to distinguish // "uninitialized" fields. @@ -491,10 +501,14 @@ class Object { } static RawClass* subtypetestcache_class() { return subtypetestcache_class_; } + // Initialize the VM isolate. + static void InitOnce(Isolate* isolate); + static void FinalizeVMIsolate(Isolate* isolate); + + // Initialize a new isolate either from source or from a snapshot. static RawError* Init(Isolate* isolate); static void InitFromSnapshot(Isolate* isolate); - static void InitOnce(); - static void RegisterSingletonClassNames(); + static void MakeUnusedSpaceTraversable(const Object& obj, intptr_t original_size, intptr_t used_size); @@ -761,6 +775,8 @@ class Object { static PcDescriptors* empty_descriptors_; static LocalVarDescriptors* empty_var_descriptors_; static ExceptionHandlers* empty_exception_handlers_; + static Array* extractor_parameter_types_; + static Array* extractor_parameter_names_; static Instance* sentinel_; static Instance* transition_sentinel_; static Instance* unknown_constant_; diff --git a/runtime/vm/resolver.cc b/runtime/vm/resolver.cc index 11cd7e59dba1..c31a1eea0860 100644 --- a/runtime/vm/resolver.cc +++ b/runtime/vm/resolver.cc @@ -85,12 +85,8 @@ static RawFunction* CreateMethodExtractor(const String& getter_name, const intptr_t kNumParameters = 1; extractor.set_num_fixed_parameters(kNumParameters); extractor.SetNumOptionalParameters(0, 0); - extractor.set_parameter_types(Array::Handle(Array::New(kNumParameters, - Heap::kOld))); - extractor.set_parameter_names(Array::Handle(Array::New(kNumParameters, - Heap::kOld))); - extractor.SetParameterTypeAt(0, Type::Handle(Type::DynamicType())); - extractor.SetParameterNameAt(0, Symbols::This()); + extractor.set_parameter_types(Object::extractor_parameter_types()); + extractor.set_parameter_names(Object::extractor_parameter_names()); extractor.set_result_type(Type::Handle(Type::DynamicType())); extractor.set_extracted_method_closure(closure_function); diff --git a/runtime/vm/symbols.cc b/runtime/vm/symbols.cc index 0ccf8a032e6b..cb230910687e 100644 --- a/runtime/vm/symbols.cc +++ b/runtime/vm/symbols.cc @@ -72,7 +72,6 @@ void Symbols::InitOnce(Isolate* isolate) { AddToVMIsolate(*str); symbol_handles_[i] = str; } - Object::RegisterSingletonClassNames(); // Create symbols for language keywords. Some keywords are equal to // symbols we already created, so use New() instead of Add() to ensure From 522e3433e423d6f53b81df96c435f731e2a6dabf Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Fri, 17 Oct 2014 17:32:42 +0000 Subject: [PATCH 29/91] remove duplicate packages in fuzz test BUG= R=paulberry@google.com Review URL: https://codereview.chromium.org//656533004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41175 260f80e4-7a28-3924-810f-c04153c831b5 --- .../bin/fuzz/byte_stream_channel.dart | 137 - pkg/analysis_server/bin/fuzz/channel.dart | 151 - .../bin/fuzz/generated_protocol.dart | 10023 ---------------- pkg/analysis_server/bin/fuzz/json.dart | 16 - pkg/analysis_server/bin/fuzz/protocol.dart | 771 -- .../bin/fuzz/server_manager.dart | 7 +- 6 files changed, 3 insertions(+), 11102 deletions(-) delete mode 100644 pkg/analysis_server/bin/fuzz/byte_stream_channel.dart delete mode 100644 pkg/analysis_server/bin/fuzz/channel.dart delete mode 100644 pkg/analysis_server/bin/fuzz/generated_protocol.dart delete mode 100644 pkg/analysis_server/bin/fuzz/json.dart delete mode 100644 pkg/analysis_server/bin/fuzz/protocol.dart diff --git a/pkg/analysis_server/bin/fuzz/byte_stream_channel.dart b/pkg/analysis_server/bin/fuzz/byte_stream_channel.dart deleted file mode 100644 index 1b625060947d..000000000000 --- a/pkg/analysis_server/bin/fuzz/byte_stream_channel.dart +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -library channel.byte_stream; - -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; - -import 'channel.dart'; -import 'protocol.dart'; - -/** - * Instances of the class [ByteStreamClientChannel] implement a - * [ClientCommunicationChannel] that uses a stream and a sink (typically, - * standard input and standard output) to communicate with servers. - */ -class ByteStreamClientChannel implements ClientCommunicationChannel { - final Stream input; - final IOSink output; - - @override - Stream responseStream; - - @override - Stream notificationStream; - - ByteStreamClientChannel(this.input, this.output) { - Stream jsonStream = input.transform((new Utf8Codec()).decoder) - .transform(new LineSplitter()) - .transform(new JsonStreamDecoder()) - .where((json) => json is Map) - .asBroadcastStream(); - responseStream = jsonStream - .where((json) => json[Notification.EVENT] == null) - .transform(new ResponseConverter()) - .asBroadcastStream(); - notificationStream = jsonStream - .where((json) => json[Notification.EVENT] != null) - .transform(new NotificationConverter()) - .asBroadcastStream(); - } - - @override - Future close() { - return output.close(); - } - - @override - Future sendRequest(Request request) { - String id = request.id; - output.writeln(JSON.encode(request.toJson())); - return responseStream.firstWhere((Response response) => response.id == id); - } -} - -/** - * Instances of the class [ByteStreamServerChannel] implement a - * [ServerCommunicationChannel] that uses a stream and a sink (typically, - * standard input and standard output) to communicate with clients. - */ -class ByteStreamServerChannel implements ServerCommunicationChannel { - final Stream input; - final IOSink output; - - /** - * Completer that will be signalled when the input stream is closed. - */ - final Completer _closed = new Completer(); - - ByteStreamServerChannel(this.input, this.output); - - /** - * Future that will be completed when the input stream is closed. - */ - Future get closed { - return _closed.future; - } - - @override - void close() { - if (!_closed.isCompleted) { - _closed.complete(); - } - } - - @override - void listen(void onRequest(Request request), {Function onError, void - onDone()}) { - input.transform((new Utf8Codec()).decoder).transform(new LineSplitter() - ).listen((String data) => _readRequest(data, onRequest), onError: onError, - onDone: () { - close(); - onDone(); - }); - } - - @override - void sendNotification(Notification notification) { - // Don't send any further notifications after the communication channel is - // closed. - if (_closed.isCompleted) { - return; - } - output.writeln(JSON.encode(notification.toJson())); - } - - @override - void sendResponse(Response response) { - // Don't send any further responses after the communication channel is - // closed. - if (_closed.isCompleted) { - return; - } - output.writeln(JSON.encode(response.toJson())); - } - - /** - * Read a request from the given [data] and use the given function to handle - * the request. - */ - void _readRequest(Object data, void onRequest(Request request)) { - // Ignore any further requests after the communication channel is closed. - if (_closed.isCompleted) { - return; - } - // Parse the string as a JSON descriptor and process the resulting - // structure as a request. - Request request = new Request.fromString(data); - if (request == null) { - sendResponse(new Response.invalidRequestFormat()); - return; - } - onRequest(request); - } -} diff --git a/pkg/analysis_server/bin/fuzz/channel.dart b/pkg/analysis_server/bin/fuzz/channel.dart deleted file mode 100644 index 1130ace4bbe9..000000000000 --- a/pkg/analysis_server/bin/fuzz/channel.dart +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -library channel; - -import 'dart:async'; -import 'dart:convert'; - -import 'protocol.dart'; - -/** - * The abstract class [ClientCommunicationChannel] defines the behavior of - * objects that allow a client to send [Request]s to an [AnalysisServer] and to - * receive both [Response]s and [Notification]s. - */ -abstract class ClientCommunicationChannel { - /** - * The stream of notifications from the server. - */ - Stream notificationStream; - - /** - * The stream of responses from the server. - */ - Stream responseStream; - - /** - * Send the given [request] to the server - * and return a future with the associated [Response]. - */ - Future sendRequest(Request request); - - /** - * Close the channel to the server. Once called, all future communication - * with the server via [sendRequest] will silently be ignored. - */ - Future close(); -} - -/** - * The abstract class [ServerCommunicationChannel] defines the behavior of - * objects that allow an [AnalysisServer] to receive [Request]s and to return - * both [Response]s and [Notification]s. - */ -abstract class ServerCommunicationChannel { - /** - * Listen to the channel for requests. If a request is received, invoke the - * [onRequest] function. If an error is encountered while trying to read from - * the socket, invoke the [onError] function. If the socket is closed by the - * client, invoke the [onDone] function. - * Only one listener is allowed per channel. - */ - void listen(void onRequest(Request request), {Function onError, void onDone()}); - - /** - * Send the given [notification] to the client. - */ - void sendNotification(Notification notification); - - /** - * Send the given [response] to the client. - */ - void sendResponse(Response response); - - /** - * Close the communication channel. - */ - void close(); -} - -/** - * Instances of the class [JsonStreamDecoder] convert JSON strings to JSON - * maps. - */ -class JsonStreamDecoder extends Converter { - @override - Map convert(String text) => JSON.decode(text); - - @override - ChunkedConversionSink startChunkedConversion(Sink sink) => - new ChannelChunkSink(this, sink); -} - -/** - * Instances of the class [ResponseConverter] convert JSON maps to [Response]s. - */ -class ResponseConverter extends Converter { - @override - Response convert(Map json) => new Response.fromJson(json); - - @override - ChunkedConversionSink startChunkedConversion(Sink sink) => - new ChannelChunkSink(this, sink); -} - -/** - * Instances of the class [NotificationConverter] convert JSON maps to - * [Notification]s. - */ -class NotificationConverter extends Converter { - @override - Notification convert(Map json) => new Notification.fromJson(json); - - @override - ChunkedConversionSink startChunkedConversion(Sink sink) => - new ChannelChunkSink(this, sink); -} - -/** - * Instances of the class [ChannelChunkSink] uses a [Converter] to translate - * chunks. - */ -class ChannelChunkSink extends ChunkedConversionSink { - /** - * The converter used to translate chunks. - */ - final Converter converter; - - /** - * The sink to which the converted chunks are added. - */ - final Sink sink; - - /** - * A flag indicating whether the sink has been closed. - */ - bool closed = false; - - /** - * Initialize a newly create sink to use the given [converter] to convert - * chunks before adding them to the given [sink]. - */ - ChannelChunkSink(this.converter, this.sink); - - @override - void add(S chunk) { - if (!closed) { - T convertedChunk = converter.convert(chunk); - if (convertedChunk != null) { - sink.add(convertedChunk); - } - } - } - - @override - void close() { - closed = true; - sink.close(); - } -} diff --git a/pkg/analysis_server/bin/fuzz/generated_protocol.dart b/pkg/analysis_server/bin/fuzz/generated_protocol.dart deleted file mode 100644 index 21bc89698fdc..000000000000 --- a/pkg/analysis_server/bin/fuzz/generated_protocol.dart +++ /dev/null @@ -1,10023 +0,0 @@ -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. -// -// This file has been automatically generated. Please do not edit it manually. -// To regenerate the file, use the script -// "pkg/analysis_server/tool/spec/generate_files". - -part of protocol; -/** - * server.getVersion params - */ -class ServerGetVersionParams { - Request toRequest(String id) { - return new Request(id, "server.getVersion", null); - } - - @override - bool operator==(other) { - if (other is ServerGetVersionParams) { - return true; - } - return false; - } - - @override - int get hashCode { - return 55877452; - } -} - -/** - * server.getVersion result - * - * { - * "version": String - * } - */ -class ServerGetVersionResult implements HasToJson { - /** - * The version number of the analysis server. - */ - String version; - - ServerGetVersionResult(this.version); - - factory ServerGetVersionResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String version; - if (json.containsKey("version")) { - version = jsonDecoder._decodeString(jsonPath + ".version", json["version"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "version"); - } - return new ServerGetVersionResult(version); - } else { - throw jsonDecoder.mismatch(jsonPath, "server.getVersion result"); - } - } - - factory ServerGetVersionResult.fromResponse(Response response) { - return new ServerGetVersionResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["version"] = version; - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ServerGetVersionResult) { - return version == other.version; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, version.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * server.shutdown params - */ -class ServerShutdownParams { - Request toRequest(String id) { - return new Request(id, "server.shutdown", null); - } - - @override - bool operator==(other) { - if (other is ServerShutdownParams) { - return true; - } - return false; - } - - @override - int get hashCode { - return 366630911; - } -} -/** - * server.shutdown result - */ -class ServerShutdownResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is ServerShutdownResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 193626532; - } -} - -/** - * server.setSubscriptions params - * - * { - * "subscriptions": List - * } - */ -class ServerSetSubscriptionsParams implements HasToJson { - /** - * A list of the services being subscribed to. - */ - List subscriptions; - - ServerSetSubscriptionsParams(this.subscriptions); - - factory ServerSetSubscriptionsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List subscriptions; - if (json.containsKey("subscriptions")) { - subscriptions = jsonDecoder._decodeList(jsonPath + ".subscriptions", json["subscriptions"], (String jsonPath, Object json) => new ServerService.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "subscriptions"); - } - return new ServerSetSubscriptionsParams(subscriptions); - } else { - throw jsonDecoder.mismatch(jsonPath, "server.setSubscriptions params"); - } - } - - factory ServerSetSubscriptionsParams.fromRequest(Request request) { - return new ServerSetSubscriptionsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["subscriptions"] = subscriptions.map((ServerService value) => value.toJson()).toList(); - return result; - } - - Request toRequest(String id) { - return new Request(id, "server.setSubscriptions", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ServerSetSubscriptionsParams) { - return _listEqual(subscriptions, other.subscriptions, (ServerService a, ServerService b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, subscriptions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * server.setSubscriptions result - */ -class ServerSetSubscriptionsResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is ServerSetSubscriptionsResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 748820900; - } -} -/** - * server.connected params - */ -class ServerConnectedParams { - Notification toNotification() { - return new Notification("server.connected", null); - } - - @override - bool operator==(other) { - if (other is ServerConnectedParams) { - return true; - } - return false; - } - - @override - int get hashCode { - return 509239412; - } -} - -/** - * server.error params - * - * { - * "isFatal": bool - * "message": String - * "stackTrace": String - * } - */ -class ServerErrorParams implements HasToJson { - /** - * True if the error is a fatal error, meaning that the server will shutdown - * automatically after sending this notification. - */ - bool isFatal; - - /** - * The error message indicating what kind of error was encountered. - */ - String message; - - /** - * The stack trace associated with the generation of the error, used for - * debugging the server. - */ - String stackTrace; - - ServerErrorParams(this.isFatal, this.message, this.stackTrace); - - factory ServerErrorParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - bool isFatal; - if (json.containsKey("isFatal")) { - isFatal = jsonDecoder._decodeBool(jsonPath + ".isFatal", json["isFatal"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isFatal"); - } - String message; - if (json.containsKey("message")) { - message = jsonDecoder._decodeString(jsonPath + ".message", json["message"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "message"); - } - String stackTrace; - if (json.containsKey("stackTrace")) { - stackTrace = jsonDecoder._decodeString(jsonPath + ".stackTrace", json["stackTrace"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "stackTrace"); - } - return new ServerErrorParams(isFatal, message, stackTrace); - } else { - throw jsonDecoder.mismatch(jsonPath, "server.error params"); - } - } - - factory ServerErrorParams.fromNotification(Notification notification) { - return new ServerErrorParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["isFatal"] = isFatal; - result["message"] = message; - result["stackTrace"] = stackTrace; - return result; - } - - Notification toNotification() { - return new Notification("server.error", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ServerErrorParams) { - return isFatal == other.isFatal && - message == other.message && - stackTrace == other.stackTrace; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, isFatal.hashCode); - hash = _JenkinsSmiHash.combine(hash, message.hashCode); - hash = _JenkinsSmiHash.combine(hash, stackTrace.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * server.status params - * - * { - * "analysis": optional AnalysisStatus - * } - */ -class ServerStatusParams implements HasToJson { - /** - * The current status of analysis, including whether analysis is being - * performed and if so what is being analyzed. - */ - AnalysisStatus analysis; - - ServerStatusParams({this.analysis}); - - factory ServerStatusParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - AnalysisStatus analysis; - if (json.containsKey("analysis")) { - analysis = new AnalysisStatus.fromJson(jsonDecoder, jsonPath + ".analysis", json["analysis"]); - } - return new ServerStatusParams(analysis: analysis); - } else { - throw jsonDecoder.mismatch(jsonPath, "server.status params"); - } - } - - factory ServerStatusParams.fromNotification(Notification notification) { - return new ServerStatusParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - if (analysis != null) { - result["analysis"] = analysis.toJson(); - } - return result; - } - - Notification toNotification() { - return new Notification("server.status", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ServerStatusParams) { - return analysis == other.analysis; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, analysis.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.getErrors params - * - * { - * "file": FilePath - * } - */ -class AnalysisGetErrorsParams implements HasToJson { - /** - * The file for which errors are being requested. - */ - String file; - - AnalysisGetErrorsParams(this.file); - - factory AnalysisGetErrorsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - return new AnalysisGetErrorsParams(file); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.getErrors params"); - } - } - - factory AnalysisGetErrorsParams.fromRequest(Request request) { - return new AnalysisGetErrorsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.getErrors", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisGetErrorsParams) { - return file == other.file; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.getErrors result - * - * { - * "errors": List - * } - */ -class AnalysisGetErrorsResult implements HasToJson { - /** - * The errors associated with the file. - */ - List errors; - - AnalysisGetErrorsResult(this.errors); - - factory AnalysisGetErrorsResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List errors; - if (json.containsKey("errors")) { - errors = jsonDecoder._decodeList(jsonPath + ".errors", json["errors"], (String jsonPath, Object json) => new AnalysisError.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "errors"); - } - return new AnalysisGetErrorsResult(errors); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.getErrors result"); - } - } - - factory AnalysisGetErrorsResult.fromResponse(Response response) { - return new AnalysisGetErrorsResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["errors"] = errors.map((AnalysisError value) => value.toJson()).toList(); - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisGetErrorsResult) { - return _listEqual(errors, other.errors, (AnalysisError a, AnalysisError b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, errors.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.getHover params - * - * { - * "file": FilePath - * "offset": int - * } - */ -class AnalysisGetHoverParams implements HasToJson { - /** - * The file in which hover information is being requested. - */ - String file; - - /** - * The offset for which hover information is being requested. - */ - int offset; - - AnalysisGetHoverParams(this.file, this.offset); - - factory AnalysisGetHoverParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - return new AnalysisGetHoverParams(file, offset); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.getHover params"); - } - } - - factory AnalysisGetHoverParams.fromRequest(Request request) { - return new AnalysisGetHoverParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.getHover", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisGetHoverParams) { - return file == other.file && - offset == other.offset; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.getHover result - * - * { - * "hovers": List - * } - */ -class AnalysisGetHoverResult implements HasToJson { - /** - * The hover information associated with the location. The list will be empty - * if no information could be determined for the location. The list can - * contain multiple items if the file is being analyzed in multiple contexts - * in conflicting ways (such as a part that is included in multiple - * libraries). - */ - List hovers; - - AnalysisGetHoverResult(this.hovers); - - factory AnalysisGetHoverResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List hovers; - if (json.containsKey("hovers")) { - hovers = jsonDecoder._decodeList(jsonPath + ".hovers", json["hovers"], (String jsonPath, Object json) => new HoverInformation.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "hovers"); - } - return new AnalysisGetHoverResult(hovers); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.getHover result"); - } - } - - factory AnalysisGetHoverResult.fromResponse(Response response) { - return new AnalysisGetHoverResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["hovers"] = hovers.map((HoverInformation value) => value.toJson()).toList(); - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisGetHoverResult) { - return _listEqual(hovers, other.hovers, (HoverInformation a, HoverInformation b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, hovers.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * analysis.reanalyze params - */ -class AnalysisReanalyzeParams { - Request toRequest(String id) { - return new Request(id, "analysis.reanalyze", null); - } - - @override - bool operator==(other) { - if (other is AnalysisReanalyzeParams) { - return true; - } - return false; - } - - @override - int get hashCode { - return 613039876; - } -} -/** - * analysis.reanalyze result - */ -class AnalysisReanalyzeResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is AnalysisReanalyzeResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 846803925; - } -} - -/** - * analysis.setAnalysisRoots params - * - * { - * "included": List - * "excluded": List - * } - */ -class AnalysisSetAnalysisRootsParams implements HasToJson { - /** - * A list of the files and directories that should be analyzed. - */ - List included; - - /** - * A list of the files and directories within the included directories that - * should not be analyzed. - */ - List excluded; - - AnalysisSetAnalysisRootsParams(this.included, this.excluded); - - factory AnalysisSetAnalysisRootsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List included; - if (json.containsKey("included")) { - included = jsonDecoder._decodeList(jsonPath + ".included", json["included"], jsonDecoder._decodeString); - } else { - throw jsonDecoder.missingKey(jsonPath, "included"); - } - List excluded; - if (json.containsKey("excluded")) { - excluded = jsonDecoder._decodeList(jsonPath + ".excluded", json["excluded"], jsonDecoder._decodeString); - } else { - throw jsonDecoder.missingKey(jsonPath, "excluded"); - } - return new AnalysisSetAnalysisRootsParams(included, excluded); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.setAnalysisRoots params"); - } - } - - factory AnalysisSetAnalysisRootsParams.fromRequest(Request request) { - return new AnalysisSetAnalysisRootsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["included"] = included; - result["excluded"] = excluded; - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.setAnalysisRoots", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisSetAnalysisRootsParams) { - return _listEqual(included, other.included, (String a, String b) => a == b) && - _listEqual(excluded, other.excluded, (String a, String b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, included.hashCode); - hash = _JenkinsSmiHash.combine(hash, excluded.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * analysis.setAnalysisRoots result - */ -class AnalysisSetAnalysisRootsResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is AnalysisSetAnalysisRootsResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 866004753; - } -} - -/** - * analysis.setPriorityFiles params - * - * { - * "files": List - * } - */ -class AnalysisSetPriorityFilesParams implements HasToJson { - /** - * The files that are to be a priority for analysis. - */ - List files; - - AnalysisSetPriorityFilesParams(this.files); - - factory AnalysisSetPriorityFilesParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List files; - if (json.containsKey("files")) { - files = jsonDecoder._decodeList(jsonPath + ".files", json["files"], jsonDecoder._decodeString); - } else { - throw jsonDecoder.missingKey(jsonPath, "files"); - } - return new AnalysisSetPriorityFilesParams(files); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.setPriorityFiles params"); - } - } - - factory AnalysisSetPriorityFilesParams.fromRequest(Request request) { - return new AnalysisSetPriorityFilesParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["files"] = files; - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.setPriorityFiles", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisSetPriorityFilesParams) { - return _listEqual(files, other.files, (String a, String b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, files.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * analysis.setPriorityFiles result - */ -class AnalysisSetPriorityFilesResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is AnalysisSetPriorityFilesResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 330050055; - } -} - -/** - * analysis.setSubscriptions params - * - * { - * "subscriptions": Map> - * } - */ -class AnalysisSetSubscriptionsParams implements HasToJson { - /** - * A table mapping services to a list of the files being subscribed to the - * service. - */ - Map> subscriptions; - - AnalysisSetSubscriptionsParams(this.subscriptions); - - factory AnalysisSetSubscriptionsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Map> subscriptions; - if (json.containsKey("subscriptions")) { - subscriptions = jsonDecoder._decodeMap(jsonPath + ".subscriptions", json["subscriptions"], keyDecoder: (String jsonPath, Object json) => new AnalysisService.fromJson(jsonDecoder, jsonPath, json), valueDecoder: (String jsonPath, Object json) => jsonDecoder._decodeList(jsonPath, json, jsonDecoder._decodeString)); - } else { - throw jsonDecoder.missingKey(jsonPath, "subscriptions"); - } - return new AnalysisSetSubscriptionsParams(subscriptions); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.setSubscriptions params"); - } - } - - factory AnalysisSetSubscriptionsParams.fromRequest(Request request) { - return new AnalysisSetSubscriptionsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["subscriptions"] = mapMap(subscriptions, keyCallback: (AnalysisService value) => value.toJson()); - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.setSubscriptions", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisSetSubscriptionsParams) { - return _mapEqual(subscriptions, other.subscriptions, (List a, List b) => _listEqual(a, b, (String a, String b) => a == b)); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, subscriptions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * analysis.setSubscriptions result - */ -class AnalysisSetSubscriptionsResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is AnalysisSetSubscriptionsResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 218088493; - } -} - -/** - * analysis.updateContent params - * - * { - * "files": Map - * } - */ -class AnalysisUpdateContentParams implements HasToJson { - /** - * A table mapping the files whose content has changed to a description of - * the content change. - */ - Map files; - - AnalysisUpdateContentParams(this.files); - - factory AnalysisUpdateContentParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Map files; - if (json.containsKey("files")) { - files = jsonDecoder._decodeMap(jsonPath + ".files", json["files"], valueDecoder: (String jsonPath, Object json) => jsonDecoder._decodeUnion(jsonPath, json, "type", {"add": (String jsonPath, Object json) => new AddContentOverlay.fromJson(jsonDecoder, jsonPath, json), "change": (String jsonPath, Object json) => new ChangeContentOverlay.fromJson(jsonDecoder, jsonPath, json), "remove": (String jsonPath, Object json) => new RemoveContentOverlay.fromJson(jsonDecoder, jsonPath, json)})); - } else { - throw jsonDecoder.missingKey(jsonPath, "files"); - } - return new AnalysisUpdateContentParams(files); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.updateContent params"); - } - } - - factory AnalysisUpdateContentParams.fromRequest(Request request) { - return new AnalysisUpdateContentParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["files"] = mapMap(files, valueCallback: (dynamic value) => value.toJson()); - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.updateContent", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisUpdateContentParams) { - return _mapEqual(files, other.files, (dynamic a, dynamic b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, files.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * analysis.updateContent result - */ -class AnalysisUpdateContentResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is AnalysisUpdateContentResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 468798730; - } -} - -/** - * analysis.updateOptions params - * - * { - * "options": AnalysisOptions - * } - */ -class AnalysisUpdateOptionsParams implements HasToJson { - /** - * The options that are to be used to control analysis. - */ - AnalysisOptions options; - - AnalysisUpdateOptionsParams(this.options); - - factory AnalysisUpdateOptionsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - AnalysisOptions options; - if (json.containsKey("options")) { - options = new AnalysisOptions.fromJson(jsonDecoder, jsonPath + ".options", json["options"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "options"); - } - return new AnalysisUpdateOptionsParams(options); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.updateOptions params"); - } - } - - factory AnalysisUpdateOptionsParams.fromRequest(Request request) { - return new AnalysisUpdateOptionsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["options"] = options.toJson(); - return result; - } - - Request toRequest(String id) { - return new Request(id, "analysis.updateOptions", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisUpdateOptionsParams) { - return options == other.options; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, options.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * analysis.updateOptions result - */ -class AnalysisUpdateOptionsResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is AnalysisUpdateOptionsResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 179689467; - } -} - -/** - * analysis.errors params - * - * { - * "file": FilePath - * "errors": List - * } - */ -class AnalysisErrorsParams implements HasToJson { - /** - * The file containing the errors. - */ - String file; - - /** - * The errors contained in the file. - */ - List errors; - - AnalysisErrorsParams(this.file, this.errors); - - factory AnalysisErrorsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - List errors; - if (json.containsKey("errors")) { - errors = jsonDecoder._decodeList(jsonPath + ".errors", json["errors"], (String jsonPath, Object json) => new AnalysisError.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "errors"); - } - return new AnalysisErrorsParams(file, errors); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.errors params"); - } - } - - factory AnalysisErrorsParams.fromNotification(Notification notification) { - return new AnalysisErrorsParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["errors"] = errors.map((AnalysisError value) => value.toJson()).toList(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.errors", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisErrorsParams) { - return file == other.file && - _listEqual(errors, other.errors, (AnalysisError a, AnalysisError b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, errors.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.flushResults params - * - * { - * "files": List - * } - */ -class AnalysisFlushResultsParams implements HasToJson { - /** - * The files that are no longer being analyzed. - */ - List files; - - AnalysisFlushResultsParams(this.files); - - factory AnalysisFlushResultsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List files; - if (json.containsKey("files")) { - files = jsonDecoder._decodeList(jsonPath + ".files", json["files"], jsonDecoder._decodeString); - } else { - throw jsonDecoder.missingKey(jsonPath, "files"); - } - return new AnalysisFlushResultsParams(files); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.flushResults params"); - } - } - - factory AnalysisFlushResultsParams.fromNotification(Notification notification) { - return new AnalysisFlushResultsParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["files"] = files; - return result; - } - - Notification toNotification() { - return new Notification("analysis.flushResults", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisFlushResultsParams) { - return _listEqual(files, other.files, (String a, String b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, files.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.folding params - * - * { - * "file": FilePath - * "regions": List - * } - */ -class AnalysisFoldingParams implements HasToJson { - /** - * The file containing the folding regions. - */ - String file; - - /** - * The folding regions contained in the file. - */ - List regions; - - AnalysisFoldingParams(this.file, this.regions); - - factory AnalysisFoldingParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - List regions; - if (json.containsKey("regions")) { - regions = jsonDecoder._decodeList(jsonPath + ".regions", json["regions"], (String jsonPath, Object json) => new FoldingRegion.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "regions"); - } - return new AnalysisFoldingParams(file, regions); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.folding params"); - } - } - - factory AnalysisFoldingParams.fromNotification(Notification notification) { - return new AnalysisFoldingParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["regions"] = regions.map((FoldingRegion value) => value.toJson()).toList(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.folding", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisFoldingParams) { - return file == other.file && - _listEqual(regions, other.regions, (FoldingRegion a, FoldingRegion b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, regions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.highlights params - * - * { - * "file": FilePath - * "regions": List - * } - */ -class AnalysisHighlightsParams implements HasToJson { - /** - * The file containing the highlight regions. - */ - String file; - - /** - * The highlight regions contained in the file. Each highlight region - * represents a particular syntactic or semantic meaning associated with some - * range. Note that the highlight regions that are returned can overlap other - * highlight regions if there is more than one meaning associated with a - * particular region. - */ - List regions; - - AnalysisHighlightsParams(this.file, this.regions); - - factory AnalysisHighlightsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - List regions; - if (json.containsKey("regions")) { - regions = jsonDecoder._decodeList(jsonPath + ".regions", json["regions"], (String jsonPath, Object json) => new HighlightRegion.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "regions"); - } - return new AnalysisHighlightsParams(file, regions); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.highlights params"); - } - } - - factory AnalysisHighlightsParams.fromNotification(Notification notification) { - return new AnalysisHighlightsParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["regions"] = regions.map((HighlightRegion value) => value.toJson()).toList(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.highlights", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisHighlightsParams) { - return file == other.file && - _listEqual(regions, other.regions, (HighlightRegion a, HighlightRegion b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, regions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.navigation params - * - * { - * "file": FilePath - * "regions": List - * } - */ -class AnalysisNavigationParams implements HasToJson { - /** - * The file containing the navigation regions. - */ - String file; - - /** - * The navigation regions contained in the file. Each navigation region - * represents a list of targets associated with some range. The lists will - * usually contain a single target, but can contain more in the case of a - * part that is included in multiple libraries or in Dart code that is - * compiled against multiple versions of a package. Note that the navigation - * regions that are returned do not overlap other navigation regions. - */ - List regions; - - AnalysisNavigationParams(this.file, this.regions); - - factory AnalysisNavigationParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - List regions; - if (json.containsKey("regions")) { - regions = jsonDecoder._decodeList(jsonPath + ".regions", json["regions"], (String jsonPath, Object json) => new NavigationRegion.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "regions"); - } - return new AnalysisNavigationParams(file, regions); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.navigation params"); - } - } - - factory AnalysisNavigationParams.fromNotification(Notification notification) { - return new AnalysisNavigationParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["regions"] = regions.map((NavigationRegion value) => value.toJson()).toList(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.navigation", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisNavigationParams) { - return file == other.file && - _listEqual(regions, other.regions, (NavigationRegion a, NavigationRegion b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, regions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.occurrences params - * - * { - * "file": FilePath - * "occurrences": List - * } - */ -class AnalysisOccurrencesParams implements HasToJson { - /** - * The file in which the references occur. - */ - String file; - - /** - * The occurrences of references to elements within the file. - */ - List occurrences; - - AnalysisOccurrencesParams(this.file, this.occurrences); - - factory AnalysisOccurrencesParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - List occurrences; - if (json.containsKey("occurrences")) { - occurrences = jsonDecoder._decodeList(jsonPath + ".occurrences", json["occurrences"], (String jsonPath, Object json) => new Occurrences.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "occurrences"); - } - return new AnalysisOccurrencesParams(file, occurrences); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.occurrences params"); - } - } - - factory AnalysisOccurrencesParams.fromNotification(Notification notification) { - return new AnalysisOccurrencesParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["occurrences"] = occurrences.map((Occurrences value) => value.toJson()).toList(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.occurrences", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisOccurrencesParams) { - return file == other.file && - _listEqual(occurrences, other.occurrences, (Occurrences a, Occurrences b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, occurrences.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.outline params - * - * { - * "file": FilePath - * "outline": Outline - * } - */ -class AnalysisOutlineParams implements HasToJson { - /** - * The file with which the outline is associated. - */ - String file; - - /** - * The outline associated with the file. - */ - Outline outline; - - AnalysisOutlineParams(this.file, this.outline); - - factory AnalysisOutlineParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - Outline outline; - if (json.containsKey("outline")) { - outline = new Outline.fromJson(jsonDecoder, jsonPath + ".outline", json["outline"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "outline"); - } - return new AnalysisOutlineParams(file, outline); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.outline params"); - } - } - - factory AnalysisOutlineParams.fromNotification(Notification notification) { - return new AnalysisOutlineParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["outline"] = outline.toJson(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.outline", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisOutlineParams) { - return file == other.file && - outline == other.outline; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, outline.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * analysis.overrides params - * - * { - * "file": FilePath - * "overrides": List - * } - */ -class AnalysisOverridesParams implements HasToJson { - /** - * The file with which the overrides are associated. - */ - String file; - - /** - * The overrides associated with the file. - */ - List overrides; - - AnalysisOverridesParams(this.file, this.overrides); - - factory AnalysisOverridesParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - List overrides; - if (json.containsKey("overrides")) { - overrides = jsonDecoder._decodeList(jsonPath + ".overrides", json["overrides"], (String jsonPath, Object json) => new Override.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "overrides"); - } - return new AnalysisOverridesParams(file, overrides); - } else { - throw jsonDecoder.mismatch(jsonPath, "analysis.overrides params"); - } - } - - factory AnalysisOverridesParams.fromNotification(Notification notification) { - return new AnalysisOverridesParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["overrides"] = overrides.map((Override value) => value.toJson()).toList(); - return result; - } - - Notification toNotification() { - return new Notification("analysis.overrides", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisOverridesParams) { - return file == other.file && - _listEqual(overrides, other.overrides, (Override a, Override b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, overrides.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * completion.getSuggestions params - * - * { - * "file": FilePath - * "offset": int - * } - */ -class CompletionGetSuggestionsParams implements HasToJson { - /** - * The file containing the point at which suggestions are to be made. - */ - String file; - - /** - * The offset within the file at which suggestions are to be made. - */ - int offset; - - CompletionGetSuggestionsParams(this.file, this.offset); - - factory CompletionGetSuggestionsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - return new CompletionGetSuggestionsParams(file, offset); - } else { - throw jsonDecoder.mismatch(jsonPath, "completion.getSuggestions params"); - } - } - - factory CompletionGetSuggestionsParams.fromRequest(Request request) { - return new CompletionGetSuggestionsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - return result; - } - - Request toRequest(String id) { - return new Request(id, "completion.getSuggestions", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is CompletionGetSuggestionsParams) { - return file == other.file && - offset == other.offset; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * completion.getSuggestions result - * - * { - * "id": CompletionId - * } - */ -class CompletionGetSuggestionsResult implements HasToJson { - /** - * The identifier used to associate results with this completion request. - */ - String id; - - CompletionGetSuggestionsResult(this.id); - - factory CompletionGetSuggestionsResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - return new CompletionGetSuggestionsResult(id); - } else { - throw jsonDecoder.mismatch(jsonPath, "completion.getSuggestions result"); - } - } - - factory CompletionGetSuggestionsResult.fromResponse(Response response) { - return new CompletionGetSuggestionsResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is CompletionGetSuggestionsResult) { - return id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * completion.results params - * - * { - * "id": CompletionId - * "replacementOffset": int - * "replacementLength": int - * "results": List - * "isLast": bool - * } - */ -class CompletionResultsParams implements HasToJson { - /** - * The id associated with the completion. - */ - String id; - - /** - * The offset of the start of the text to be replaced. This will be different - * than the offset used to request the completion suggestions if there was a - * portion of an identifier before the original offset. In particular, the - * replacementOffset will be the offset of the beginning of said identifier. - */ - int replacementOffset; - - /** - * The length of the text to be replaced if the remainder of the identifier - * containing the cursor is to be replaced when the suggestion is applied - * (that is, the number of characters in the existing identifier). - */ - int replacementLength; - - /** - * The completion suggestions being reported. The notification contains all - * possible completions at the requested cursor position, even those that do - * not match the characters the user has already typed. This allows the - * client to respond to further keystrokes from the user without having to - * make additional requests. - */ - List results; - - /** - * True if this is that last set of results that will be returned for the - * indicated completion. - */ - bool isLast; - - CompletionResultsParams(this.id, this.replacementOffset, this.replacementLength, this.results, this.isLast); - - factory CompletionResultsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - int replacementOffset; - if (json.containsKey("replacementOffset")) { - replacementOffset = jsonDecoder._decodeInt(jsonPath + ".replacementOffset", json["replacementOffset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "replacementOffset"); - } - int replacementLength; - if (json.containsKey("replacementLength")) { - replacementLength = jsonDecoder._decodeInt(jsonPath + ".replacementLength", json["replacementLength"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "replacementLength"); - } - List results; - if (json.containsKey("results")) { - results = jsonDecoder._decodeList(jsonPath + ".results", json["results"], (String jsonPath, Object json) => new CompletionSuggestion.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "results"); - } - bool isLast; - if (json.containsKey("isLast")) { - isLast = jsonDecoder._decodeBool(jsonPath + ".isLast", json["isLast"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isLast"); - } - return new CompletionResultsParams(id, replacementOffset, replacementLength, results, isLast); - } else { - throw jsonDecoder.mismatch(jsonPath, "completion.results params"); - } - } - - factory CompletionResultsParams.fromNotification(Notification notification) { - return new CompletionResultsParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - result["replacementOffset"] = replacementOffset; - result["replacementLength"] = replacementLength; - result["results"] = results.map((CompletionSuggestion value) => value.toJson()).toList(); - result["isLast"] = isLast; - return result; - } - - Notification toNotification() { - return new Notification("completion.results", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is CompletionResultsParams) { - return id == other.id && - replacementOffset == other.replacementOffset && - replacementLength == other.replacementLength && - _listEqual(results, other.results, (CompletionSuggestion a, CompletionSuggestion b) => a == b) && - isLast == other.isLast; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - hash = _JenkinsSmiHash.combine(hash, replacementOffset.hashCode); - hash = _JenkinsSmiHash.combine(hash, replacementLength.hashCode); - hash = _JenkinsSmiHash.combine(hash, results.hashCode); - hash = _JenkinsSmiHash.combine(hash, isLast.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findElementReferences params - * - * { - * "file": FilePath - * "offset": int - * "includePotential": bool - * } - */ -class SearchFindElementReferencesParams implements HasToJson { - /** - * The file containing the declaration of or reference to the element used to - * define the search. - */ - String file; - - /** - * The offset within the file of the declaration of or reference to the - * element. - */ - int offset; - - /** - * True if potential matches are to be included in the results. - */ - bool includePotential; - - SearchFindElementReferencesParams(this.file, this.offset, this.includePotential); - - factory SearchFindElementReferencesParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - bool includePotential; - if (json.containsKey("includePotential")) { - includePotential = jsonDecoder._decodeBool(jsonPath + ".includePotential", json["includePotential"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "includePotential"); - } - return new SearchFindElementReferencesParams(file, offset, includePotential); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findElementReferences params"); - } - } - - factory SearchFindElementReferencesParams.fromRequest(Request request) { - return new SearchFindElementReferencesParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - result["includePotential"] = includePotential; - return result; - } - - Request toRequest(String id) { - return new Request(id, "search.findElementReferences", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindElementReferencesParams) { - return file == other.file && - offset == other.offset && - includePotential == other.includePotential; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, includePotential.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findElementReferences result - * - * { - * "id": optional SearchId - * "element": optional Element - * } - */ -class SearchFindElementReferencesResult implements HasToJson { - /** - * The identifier used to associate results with this search request. - * - * If no element was found at the given location, this field will be absent, - * and no results will be reported via the search.results notification. - */ - String id; - - /** - * The element referenced or defined at the given offset and whose references - * will be returned in the search results. - * - * If no element was found at the given location, this field will be absent. - */ - Element element; - - SearchFindElementReferencesResult({this.id, this.element}); - - factory SearchFindElementReferencesResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } - Element element; - if (json.containsKey("element")) { - element = new Element.fromJson(jsonDecoder, jsonPath + ".element", json["element"]); - } - return new SearchFindElementReferencesResult(id: id, element: element); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findElementReferences result"); - } - } - - factory SearchFindElementReferencesResult.fromResponse(Response response) { - return new SearchFindElementReferencesResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - if (id != null) { - result["id"] = id; - } - if (element != null) { - result["element"] = element.toJson(); - } - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindElementReferencesResult) { - return id == other.id && - element == other.element; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - hash = _JenkinsSmiHash.combine(hash, element.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findMemberDeclarations params - * - * { - * "name": String - * } - */ -class SearchFindMemberDeclarationsParams implements HasToJson { - /** - * The name of the declarations to be found. - */ - String name; - - SearchFindMemberDeclarationsParams(this.name); - - factory SearchFindMemberDeclarationsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - return new SearchFindMemberDeclarationsParams(name); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findMemberDeclarations params"); - } - } - - factory SearchFindMemberDeclarationsParams.fromRequest(Request request) { - return new SearchFindMemberDeclarationsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["name"] = name; - return result; - } - - Request toRequest(String id) { - return new Request(id, "search.findMemberDeclarations", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindMemberDeclarationsParams) { - return name == other.name; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findMemberDeclarations result - * - * { - * "id": SearchId - * } - */ -class SearchFindMemberDeclarationsResult implements HasToJson { - /** - * The identifier used to associate results with this search request. - */ - String id; - - SearchFindMemberDeclarationsResult(this.id); - - factory SearchFindMemberDeclarationsResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - return new SearchFindMemberDeclarationsResult(id); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findMemberDeclarations result"); - } - } - - factory SearchFindMemberDeclarationsResult.fromResponse(Response response) { - return new SearchFindMemberDeclarationsResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindMemberDeclarationsResult) { - return id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findMemberReferences params - * - * { - * "name": String - * } - */ -class SearchFindMemberReferencesParams implements HasToJson { - /** - * The name of the references to be found. - */ - String name; - - SearchFindMemberReferencesParams(this.name); - - factory SearchFindMemberReferencesParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - return new SearchFindMemberReferencesParams(name); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findMemberReferences params"); - } - } - - factory SearchFindMemberReferencesParams.fromRequest(Request request) { - return new SearchFindMemberReferencesParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["name"] = name; - return result; - } - - Request toRequest(String id) { - return new Request(id, "search.findMemberReferences", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindMemberReferencesParams) { - return name == other.name; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findMemberReferences result - * - * { - * "id": SearchId - * } - */ -class SearchFindMemberReferencesResult implements HasToJson { - /** - * The identifier used to associate results with this search request. - */ - String id; - - SearchFindMemberReferencesResult(this.id); - - factory SearchFindMemberReferencesResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - return new SearchFindMemberReferencesResult(id); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findMemberReferences result"); - } - } - - factory SearchFindMemberReferencesResult.fromResponse(Response response) { - return new SearchFindMemberReferencesResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindMemberReferencesResult) { - return id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findTopLevelDeclarations params - * - * { - * "pattern": String - * } - */ -class SearchFindTopLevelDeclarationsParams implements HasToJson { - /** - * The regular expression used to match the names of the declarations to be - * found. - */ - String pattern; - - SearchFindTopLevelDeclarationsParams(this.pattern); - - factory SearchFindTopLevelDeclarationsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String pattern; - if (json.containsKey("pattern")) { - pattern = jsonDecoder._decodeString(jsonPath + ".pattern", json["pattern"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "pattern"); - } - return new SearchFindTopLevelDeclarationsParams(pattern); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findTopLevelDeclarations params"); - } - } - - factory SearchFindTopLevelDeclarationsParams.fromRequest(Request request) { - return new SearchFindTopLevelDeclarationsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["pattern"] = pattern; - return result; - } - - Request toRequest(String id) { - return new Request(id, "search.findTopLevelDeclarations", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindTopLevelDeclarationsParams) { - return pattern == other.pattern; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, pattern.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.findTopLevelDeclarations result - * - * { - * "id": SearchId - * } - */ -class SearchFindTopLevelDeclarationsResult implements HasToJson { - /** - * The identifier used to associate results with this search request. - */ - String id; - - SearchFindTopLevelDeclarationsResult(this.id); - - factory SearchFindTopLevelDeclarationsResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - return new SearchFindTopLevelDeclarationsResult(id); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.findTopLevelDeclarations result"); - } - } - - factory SearchFindTopLevelDeclarationsResult.fromResponse(Response response) { - return new SearchFindTopLevelDeclarationsResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchFindTopLevelDeclarationsResult) { - return id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.getTypeHierarchy params - * - * { - * "file": FilePath - * "offset": int - * } - */ -class SearchGetTypeHierarchyParams implements HasToJson { - /** - * The file containing the declaration or reference to the type for which a - * hierarchy is being requested. - */ - String file; - - /** - * The offset of the name of the type within the file. - */ - int offset; - - SearchGetTypeHierarchyParams(this.file, this.offset); - - factory SearchGetTypeHierarchyParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - return new SearchGetTypeHierarchyParams(file, offset); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.getTypeHierarchy params"); - } - } - - factory SearchGetTypeHierarchyParams.fromRequest(Request request) { - return new SearchGetTypeHierarchyParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - return result; - } - - Request toRequest(String id) { - return new Request(id, "search.getTypeHierarchy", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchGetTypeHierarchyParams) { - return file == other.file && - offset == other.offset; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.getTypeHierarchy result - * - * { - * "hierarchyItems": optional List - * } - */ -class SearchGetTypeHierarchyResult implements HasToJson { - /** - * A list of the types in the requested hierarchy. The first element of the - * list is the item representing the type for which the hierarchy was - * requested. The index of other elements of the list is unspecified, but - * correspond to the integers used to reference supertype and subtype items - * within the items. - * - * This field will be absent if the code at the given file and offset does - * not represent a type, or if the file has not been sufficiently analyzed to - * allow a type hierarchy to be produced. - */ - List hierarchyItems; - - SearchGetTypeHierarchyResult({this.hierarchyItems}) { - if (hierarchyItems == null) { - hierarchyItems = []; - } - } - - factory SearchGetTypeHierarchyResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List hierarchyItems; - if (json.containsKey("hierarchyItems")) { - hierarchyItems = jsonDecoder._decodeList(jsonPath + ".hierarchyItems", json["hierarchyItems"], (String jsonPath, Object json) => new TypeHierarchyItem.fromJson(jsonDecoder, jsonPath, json)); - } else { - hierarchyItems = []; - } - return new SearchGetTypeHierarchyResult(hierarchyItems: hierarchyItems); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.getTypeHierarchy result"); - } - } - - factory SearchGetTypeHierarchyResult.fromResponse(Response response) { - return new SearchGetTypeHierarchyResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - if (hierarchyItems.isNotEmpty) { - result["hierarchyItems"] = hierarchyItems.map((TypeHierarchyItem value) => value.toJson()).toList(); - } - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchGetTypeHierarchyResult) { - return _listEqual(hierarchyItems, other.hierarchyItems, (TypeHierarchyItem a, TypeHierarchyItem b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, hierarchyItems.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * search.results params - * - * { - * "id": SearchId - * "results": List - * "isLast": bool - * } - */ -class SearchResultsParams implements HasToJson { - /** - * The id associated with the search. - */ - String id; - - /** - * The search results being reported. - */ - List results; - - /** - * True if this is that last set of results that will be returned for the - * indicated search. - */ - bool isLast; - - SearchResultsParams(this.id, this.results, this.isLast); - - factory SearchResultsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - List results; - if (json.containsKey("results")) { - results = jsonDecoder._decodeList(jsonPath + ".results", json["results"], (String jsonPath, Object json) => new SearchResult.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "results"); - } - bool isLast; - if (json.containsKey("isLast")) { - isLast = jsonDecoder._decodeBool(jsonPath + ".isLast", json["isLast"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isLast"); - } - return new SearchResultsParams(id, results, isLast); - } else { - throw jsonDecoder.mismatch(jsonPath, "search.results params"); - } - } - - factory SearchResultsParams.fromNotification(Notification notification) { - return new SearchResultsParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - result["results"] = results.map((SearchResult value) => value.toJson()).toList(); - result["isLast"] = isLast; - return result; - } - - Notification toNotification() { - return new Notification("search.results", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchResultsParams) { - return id == other.id && - _listEqual(results, other.results, (SearchResult a, SearchResult b) => a == b) && - isLast == other.isLast; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - hash = _JenkinsSmiHash.combine(hash, results.hashCode); - hash = _JenkinsSmiHash.combine(hash, isLast.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getAssists params - * - * { - * "file": FilePath - * "offset": int - * "length": int - * } - */ -class EditGetAssistsParams implements HasToJson { - /** - * The file containing the code for which assists are being requested. - */ - String file; - - /** - * The offset of the code for which assists are being requested. - */ - int offset; - - /** - * The length of the code for which assists are being requested. - */ - int length; - - EditGetAssistsParams(this.file, this.offset, this.length); - - factory EditGetAssistsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - return new EditGetAssistsParams(file, offset, length); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getAssists params"); - } - } - - factory EditGetAssistsParams.fromRequest(Request request) { - return new EditGetAssistsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - result["length"] = length; - return result; - } - - Request toRequest(String id) { - return new Request(id, "edit.getAssists", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetAssistsParams) { - return file == other.file && - offset == other.offset && - length == other.length; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getAssists result - * - * { - * "assists": List - * } - */ -class EditGetAssistsResult implements HasToJson { - /** - * The assists that are available at the given location. - */ - List assists; - - EditGetAssistsResult(this.assists); - - factory EditGetAssistsResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List assists; - if (json.containsKey("assists")) { - assists = jsonDecoder._decodeList(jsonPath + ".assists", json["assists"], (String jsonPath, Object json) => new SourceChange.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "assists"); - } - return new EditGetAssistsResult(assists); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getAssists result"); - } - } - - factory EditGetAssistsResult.fromResponse(Response response) { - return new EditGetAssistsResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["assists"] = assists.map((SourceChange value) => value.toJson()).toList(); - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetAssistsResult) { - return _listEqual(assists, other.assists, (SourceChange a, SourceChange b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, assists.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getAvailableRefactorings params - * - * { - * "file": FilePath - * "offset": int - * "length": int - * } - */ -class EditGetAvailableRefactoringsParams implements HasToJson { - /** - * The file containing the code on which the refactoring would be based. - */ - String file; - - /** - * The offset of the code on which the refactoring would be based. - */ - int offset; - - /** - * The length of the code on which the refactoring would be based. - */ - int length; - - EditGetAvailableRefactoringsParams(this.file, this.offset, this.length); - - factory EditGetAvailableRefactoringsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - return new EditGetAvailableRefactoringsParams(file, offset, length); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getAvailableRefactorings params"); - } - } - - factory EditGetAvailableRefactoringsParams.fromRequest(Request request) { - return new EditGetAvailableRefactoringsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - result["length"] = length; - return result; - } - - Request toRequest(String id) { - return new Request(id, "edit.getAvailableRefactorings", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetAvailableRefactoringsParams) { - return file == other.file && - offset == other.offset && - length == other.length; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getAvailableRefactorings result - * - * { - * "kinds": List - * } - */ -class EditGetAvailableRefactoringsResult implements HasToJson { - /** - * The kinds of refactorings that are valid for the given selection. - */ - List kinds; - - EditGetAvailableRefactoringsResult(this.kinds); - - factory EditGetAvailableRefactoringsResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List kinds; - if (json.containsKey("kinds")) { - kinds = jsonDecoder._decodeList(jsonPath + ".kinds", json["kinds"], (String jsonPath, Object json) => new RefactoringKind.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "kinds"); - } - return new EditGetAvailableRefactoringsResult(kinds); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getAvailableRefactorings result"); - } - } - - factory EditGetAvailableRefactoringsResult.fromResponse(Response response) { - return new EditGetAvailableRefactoringsResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["kinds"] = kinds.map((RefactoringKind value) => value.toJson()).toList(); - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetAvailableRefactoringsResult) { - return _listEqual(kinds, other.kinds, (RefactoringKind a, RefactoringKind b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, kinds.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getFixes params - * - * { - * "file": FilePath - * "offset": int - * } - */ -class EditGetFixesParams implements HasToJson { - /** - * The file containing the errors for which fixes are being requested. - */ - String file; - - /** - * The offset used to select the errors for which fixes will be returned. - */ - int offset; - - EditGetFixesParams(this.file, this.offset); - - factory EditGetFixesParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - return new EditGetFixesParams(file, offset); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getFixes params"); - } - } - - factory EditGetFixesParams.fromRequest(Request request) { - return new EditGetFixesParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - return result; - } - - Request toRequest(String id) { - return new Request(id, "edit.getFixes", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetFixesParams) { - return file == other.file && - offset == other.offset; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getFixes result - * - * { - * "fixes": List - * } - */ -class EditGetFixesResult implements HasToJson { - /** - * The fixes that are available for the errors at the given offset. - */ - List fixes; - - EditGetFixesResult(this.fixes); - - factory EditGetFixesResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List fixes; - if (json.containsKey("fixes")) { - fixes = jsonDecoder._decodeList(jsonPath + ".fixes", json["fixes"], (String jsonPath, Object json) => new AnalysisErrorFixes.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "fixes"); - } - return new EditGetFixesResult(fixes); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getFixes result"); - } - } - - factory EditGetFixesResult.fromResponse(Response response) { - return new EditGetFixesResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["fixes"] = fixes.map((AnalysisErrorFixes value) => value.toJson()).toList(); - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetFixesResult) { - return _listEqual(fixes, other.fixes, (AnalysisErrorFixes a, AnalysisErrorFixes b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, fixes.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getRefactoring params - * - * { - * "kind": RefactoringKind - * "file": FilePath - * "offset": int - * "length": int - * "validateOnly": bool - * "options": optional RefactoringOptions - * } - */ -class EditGetRefactoringParams implements HasToJson { - /** - * The kind of refactoring to be performed. - */ - RefactoringKind kind; - - /** - * The file containing the code involved in the refactoring. - */ - String file; - - /** - * The offset of the region involved in the refactoring. - */ - int offset; - - /** - * The length of the region involved in the refactoring. - */ - int length; - - /** - * True if the client is only requesting that the values of the options be - * validated and no change be generated. - */ - bool validateOnly; - - /** - * Data used to provide values provided by the user. The structure of the - * data is dependent on the kind of refactoring being performed. The data - * that is expected is documented in the section titled Refactorings, labeled - * as “Options”. This field can be omitted if the refactoring does not - * require any options or if the values of those options are not known. - */ - RefactoringOptions options; - - EditGetRefactoringParams(this.kind, this.file, this.offset, this.length, this.validateOnly, {this.options}); - - factory EditGetRefactoringParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - RefactoringKind kind; - if (json.containsKey("kind")) { - kind = new RefactoringKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - bool validateOnly; - if (json.containsKey("validateOnly")) { - validateOnly = jsonDecoder._decodeBool(jsonPath + ".validateOnly", json["validateOnly"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "validateOnly"); - } - RefactoringOptions options; - if (json.containsKey("options")) { - options = new RefactoringOptions.fromJson(jsonDecoder, jsonPath + ".options", json["options"], kind); - } - return new EditGetRefactoringParams(kind, file, offset, length, validateOnly, options: options); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getRefactoring params"); - } - } - - factory EditGetRefactoringParams.fromRequest(Request request) { - var params = new EditGetRefactoringParams.fromJson( - new RequestDecoder(request), "params", request._params); - REQUEST_ID_REFACTORING_KINDS[request.id] = params.kind; - return params; - } - - Map toJson() { - Map result = {}; - result["kind"] = kind.toJson(); - result["file"] = file; - result["offset"] = offset; - result["length"] = length; - result["validateOnly"] = validateOnly; - if (options != null) { - result["options"] = options.toJson(); - } - return result; - } - - Request toRequest(String id) { - return new Request(id, "edit.getRefactoring", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetRefactoringParams) { - return kind == other.kind && - file == other.file && - offset == other.offset && - length == other.length && - validateOnly == other.validateOnly && - options == other.options; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, validateOnly.hashCode); - hash = _JenkinsSmiHash.combine(hash, options.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * edit.getRefactoring result - * - * { - * "initialProblems": List - * "optionsProblems": List - * "finalProblems": List - * "feedback": optional RefactoringFeedback - * "change": optional SourceChange - * "potentialEdits": optional List - * } - */ -class EditGetRefactoringResult implements HasToJson { - /** - * The initial status of the refactoring, i.e. problems related to the - * context in which the refactoring is requested. The array will be empty if - * there are no known problems. - */ - List initialProblems; - - /** - * The options validation status, i.e. problems in the given options, such as - * light-weight validation of a new name, flags compatibility, etc. The array - * will be empty if there are no known problems. - */ - List optionsProblems; - - /** - * The final status of the refactoring, i.e. problems identified in the - * result of a full, potentially expensive validation and / or change - * creation. The array will be empty if there are no known problems. - */ - List finalProblems; - - /** - * Data used to provide feedback to the user. The structure of the data is - * dependent on the kind of refactoring being created. The data that is - * returned is documented in the section titled Refactorings, labeled as - * “Feedback”. - */ - RefactoringFeedback feedback; - - /** - * The changes that are to be applied to affect the refactoring. This field - * will be omitted if there are problems that prevent a set of changes from - * being computed, such as having no options specified for a refactoring that - * requires them, or if only validation was requested. - */ - SourceChange change; - - /** - * The ids of source edits that are not known to be valid. An edit is not - * known to be valid if there was insufficient type information for the - * server to be able to determine whether or not the code needs to be - * modified, such as when a member is being renamed and there is a reference - * to a member from an unknown type. This field will be omitted if the change - * field is omitted or if there are no potential edits for the refactoring. - */ - List potentialEdits; - - EditGetRefactoringResult(this.initialProblems, this.optionsProblems, this.finalProblems, {this.feedback, this.change, this.potentialEdits}) { - if (potentialEdits == null) { - potentialEdits = []; - } - } - - factory EditGetRefactoringResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List initialProblems; - if (json.containsKey("initialProblems")) { - initialProblems = jsonDecoder._decodeList(jsonPath + ".initialProblems", json["initialProblems"], (String jsonPath, Object json) => new RefactoringProblem.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "initialProblems"); - } - List optionsProblems; - if (json.containsKey("optionsProblems")) { - optionsProblems = jsonDecoder._decodeList(jsonPath + ".optionsProblems", json["optionsProblems"], (String jsonPath, Object json) => new RefactoringProblem.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "optionsProblems"); - } - List finalProblems; - if (json.containsKey("finalProblems")) { - finalProblems = jsonDecoder._decodeList(jsonPath + ".finalProblems", json["finalProblems"], (String jsonPath, Object json) => new RefactoringProblem.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "finalProblems"); - } - RefactoringFeedback feedback; - if (json.containsKey("feedback")) { - feedback = new RefactoringFeedback.fromJson(jsonDecoder, jsonPath + ".feedback", json["feedback"], json); - } - SourceChange change; - if (json.containsKey("change")) { - change = new SourceChange.fromJson(jsonDecoder, jsonPath + ".change", json["change"]); - } - List potentialEdits; - if (json.containsKey("potentialEdits")) { - potentialEdits = jsonDecoder._decodeList(jsonPath + ".potentialEdits", json["potentialEdits"], jsonDecoder._decodeString); - } else { - potentialEdits = []; - } - return new EditGetRefactoringResult(initialProblems, optionsProblems, finalProblems, feedback: feedback, change: change, potentialEdits: potentialEdits); - } else { - throw jsonDecoder.mismatch(jsonPath, "edit.getRefactoring result"); - } - } - - factory EditGetRefactoringResult.fromResponse(Response response) { - return new EditGetRefactoringResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["initialProblems"] = initialProblems.map((RefactoringProblem value) => value.toJson()).toList(); - result["optionsProblems"] = optionsProblems.map((RefactoringProblem value) => value.toJson()).toList(); - result["finalProblems"] = finalProblems.map((RefactoringProblem value) => value.toJson()).toList(); - if (feedback != null) { - result["feedback"] = feedback.toJson(); - } - if (change != null) { - result["change"] = change.toJson(); - } - if (potentialEdits.isNotEmpty) { - result["potentialEdits"] = potentialEdits; - } - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is EditGetRefactoringResult) { - return _listEqual(initialProblems, other.initialProblems, (RefactoringProblem a, RefactoringProblem b) => a == b) && - _listEqual(optionsProblems, other.optionsProblems, (RefactoringProblem a, RefactoringProblem b) => a == b) && - _listEqual(finalProblems, other.finalProblems, (RefactoringProblem a, RefactoringProblem b) => a == b) && - feedback == other.feedback && - change == other.change && - _listEqual(potentialEdits, other.potentialEdits, (String a, String b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, initialProblems.hashCode); - hash = _JenkinsSmiHash.combine(hash, optionsProblems.hashCode); - hash = _JenkinsSmiHash.combine(hash, finalProblems.hashCode); - hash = _JenkinsSmiHash.combine(hash, feedback.hashCode); - hash = _JenkinsSmiHash.combine(hash, change.hashCode); - hash = _JenkinsSmiHash.combine(hash, potentialEdits.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * execution.createContext params - * - * { - * "contextRoot": FilePath - * } - */ -class ExecutionCreateContextParams implements HasToJson { - /** - * The path of the Dart or HTML file that will be launched. - */ - String contextRoot; - - ExecutionCreateContextParams(this.contextRoot); - - factory ExecutionCreateContextParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String contextRoot; - if (json.containsKey("contextRoot")) { - contextRoot = jsonDecoder._decodeString(jsonPath + ".contextRoot", json["contextRoot"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "contextRoot"); - } - return new ExecutionCreateContextParams(contextRoot); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.createContext params"); - } - } - - factory ExecutionCreateContextParams.fromRequest(Request request) { - return new ExecutionCreateContextParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["contextRoot"] = contextRoot; - return result; - } - - Request toRequest(String id) { - return new Request(id, "execution.createContext", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionCreateContextParams) { - return contextRoot == other.contextRoot; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, contextRoot.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * execution.createContext result - * - * { - * "id": ExecutionContextId - * } - */ -class ExecutionCreateContextResult implements HasToJson { - /** - * The identifier used to refer to the execution context that was created. - */ - String id; - - ExecutionCreateContextResult(this.id); - - factory ExecutionCreateContextResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - return new ExecutionCreateContextResult(id); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.createContext result"); - } - } - - factory ExecutionCreateContextResult.fromResponse(Response response) { - return new ExecutionCreateContextResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionCreateContextResult) { - return id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * execution.deleteContext params - * - * { - * "id": ExecutionContextId - * } - */ -class ExecutionDeleteContextParams implements HasToJson { - /** - * The identifier of the execution context that is to be deleted. - */ - String id; - - ExecutionDeleteContextParams(this.id); - - factory ExecutionDeleteContextParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - return new ExecutionDeleteContextParams(id); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.deleteContext params"); - } - } - - factory ExecutionDeleteContextParams.fromRequest(Request request) { - return new ExecutionDeleteContextParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - return result; - } - - Request toRequest(String id) { - return new Request(id, "execution.deleteContext", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionDeleteContextParams) { - return id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * execution.deleteContext result - */ -class ExecutionDeleteContextResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is ExecutionDeleteContextResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 479954425; - } -} - -/** - * execution.mapUri params - * - * { - * "id": ExecutionContextId - * "file": optional FilePath - * "uri": optional String - * } - */ -class ExecutionMapUriParams implements HasToJson { - /** - * The identifier of the execution context in which the URI is to be mapped. - */ - String id; - - /** - * The path of the file to be mapped into a URI. - */ - String file; - - /** - * The URI to be mapped into a file path. - */ - String uri; - - ExecutionMapUriParams(this.id, {this.file, this.uri}); - - factory ExecutionMapUriParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "id"); - } - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } - String uri; - if (json.containsKey("uri")) { - uri = jsonDecoder._decodeString(jsonPath + ".uri", json["uri"]); - } - return new ExecutionMapUriParams(id, file: file, uri: uri); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.mapUri params"); - } - } - - factory ExecutionMapUriParams.fromRequest(Request request) { - return new ExecutionMapUriParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["id"] = id; - if (file != null) { - result["file"] = file; - } - if (uri != null) { - result["uri"] = uri; - } - return result; - } - - Request toRequest(String id) { - return new Request(id, "execution.mapUri", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionMapUriParams) { - return id == other.id && - file == other.file && - uri == other.uri; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, uri.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * execution.mapUri result - * - * { - * "file": optional FilePath - * "uri": optional String - * } - */ -class ExecutionMapUriResult implements HasToJson { - /** - * The file to which the URI was mapped. This field is omitted if the uri - * field was not given in the request. - */ - String file; - - /** - * The URI to which the file path was mapped. This field is omitted if the - * file field was not given in the request. - */ - String uri; - - ExecutionMapUriResult({this.file, this.uri}); - - factory ExecutionMapUriResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } - String uri; - if (json.containsKey("uri")) { - uri = jsonDecoder._decodeString(jsonPath + ".uri", json["uri"]); - } - return new ExecutionMapUriResult(file: file, uri: uri); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.mapUri result"); - } - } - - factory ExecutionMapUriResult.fromResponse(Response response) { - return new ExecutionMapUriResult.fromJson( - new ResponseDecoder(response), "result", response._result); - } - - Map toJson() { - Map result = {}; - if (file != null) { - result["file"] = file; - } - if (uri != null) { - result["uri"] = uri; - } - return result; - } - - Response toResponse(String id) { - return new Response(id, result: toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionMapUriResult) { - return file == other.file && - uri == other.uri; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, uri.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * execution.setSubscriptions params - * - * { - * "subscriptions": List - * } - */ -class ExecutionSetSubscriptionsParams implements HasToJson { - /** - * A list of the services being subscribed to. - */ - List subscriptions; - - ExecutionSetSubscriptionsParams(this.subscriptions); - - factory ExecutionSetSubscriptionsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List subscriptions; - if (json.containsKey("subscriptions")) { - subscriptions = jsonDecoder._decodeList(jsonPath + ".subscriptions", json["subscriptions"], (String jsonPath, Object json) => new ExecutionService.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "subscriptions"); - } - return new ExecutionSetSubscriptionsParams(subscriptions); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.setSubscriptions params"); - } - } - - factory ExecutionSetSubscriptionsParams.fromRequest(Request request) { - return new ExecutionSetSubscriptionsParams.fromJson( - new RequestDecoder(request), "params", request._params); - } - - Map toJson() { - Map result = {}; - result["subscriptions"] = subscriptions.map((ExecutionService value) => value.toJson()).toList(); - return result; - } - - Request toRequest(String id) { - return new Request(id, "execution.setSubscriptions", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionSetSubscriptionsParams) { - return _listEqual(subscriptions, other.subscriptions, (ExecutionService a, ExecutionService b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, subscriptions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * execution.setSubscriptions result - */ -class ExecutionSetSubscriptionsResult { - Response toResponse(String id) { - return new Response(id, result: null); - } - - @override - bool operator==(other) { - if (other is ExecutionSetSubscriptionsResult) { - return true; - } - return false; - } - - @override - int get hashCode { - return 287678780; - } -} - -/** - * execution.launchData params - * - * { - * "executables": List - * "dartToHtml": Map> - * "htmlToDart": Map> - * } - */ -class ExecutionLaunchDataParams implements HasToJson { - /** - * A list of the files that are executable. This list replaces any previous - * list provided. - */ - List executables; - - /** - * A mapping from the paths of Dart files that are referenced by HTML files - * to a list of the HTML files that reference the Dart files. - */ - Map> dartToHtml; - - /** - * A mapping from the paths of HTML files that reference Dart files to a list - * of the Dart files they reference. - */ - Map> htmlToDart; - - ExecutionLaunchDataParams(this.executables, this.dartToHtml, this.htmlToDart); - - factory ExecutionLaunchDataParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List executables; - if (json.containsKey("executables")) { - executables = jsonDecoder._decodeList(jsonPath + ".executables", json["executables"], (String jsonPath, Object json) => new ExecutableFile.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "executables"); - } - Map> dartToHtml; - if (json.containsKey("dartToHtml")) { - dartToHtml = jsonDecoder._decodeMap(jsonPath + ".dartToHtml", json["dartToHtml"], valueDecoder: (String jsonPath, Object json) => jsonDecoder._decodeList(jsonPath, json, jsonDecoder._decodeString)); - } else { - throw jsonDecoder.missingKey(jsonPath, "dartToHtml"); - } - Map> htmlToDart; - if (json.containsKey("htmlToDart")) { - htmlToDart = jsonDecoder._decodeMap(jsonPath + ".htmlToDart", json["htmlToDart"], valueDecoder: (String jsonPath, Object json) => jsonDecoder._decodeList(jsonPath, json, jsonDecoder._decodeString)); - } else { - throw jsonDecoder.missingKey(jsonPath, "htmlToDart"); - } - return new ExecutionLaunchDataParams(executables, dartToHtml, htmlToDart); - } else { - throw jsonDecoder.mismatch(jsonPath, "execution.launchData params"); - } - } - - factory ExecutionLaunchDataParams.fromNotification(Notification notification) { - return new ExecutionLaunchDataParams.fromJson( - new ResponseDecoder(null), "params", notification._params); - } - - Map toJson() { - Map result = {}; - result["executables"] = executables.map((ExecutableFile value) => value.toJson()).toList(); - result["dartToHtml"] = dartToHtml; - result["htmlToDart"] = htmlToDart; - return result; - } - - Notification toNotification() { - return new Notification("execution.launchData", toJson()); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutionLaunchDataParams) { - return _listEqual(executables, other.executables, (ExecutableFile a, ExecutableFile b) => a == b) && - _mapEqual(dartToHtml, other.dartToHtml, (List a, List b) => _listEqual(a, b, (String a, String b) => a == b)) && - _mapEqual(htmlToDart, other.htmlToDart, (List a, List b) => _listEqual(a, b, (String a, String b) => a == b)); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, executables.hashCode); - hash = _JenkinsSmiHash.combine(hash, dartToHtml.hashCode); - hash = _JenkinsSmiHash.combine(hash, htmlToDart.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * AddContentOverlay - * - * { - * "type": "add" - * "content": String - * } - */ -class AddContentOverlay implements HasToJson { - /** - * The new content of the file. - */ - String content; - - AddContentOverlay(this.content); - - factory AddContentOverlay.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - if (json["type"] != "add") { - throw jsonDecoder.mismatch(jsonPath, "equal " + "add"); - } - String content; - if (json.containsKey("content")) { - content = jsonDecoder._decodeString(jsonPath + ".content", json["content"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "content"); - } - return new AddContentOverlay(content); - } else { - throw jsonDecoder.mismatch(jsonPath, "AddContentOverlay"); - } - } - - Map toJson() { - Map result = {}; - result["type"] = "add"; - result["content"] = content; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AddContentOverlay) { - return content == other.content; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, 704418402); - hash = _JenkinsSmiHash.combine(hash, content.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * AnalysisError - * - * { - * "severity": AnalysisErrorSeverity - * "type": AnalysisErrorType - * "location": Location - * "message": String - * "correction": optional String - * } - */ -class AnalysisError implements HasToJson { - - /** - * The severity of the error. - */ - AnalysisErrorSeverity severity; - - /** - * The type of the error. - */ - AnalysisErrorType type; - - /** - * The location associated with the error. - */ - Location location; - - /** - * The message to be displayed for this error. The message should indicate - * what is wrong with the code and why it is wrong. - */ - String message; - - /** - * The correction message to be displayed for this error. The correction - * message should indicate how the user can fix the error. The field is - * omitted if there is no correction message associated with the error code. - */ - String correction; - - AnalysisError(this.severity, this.type, this.location, this.message, {this.correction}); - - factory AnalysisError.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - AnalysisErrorSeverity severity; - if (json.containsKey("severity")) { - severity = new AnalysisErrorSeverity.fromJson(jsonDecoder, jsonPath + ".severity", json["severity"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "severity"); - } - AnalysisErrorType type; - if (json.containsKey("type")) { - type = new AnalysisErrorType.fromJson(jsonDecoder, jsonPath + ".type", json["type"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "type"); - } - Location location; - if (json.containsKey("location")) { - location = new Location.fromJson(jsonDecoder, jsonPath + ".location", json["location"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "location"); - } - String message; - if (json.containsKey("message")) { - message = jsonDecoder._decodeString(jsonPath + ".message", json["message"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "message"); - } - String correction; - if (json.containsKey("correction")) { - correction = jsonDecoder._decodeString(jsonPath + ".correction", json["correction"]); - } - return new AnalysisError(severity, type, location, message, correction: correction); - } else { - throw jsonDecoder.mismatch(jsonPath, "AnalysisError"); - } - } - - Map toJson() { - Map result = {}; - result["severity"] = severity.toJson(); - result["type"] = type.toJson(); - result["location"] = location.toJson(); - result["message"] = message; - if (correction != null) { - result["correction"] = correction; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisError) { - return severity == other.severity && - type == other.type && - location == other.location && - message == other.message && - correction == other.correction; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, severity.hashCode); - hash = _JenkinsSmiHash.combine(hash, type.hashCode); - hash = _JenkinsSmiHash.combine(hash, location.hashCode); - hash = _JenkinsSmiHash.combine(hash, message.hashCode); - hash = _JenkinsSmiHash.combine(hash, correction.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * AnalysisErrorFixes - * - * { - * "error": AnalysisError - * "fixes": List - * } - */ -class AnalysisErrorFixes implements HasToJson { - /** - * The error with which the fixes are associated. - */ - AnalysisError error; - - /** - * The fixes associated with the error. - */ - List fixes; - - AnalysisErrorFixes(this.error, {this.fixes}) { - if (fixes == null) { - fixes = []; - } - } - - factory AnalysisErrorFixes.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - AnalysisError error; - if (json.containsKey("error")) { - error = new AnalysisError.fromJson(jsonDecoder, jsonPath + ".error", json["error"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "error"); - } - List fixes; - if (json.containsKey("fixes")) { - fixes = jsonDecoder._decodeList(jsonPath + ".fixes", json["fixes"], (String jsonPath, Object json) => new SourceChange.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "fixes"); - } - return new AnalysisErrorFixes(error, fixes: fixes); - } else { - throw jsonDecoder.mismatch(jsonPath, "AnalysisErrorFixes"); - } - } - - Map toJson() { - Map result = {}; - result["error"] = error.toJson(); - result["fixes"] = fixes.map((SourceChange value) => value.toJson()).toList(); - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisErrorFixes) { - return error == other.error && - _listEqual(fixes, other.fixes, (SourceChange a, SourceChange b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, error.hashCode); - hash = _JenkinsSmiHash.combine(hash, fixes.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * AnalysisErrorSeverity - * - * enum { - * INFO - * WARNING - * ERROR - * } - */ -class AnalysisErrorSeverity { - static const INFO = const AnalysisErrorSeverity._("INFO"); - - static const WARNING = const AnalysisErrorSeverity._("WARNING"); - - static const ERROR = const AnalysisErrorSeverity._("ERROR"); - - final String name; - - const AnalysisErrorSeverity._(this.name); - - factory AnalysisErrorSeverity(String name) { - switch (name) { - case "INFO": - return INFO; - case "WARNING": - return WARNING; - case "ERROR": - return ERROR; - } - throw new Exception('Illegal enum value: $name'); - } - - factory AnalysisErrorSeverity.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new AnalysisErrorSeverity(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "AnalysisErrorSeverity"); - } - - @override - String toString() => "AnalysisErrorSeverity.$name"; - - String toJson() => name; -} - -/** - * AnalysisErrorType - * - * enum { - * ANGULAR - * COMPILE_TIME_ERROR - * HINT - * POLYMER - * STATIC_TYPE_WARNING - * STATIC_WARNING - * SYNTACTIC_ERROR - * TODO - * } - */ -class AnalysisErrorType { - static const ANGULAR = const AnalysisErrorType._("ANGULAR"); - - static const COMPILE_TIME_ERROR = const AnalysisErrorType._("COMPILE_TIME_ERROR"); - - static const HINT = const AnalysisErrorType._("HINT"); - - static const POLYMER = const AnalysisErrorType._("POLYMER"); - - static const STATIC_TYPE_WARNING = const AnalysisErrorType._("STATIC_TYPE_WARNING"); - - static const STATIC_WARNING = const AnalysisErrorType._("STATIC_WARNING"); - - static const SYNTACTIC_ERROR = const AnalysisErrorType._("SYNTACTIC_ERROR"); - - static const TODO = const AnalysisErrorType._("TODO"); - - final String name; - - const AnalysisErrorType._(this.name); - - factory AnalysisErrorType(String name) { - switch (name) { - case "ANGULAR": - return ANGULAR; - case "COMPILE_TIME_ERROR": - return COMPILE_TIME_ERROR; - case "HINT": - return HINT; - case "POLYMER": - return POLYMER; - case "STATIC_TYPE_WARNING": - return STATIC_TYPE_WARNING; - case "STATIC_WARNING": - return STATIC_WARNING; - case "SYNTACTIC_ERROR": - return SYNTACTIC_ERROR; - case "TODO": - return TODO; - } - throw new Exception('Illegal enum value: $name'); - } - - factory AnalysisErrorType.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new AnalysisErrorType(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "AnalysisErrorType"); - } - - @override - String toString() => "AnalysisErrorType.$name"; - - String toJson() => name; -} - -/** - * AnalysisOptions - * - * { - * "enableAsync": optional bool - * "enableDeferredLoading": optional bool - * "enableEnums": optional bool - * "generateDart2jsHints": optional bool - * "generateHints": optional bool - * } - */ -class AnalysisOptions implements HasToJson { - /** - * True if the client wants to enable support for the proposed async feature. - */ - bool enableAsync; - - /** - * True if the client wants to enable support for the proposed deferred - * loading feature. - */ - bool enableDeferredLoading; - - /** - * True if the client wants to enable support for the proposed enum feature. - */ - bool enableEnums; - - /** - * True if hints that are specific to dart2js should be generated. This - * option is ignored if generateHints is false. - */ - bool generateDart2jsHints; - - /** - * True is hints should be generated as part of generating errors and - * warnings. - */ - bool generateHints; - - AnalysisOptions({this.enableAsync, this.enableDeferredLoading, this.enableEnums, this.generateDart2jsHints, this.generateHints}); - - factory AnalysisOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - bool enableAsync; - if (json.containsKey("enableAsync")) { - enableAsync = jsonDecoder._decodeBool(jsonPath + ".enableAsync", json["enableAsync"]); - } - bool enableDeferredLoading; - if (json.containsKey("enableDeferredLoading")) { - enableDeferredLoading = jsonDecoder._decodeBool(jsonPath + ".enableDeferredLoading", json["enableDeferredLoading"]); - } - bool enableEnums; - if (json.containsKey("enableEnums")) { - enableEnums = jsonDecoder._decodeBool(jsonPath + ".enableEnums", json["enableEnums"]); - } - bool generateDart2jsHints; - if (json.containsKey("generateDart2jsHints")) { - generateDart2jsHints = jsonDecoder._decodeBool(jsonPath + ".generateDart2jsHints", json["generateDart2jsHints"]); - } - bool generateHints; - if (json.containsKey("generateHints")) { - generateHints = jsonDecoder._decodeBool(jsonPath + ".generateHints", json["generateHints"]); - } - return new AnalysisOptions(enableAsync: enableAsync, enableDeferredLoading: enableDeferredLoading, enableEnums: enableEnums, generateDart2jsHints: generateDart2jsHints, generateHints: generateHints); - } else { - throw jsonDecoder.mismatch(jsonPath, "AnalysisOptions"); - } - } - - Map toJson() { - Map result = {}; - if (enableAsync != null) { - result["enableAsync"] = enableAsync; - } - if (enableDeferredLoading != null) { - result["enableDeferredLoading"] = enableDeferredLoading; - } - if (enableEnums != null) { - result["enableEnums"] = enableEnums; - } - if (generateDart2jsHints != null) { - result["generateDart2jsHints"] = generateDart2jsHints; - } - if (generateHints != null) { - result["generateHints"] = generateHints; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisOptions) { - return enableAsync == other.enableAsync && - enableDeferredLoading == other.enableDeferredLoading && - enableEnums == other.enableEnums && - generateDart2jsHints == other.generateDart2jsHints && - generateHints == other.generateHints; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, enableAsync.hashCode); - hash = _JenkinsSmiHash.combine(hash, enableDeferredLoading.hashCode); - hash = _JenkinsSmiHash.combine(hash, enableEnums.hashCode); - hash = _JenkinsSmiHash.combine(hash, generateDart2jsHints.hashCode); - hash = _JenkinsSmiHash.combine(hash, generateHints.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * AnalysisService - * - * enum { - * FOLDING - * HIGHLIGHTS - * NAVIGATION - * OCCURRENCES - * OUTLINE - * OVERRIDES - * } - */ -class AnalysisService { - static const FOLDING = const AnalysisService._("FOLDING"); - - static const HIGHLIGHTS = const AnalysisService._("HIGHLIGHTS"); - - static const NAVIGATION = const AnalysisService._("NAVIGATION"); - - static const OCCURRENCES = const AnalysisService._("OCCURRENCES"); - - static const OUTLINE = const AnalysisService._("OUTLINE"); - - static const OVERRIDES = const AnalysisService._("OVERRIDES"); - - final String name; - - const AnalysisService._(this.name); - - factory AnalysisService(String name) { - switch (name) { - case "FOLDING": - return FOLDING; - case "HIGHLIGHTS": - return HIGHLIGHTS; - case "NAVIGATION": - return NAVIGATION; - case "OCCURRENCES": - return OCCURRENCES; - case "OUTLINE": - return OUTLINE; - case "OVERRIDES": - return OVERRIDES; - } - throw new Exception('Illegal enum value: $name'); - } - - factory AnalysisService.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new AnalysisService(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "AnalysisService"); - } - - @override - String toString() => "AnalysisService.$name"; - - String toJson() => name; -} - -/** - * AnalysisStatus - * - * { - * "isAnalyzing": bool - * "analysisTarget": optional String - * } - */ -class AnalysisStatus implements HasToJson { - /** - * True if analysis is currently being performed. - */ - bool isAnalyzing; - - /** - * The name of the current target of analysis. This field is omitted if - * analyzing is false. - */ - String analysisTarget; - - AnalysisStatus(this.isAnalyzing, {this.analysisTarget}); - - factory AnalysisStatus.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - bool isAnalyzing; - if (json.containsKey("isAnalyzing")) { - isAnalyzing = jsonDecoder._decodeBool(jsonPath + ".isAnalyzing", json["isAnalyzing"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isAnalyzing"); - } - String analysisTarget; - if (json.containsKey("analysisTarget")) { - analysisTarget = jsonDecoder._decodeString(jsonPath + ".analysisTarget", json["analysisTarget"]); - } - return new AnalysisStatus(isAnalyzing, analysisTarget: analysisTarget); - } else { - throw jsonDecoder.mismatch(jsonPath, "AnalysisStatus"); - } - } - - Map toJson() { - Map result = {}; - result["isAnalyzing"] = isAnalyzing; - if (analysisTarget != null) { - result["analysisTarget"] = analysisTarget; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is AnalysisStatus) { - return isAnalyzing == other.isAnalyzing && - analysisTarget == other.analysisTarget; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, isAnalyzing.hashCode); - hash = _JenkinsSmiHash.combine(hash, analysisTarget.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * ChangeContentOverlay - * - * { - * "type": "change" - * "edits": List - * } - */ -class ChangeContentOverlay implements HasToJson { - /** - * The edits to be applied to the file. - */ - List edits; - - ChangeContentOverlay(this.edits); - - factory ChangeContentOverlay.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - if (json["type"] != "change") { - throw jsonDecoder.mismatch(jsonPath, "equal " + "change"); - } - List edits; - if (json.containsKey("edits")) { - edits = jsonDecoder._decodeList(jsonPath + ".edits", json["edits"], (String jsonPath, Object json) => new SourceEdit.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "edits"); - } - return new ChangeContentOverlay(edits); - } else { - throw jsonDecoder.mismatch(jsonPath, "ChangeContentOverlay"); - } - } - - Map toJson() { - Map result = {}; - result["type"] = "change"; - result["edits"] = edits.map((SourceEdit value) => value.toJson()).toList(); - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ChangeContentOverlay) { - return _listEqual(edits, other.edits, (SourceEdit a, SourceEdit b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, 873118866); - hash = _JenkinsSmiHash.combine(hash, edits.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * CompletionRelevance - * - * enum { - * LOW - * DEFAULT - * HIGH - * } - */ -class CompletionRelevance { - static const LOW = const CompletionRelevance._("LOW"); - - static const DEFAULT = const CompletionRelevance._("DEFAULT"); - - static const HIGH = const CompletionRelevance._("HIGH"); - - final String name; - - const CompletionRelevance._(this.name); - - factory CompletionRelevance(String name) { - switch (name) { - case "LOW": - return LOW; - case "DEFAULT": - return DEFAULT; - case "HIGH": - return HIGH; - } - throw new Exception('Illegal enum value: $name'); - } - - factory CompletionRelevance.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new CompletionRelevance(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "CompletionRelevance"); - } - - @override - String toString() => "CompletionRelevance.$name"; - - String toJson() => name; -} - -/** - * CompletionSuggestion - * - * { - * "kind": CompletionSuggestionKind - * "relevance": CompletionRelevance - * "completion": String - * "selectionOffset": int - * "selectionLength": int - * "isDeprecated": bool - * "isPotential": bool - * "docSummary": optional String - * "docComplete": optional String - * "declaringType": optional String - * "element": optional Element - * "returnType": optional String - * "parameterNames": optional List - * "parameterTypes": optional List - * "requiredParameterCount": optional int - * "positionalParameterCount": optional int - * "parameterName": optional String - * "parameterType": optional String - * } - */ -class CompletionSuggestion implements HasToJson { - /** - * The kind of element being suggested. - */ - CompletionSuggestionKind kind; - - /** - * The relevance of this completion suggestion. - */ - CompletionRelevance relevance; - - /** - * The identifier to be inserted if the suggestion is selected. If the - * suggestion is for a method or function, the client might want to - * additionally insert a template for the parameters. The information - * required in order to do so is contained in other fields. - */ - String completion; - - /** - * The offset, relative to the beginning of the completion, of where the - * selection should be placed after insertion. - */ - int selectionOffset; - - /** - * The number of characters that should be selected after insertion. - */ - int selectionLength; - - /** - * True if the suggested element is deprecated. - */ - bool isDeprecated; - - /** - * True if the element is not known to be valid for the target. This happens - * if the type of the target is dynamic. - */ - bool isPotential; - - /** - * An abbreviated version of the Dartdoc associated with the element being - * suggested, This field is omitted if there is no Dartdoc associated with - * the element. - */ - String docSummary; - - /** - * The Dartdoc associated with the element being suggested, This field is - * omitted if there is no Dartdoc associated with the element. - */ - String docComplete; - - /** - * The class that declares the element being suggested. This field is omitted - * if the suggested element is not a member of a class. - */ - String declaringType; - - /** - * Information about the element reference being suggested. - */ - Element element; - - /** - * The return type of the getter, function or method being suggested. This - * field is omitted if the suggested element is not a getter, function or - * method. - */ - String returnType; - - /** - * The names of the parameters of the function or method being suggested. - * This field is omitted if the suggested element is not a setter, function - * or method. - */ - List parameterNames; - - /** - * The types of the parameters of the function or method being suggested. - * This field is omitted if the parameterNames field is omitted. - */ - List parameterTypes; - - /** - * The number of required parameters for the function or method being - * suggested. This field is omitted if the parameterNames field is omitted. - */ - int requiredParameterCount; - - /** - * The number of positional parameters for the function or method being - * suggested. This field is omitted if the parameterNames field is omitted. - */ - int positionalParameterCount; - - /** - * The name of the optional parameter being suggested. This field is omitted - * if the suggestion is not the addition of an optional argument within an - * argument list. - */ - String parameterName; - - /** - * The type of the options parameter being suggested. This field is omitted - * if the parameterName field is omitted. - */ - String parameterType; - - CompletionSuggestion(this.kind, this.relevance, this.completion, this.selectionOffset, this.selectionLength, this.isDeprecated, this.isPotential, {this.docSummary, this.docComplete, this.declaringType, this.element, this.returnType, this.parameterNames, this.parameterTypes, this.requiredParameterCount, this.positionalParameterCount, this.parameterName, this.parameterType}) { - if (parameterNames == null) { - parameterNames = []; - } - if (parameterTypes == null) { - parameterTypes = []; - } - } - - factory CompletionSuggestion.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - CompletionSuggestionKind kind; - if (json.containsKey("kind")) { - kind = new CompletionSuggestionKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - CompletionRelevance relevance; - if (json.containsKey("relevance")) { - relevance = new CompletionRelevance.fromJson(jsonDecoder, jsonPath + ".relevance", json["relevance"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "relevance"); - } - String completion; - if (json.containsKey("completion")) { - completion = jsonDecoder._decodeString(jsonPath + ".completion", json["completion"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "completion"); - } - int selectionOffset; - if (json.containsKey("selectionOffset")) { - selectionOffset = jsonDecoder._decodeInt(jsonPath + ".selectionOffset", json["selectionOffset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "selectionOffset"); - } - int selectionLength; - if (json.containsKey("selectionLength")) { - selectionLength = jsonDecoder._decodeInt(jsonPath + ".selectionLength", json["selectionLength"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "selectionLength"); - } - bool isDeprecated; - if (json.containsKey("isDeprecated")) { - isDeprecated = jsonDecoder._decodeBool(jsonPath + ".isDeprecated", json["isDeprecated"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isDeprecated"); - } - bool isPotential; - if (json.containsKey("isPotential")) { - isPotential = jsonDecoder._decodeBool(jsonPath + ".isPotential", json["isPotential"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isPotential"); - } - String docSummary; - if (json.containsKey("docSummary")) { - docSummary = jsonDecoder._decodeString(jsonPath + ".docSummary", json["docSummary"]); - } - String docComplete; - if (json.containsKey("docComplete")) { - docComplete = jsonDecoder._decodeString(jsonPath + ".docComplete", json["docComplete"]); - } - String declaringType; - if (json.containsKey("declaringType")) { - declaringType = jsonDecoder._decodeString(jsonPath + ".declaringType", json["declaringType"]); - } - Element element; - if (json.containsKey("element")) { - element = new Element.fromJson(jsonDecoder, jsonPath + ".element", json["element"]); - } - String returnType; - if (json.containsKey("returnType")) { - returnType = jsonDecoder._decodeString(jsonPath + ".returnType", json["returnType"]); - } - List parameterNames; - if (json.containsKey("parameterNames")) { - parameterNames = jsonDecoder._decodeList(jsonPath + ".parameterNames", json["parameterNames"], jsonDecoder._decodeString); - } else { - parameterNames = []; - } - List parameterTypes; - if (json.containsKey("parameterTypes")) { - parameterTypes = jsonDecoder._decodeList(jsonPath + ".parameterTypes", json["parameterTypes"], jsonDecoder._decodeString); - } else { - parameterTypes = []; - } - int requiredParameterCount; - if (json.containsKey("requiredParameterCount")) { - requiredParameterCount = jsonDecoder._decodeInt(jsonPath + ".requiredParameterCount", json["requiredParameterCount"]); - } - int positionalParameterCount; - if (json.containsKey("positionalParameterCount")) { - positionalParameterCount = jsonDecoder._decodeInt(jsonPath + ".positionalParameterCount", json["positionalParameterCount"]); - } - String parameterName; - if (json.containsKey("parameterName")) { - parameterName = jsonDecoder._decodeString(jsonPath + ".parameterName", json["parameterName"]); - } - String parameterType; - if (json.containsKey("parameterType")) { - parameterType = jsonDecoder._decodeString(jsonPath + ".parameterType", json["parameterType"]); - } - return new CompletionSuggestion(kind, relevance, completion, selectionOffset, selectionLength, isDeprecated, isPotential, docSummary: docSummary, docComplete: docComplete, declaringType: declaringType, element: element, returnType: returnType, parameterNames: parameterNames, parameterTypes: parameterTypes, requiredParameterCount: requiredParameterCount, positionalParameterCount: positionalParameterCount, parameterName: parameterName, parameterType: parameterType); - } else { - throw jsonDecoder.mismatch(jsonPath, "CompletionSuggestion"); - } - } - - Map toJson() { - Map result = {}; - result["kind"] = kind.toJson(); - result["relevance"] = relevance.toJson(); - result["completion"] = completion; - result["selectionOffset"] = selectionOffset; - result["selectionLength"] = selectionLength; - result["isDeprecated"] = isDeprecated; - result["isPotential"] = isPotential; - if (docSummary != null) { - result["docSummary"] = docSummary; - } - if (docComplete != null) { - result["docComplete"] = docComplete; - } - if (declaringType != null) { - result["declaringType"] = declaringType; - } - if (element != null) { - result["element"] = element.toJson(); - } - if (returnType != null) { - result["returnType"] = returnType; - } - if (parameterNames.isNotEmpty) { - result["parameterNames"] = parameterNames; - } - if (parameterTypes.isNotEmpty) { - result["parameterTypes"] = parameterTypes; - } - if (requiredParameterCount != null) { - result["requiredParameterCount"] = requiredParameterCount; - } - if (positionalParameterCount != null) { - result["positionalParameterCount"] = positionalParameterCount; - } - if (parameterName != null) { - result["parameterName"] = parameterName; - } - if (parameterType != null) { - result["parameterType"] = parameterType; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is CompletionSuggestion) { - return kind == other.kind && - relevance == other.relevance && - completion == other.completion && - selectionOffset == other.selectionOffset && - selectionLength == other.selectionLength && - isDeprecated == other.isDeprecated && - isPotential == other.isPotential && - docSummary == other.docSummary && - docComplete == other.docComplete && - declaringType == other.declaringType && - element == other.element && - returnType == other.returnType && - _listEqual(parameterNames, other.parameterNames, (String a, String b) => a == b) && - _listEqual(parameterTypes, other.parameterTypes, (String a, String b) => a == b) && - requiredParameterCount == other.requiredParameterCount && - positionalParameterCount == other.positionalParameterCount && - parameterName == other.parameterName && - parameterType == other.parameterType; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - hash = _JenkinsSmiHash.combine(hash, relevance.hashCode); - hash = _JenkinsSmiHash.combine(hash, completion.hashCode); - hash = _JenkinsSmiHash.combine(hash, selectionOffset.hashCode); - hash = _JenkinsSmiHash.combine(hash, selectionLength.hashCode); - hash = _JenkinsSmiHash.combine(hash, isDeprecated.hashCode); - hash = _JenkinsSmiHash.combine(hash, isPotential.hashCode); - hash = _JenkinsSmiHash.combine(hash, docSummary.hashCode); - hash = _JenkinsSmiHash.combine(hash, docComplete.hashCode); - hash = _JenkinsSmiHash.combine(hash, declaringType.hashCode); - hash = _JenkinsSmiHash.combine(hash, element.hashCode); - hash = _JenkinsSmiHash.combine(hash, returnType.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameterNames.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameterTypes.hashCode); - hash = _JenkinsSmiHash.combine(hash, requiredParameterCount.hashCode); - hash = _JenkinsSmiHash.combine(hash, positionalParameterCount.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameterName.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameterType.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * CompletionSuggestionKind - * - * enum { - * ARGUMENT_LIST - * CLASS - * CLASS_ALIAS - * CONSTRUCTOR - * FIELD - * FUNCTION - * FUNCTION_TYPE_ALIAS - * GETTER - * IMPORT - * KEYWORD - * LABEL - * LIBRARY_PREFIX - * LOCAL_VARIABLE - * METHOD - * METHOD_NAME - * NAMED_ARGUMENT - * OPTIONAL_ARGUMENT - * PARAMETER - * SETTER - * TOP_LEVEL_VARIABLE - * TYPE_PARAMETER - * } - */ -class CompletionSuggestionKind { - static const ARGUMENT_LIST = const CompletionSuggestionKind._("ARGUMENT_LIST"); - - static const CLASS = const CompletionSuggestionKind._("CLASS"); - - static const CLASS_ALIAS = const CompletionSuggestionKind._("CLASS_ALIAS"); - - static const CONSTRUCTOR = const CompletionSuggestionKind._("CONSTRUCTOR"); - - static const FIELD = const CompletionSuggestionKind._("FIELD"); - - static const FUNCTION = const CompletionSuggestionKind._("FUNCTION"); - - static const FUNCTION_TYPE_ALIAS = const CompletionSuggestionKind._("FUNCTION_TYPE_ALIAS"); - - static const GETTER = const CompletionSuggestionKind._("GETTER"); - - static const IMPORT = const CompletionSuggestionKind._("IMPORT"); - - static const KEYWORD = const CompletionSuggestionKind._("KEYWORD"); - - static const LABEL = const CompletionSuggestionKind._("LABEL"); - - static const LIBRARY_PREFIX = const CompletionSuggestionKind._("LIBRARY_PREFIX"); - - static const LOCAL_VARIABLE = const CompletionSuggestionKind._("LOCAL_VARIABLE"); - - static const METHOD = const CompletionSuggestionKind._("METHOD"); - - static const METHOD_NAME = const CompletionSuggestionKind._("METHOD_NAME"); - - static const NAMED_ARGUMENT = const CompletionSuggestionKind._("NAMED_ARGUMENT"); - - static const OPTIONAL_ARGUMENT = const CompletionSuggestionKind._("OPTIONAL_ARGUMENT"); - - static const PARAMETER = const CompletionSuggestionKind._("PARAMETER"); - - static const SETTER = const CompletionSuggestionKind._("SETTER"); - - static const TOP_LEVEL_VARIABLE = const CompletionSuggestionKind._("TOP_LEVEL_VARIABLE"); - - static const TYPE_PARAMETER = const CompletionSuggestionKind._("TYPE_PARAMETER"); - - final String name; - - const CompletionSuggestionKind._(this.name); - - factory CompletionSuggestionKind(String name) { - switch (name) { - case "ARGUMENT_LIST": - return ARGUMENT_LIST; - case "CLASS": - return CLASS; - case "CLASS_ALIAS": - return CLASS_ALIAS; - case "CONSTRUCTOR": - return CONSTRUCTOR; - case "FIELD": - return FIELD; - case "FUNCTION": - return FUNCTION; - case "FUNCTION_TYPE_ALIAS": - return FUNCTION_TYPE_ALIAS; - case "GETTER": - return GETTER; - case "IMPORT": - return IMPORT; - case "KEYWORD": - return KEYWORD; - case "LABEL": - return LABEL; - case "LIBRARY_PREFIX": - return LIBRARY_PREFIX; - case "LOCAL_VARIABLE": - return LOCAL_VARIABLE; - case "METHOD": - return METHOD; - case "METHOD_NAME": - return METHOD_NAME; - case "NAMED_ARGUMENT": - return NAMED_ARGUMENT; - case "OPTIONAL_ARGUMENT": - return OPTIONAL_ARGUMENT; - case "PARAMETER": - return PARAMETER; - case "SETTER": - return SETTER; - case "TOP_LEVEL_VARIABLE": - return TOP_LEVEL_VARIABLE; - case "TYPE_PARAMETER": - return TYPE_PARAMETER; - } - throw new Exception('Illegal enum value: $name'); - } - - factory CompletionSuggestionKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new CompletionSuggestionKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "CompletionSuggestionKind"); - } - - @override - String toString() => "CompletionSuggestionKind.$name"; - - String toJson() => name; -} - -/** - * Element - * - * { - * "kind": ElementKind - * "name": String - * "location": optional Location - * "flags": int - * "parameters": optional String - * "returnType": optional String - * } - */ -class Element implements HasToJson { - static const int FLAG_ABSTRACT = 0x01; - static const int FLAG_CONST = 0x02; - static const int FLAG_FINAL = 0x04; - static const int FLAG_STATIC = 0x08; - static const int FLAG_PRIVATE = 0x10; - static const int FLAG_DEPRECATED = 0x20; - - static int makeFlags({isAbstract: false, isConst: false, isFinal: false, isStatic: false, isPrivate: false, isDeprecated: false}) { - int flags = 0; - if (isAbstract) flags |= FLAG_ABSTRACT; - if (isConst) flags |= FLAG_CONST; - if (isFinal) flags |= FLAG_FINAL; - if (isStatic) flags |= FLAG_STATIC; - if (isPrivate) flags |= FLAG_PRIVATE; - if (isDeprecated) flags |= FLAG_DEPRECATED; - return flags; - } - - /** - * The kind of the element. - */ - ElementKind kind; - - /** - * The name of the element. This is typically used as the label in the - * outline. - */ - String name; - - /** - * The location of the name in the declaration of the element. - */ - Location location; - - /** - * A bit-map containing the following flags: - * - * - 0x01 - set if the element is explicitly or implicitly abstract - * - 0x02 - set if the element was declared to be ‘const’ - * - 0x04 - set if the element was declared to be ‘final’ - * - 0x08 - set if the element is a static member of a class or is a - * top-level function or field - * - 0x10 - set if the element is private - * - 0x20 - set if the element is deprecated - */ - int flags; - - /** - * The parameter list for the element. If the element is not a method or - * function this field will not be defined. If the element has zero - * parameters, this field will have a value of "()". - */ - String parameters; - - /** - * The return type of the element. If the element is not a method or function - * this field will not be defined. If the element does not have a declared - * return type, this field will contain an empty string. - */ - String returnType; - - Element(this.kind, this.name, this.flags, {this.location, this.parameters, this.returnType}); - - factory Element.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - ElementKind kind; - if (json.containsKey("kind")) { - kind = new ElementKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - Location location; - if (json.containsKey("location")) { - location = new Location.fromJson(jsonDecoder, jsonPath + ".location", json["location"]); - } - int flags; - if (json.containsKey("flags")) { - flags = jsonDecoder._decodeInt(jsonPath + ".flags", json["flags"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "flags"); - } - String parameters; - if (json.containsKey("parameters")) { - parameters = jsonDecoder._decodeString(jsonPath + ".parameters", json["parameters"]); - } - String returnType; - if (json.containsKey("returnType")) { - returnType = jsonDecoder._decodeString(jsonPath + ".returnType", json["returnType"]); - } - return new Element(kind, name, flags, location: location, parameters: parameters, returnType: returnType); - } else { - throw jsonDecoder.mismatch(jsonPath, "Element"); - } - } - - bool get isAbstract => (flags & FLAG_ABSTRACT) != 0; - bool get isConst => (flags & FLAG_CONST) != 0; - bool get isFinal => (flags & FLAG_FINAL) != 0; - bool get isStatic => (flags & FLAG_STATIC) != 0; - bool get isPrivate => (flags & FLAG_PRIVATE) != 0; - bool get isDeprecated => (flags & FLAG_DEPRECATED) != 0; - - Map toJson() { - Map result = {}; - result["kind"] = kind.toJson(); - result["name"] = name; - if (location != null) { - result["location"] = location.toJson(); - } - result["flags"] = flags; - if (parameters != null) { - result["parameters"] = parameters; - } - if (returnType != null) { - result["returnType"] = returnType; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is Element) { - return kind == other.kind && - name == other.name && - location == other.location && - flags == other.flags && - parameters == other.parameters && - returnType == other.returnType; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - hash = _JenkinsSmiHash.combine(hash, location.hashCode); - hash = _JenkinsSmiHash.combine(hash, flags.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameters.hashCode); - hash = _JenkinsSmiHash.combine(hash, returnType.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * ElementKind - * - * enum { - * CLASS - * CLASS_TYPE_ALIAS - * COMPILATION_UNIT - * CONSTRUCTOR - * FIELD - * FUNCTION - * FUNCTION_TYPE_ALIAS - * GETTER - * LABEL - * LIBRARY - * LOCAL_VARIABLE - * METHOD - * PARAMETER - * SETTER - * TOP_LEVEL_VARIABLE - * TYPE_PARAMETER - * UNIT_TEST_GROUP - * UNIT_TEST_TEST - * UNKNOWN - * } - */ -class ElementKind { - static const CLASS = const ElementKind._("CLASS"); - - static const CLASS_TYPE_ALIAS = const ElementKind._("CLASS_TYPE_ALIAS"); - - static const COMPILATION_UNIT = const ElementKind._("COMPILATION_UNIT"); - - static const CONSTRUCTOR = const ElementKind._("CONSTRUCTOR"); - - static const FIELD = const ElementKind._("FIELD"); - - static const FUNCTION = const ElementKind._("FUNCTION"); - - static const FUNCTION_TYPE_ALIAS = const ElementKind._("FUNCTION_TYPE_ALIAS"); - - static const GETTER = const ElementKind._("GETTER"); - - static const LABEL = const ElementKind._("LABEL"); - - static const LIBRARY = const ElementKind._("LIBRARY"); - - static const LOCAL_VARIABLE = const ElementKind._("LOCAL_VARIABLE"); - - static const METHOD = const ElementKind._("METHOD"); - - static const PARAMETER = const ElementKind._("PARAMETER"); - - static const SETTER = const ElementKind._("SETTER"); - - static const TOP_LEVEL_VARIABLE = const ElementKind._("TOP_LEVEL_VARIABLE"); - - static const TYPE_PARAMETER = const ElementKind._("TYPE_PARAMETER"); - - static const UNIT_TEST_GROUP = const ElementKind._("UNIT_TEST_GROUP"); - - static const UNIT_TEST_TEST = const ElementKind._("UNIT_TEST_TEST"); - - static const UNKNOWN = const ElementKind._("UNKNOWN"); - - final String name; - - const ElementKind._(this.name); - - factory ElementKind(String name) { - switch (name) { - case "CLASS": - return CLASS; - case "CLASS_TYPE_ALIAS": - return CLASS_TYPE_ALIAS; - case "COMPILATION_UNIT": - return COMPILATION_UNIT; - case "CONSTRUCTOR": - return CONSTRUCTOR; - case "FIELD": - return FIELD; - case "FUNCTION": - return FUNCTION; - case "FUNCTION_TYPE_ALIAS": - return FUNCTION_TYPE_ALIAS; - case "GETTER": - return GETTER; - case "LABEL": - return LABEL; - case "LIBRARY": - return LIBRARY; - case "LOCAL_VARIABLE": - return LOCAL_VARIABLE; - case "METHOD": - return METHOD; - case "PARAMETER": - return PARAMETER; - case "SETTER": - return SETTER; - case "TOP_LEVEL_VARIABLE": - return TOP_LEVEL_VARIABLE; - case "TYPE_PARAMETER": - return TYPE_PARAMETER; - case "UNIT_TEST_GROUP": - return UNIT_TEST_GROUP; - case "UNIT_TEST_TEST": - return UNIT_TEST_TEST; - case "UNKNOWN": - return UNKNOWN; - } - throw new Exception('Illegal enum value: $name'); - } - - factory ElementKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new ElementKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "ElementKind"); - } - - @override - String toString() => "ElementKind.$name"; - - String toJson() => name; -} - -/** - * ExecutableFile - * - * { - * "file": FilePath - * "kind": ExecutableKind - * } - */ -class ExecutableFile implements HasToJson { - /** - * The path of the executable file. - */ - String file; - - /** - * The kind of the executable file. - */ - ExecutableKind kind; - - ExecutableFile(this.file, this.kind); - - factory ExecutableFile.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - ExecutableKind kind; - if (json.containsKey("kind")) { - kind = new ExecutableKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - return new ExecutableFile(file, kind); - } else { - throw jsonDecoder.mismatch(jsonPath, "ExecutableFile"); - } - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["kind"] = kind.toJson(); - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExecutableFile) { - return file == other.file && - kind == other.kind; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * ExecutableKind - * - * enum { - * CLIENT - * EITHER - * SERVER - * } - */ -class ExecutableKind { - static const CLIENT = const ExecutableKind._("CLIENT"); - - static const EITHER = const ExecutableKind._("EITHER"); - - static const SERVER = const ExecutableKind._("SERVER"); - - final String name; - - const ExecutableKind._(this.name); - - factory ExecutableKind(String name) { - switch (name) { - case "CLIENT": - return CLIENT; - case "EITHER": - return EITHER; - case "SERVER": - return SERVER; - } - throw new Exception('Illegal enum value: $name'); - } - - factory ExecutableKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new ExecutableKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "ExecutableKind"); - } - - @override - String toString() => "ExecutableKind.$name"; - - String toJson() => name; -} - -/** - * ExecutionService - * - * enum { - * LAUNCH_DATA - * } - */ -class ExecutionService { - static const LAUNCH_DATA = const ExecutionService._("LAUNCH_DATA"); - - final String name; - - const ExecutionService._(this.name); - - factory ExecutionService(String name) { - switch (name) { - case "LAUNCH_DATA": - return LAUNCH_DATA; - } - throw new Exception('Illegal enum value: $name'); - } - - factory ExecutionService.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new ExecutionService(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "ExecutionService"); - } - - @override - String toString() => "ExecutionService.$name"; - - String toJson() => name; -} - -/** - * FoldingKind - * - * enum { - * COMMENT - * CLASS_MEMBER - * DIRECTIVES - * DOCUMENTATION_COMMENT - * TOP_LEVEL_DECLARATION - * } - */ -class FoldingKind { - static const COMMENT = const FoldingKind._("COMMENT"); - - static const CLASS_MEMBER = const FoldingKind._("CLASS_MEMBER"); - - static const DIRECTIVES = const FoldingKind._("DIRECTIVES"); - - static const DOCUMENTATION_COMMENT = const FoldingKind._("DOCUMENTATION_COMMENT"); - - static const TOP_LEVEL_DECLARATION = const FoldingKind._("TOP_LEVEL_DECLARATION"); - - final String name; - - const FoldingKind._(this.name); - - factory FoldingKind(String name) { - switch (name) { - case "COMMENT": - return COMMENT; - case "CLASS_MEMBER": - return CLASS_MEMBER; - case "DIRECTIVES": - return DIRECTIVES; - case "DOCUMENTATION_COMMENT": - return DOCUMENTATION_COMMENT; - case "TOP_LEVEL_DECLARATION": - return TOP_LEVEL_DECLARATION; - } - throw new Exception('Illegal enum value: $name'); - } - - factory FoldingKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new FoldingKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "FoldingKind"); - } - - @override - String toString() => "FoldingKind.$name"; - - String toJson() => name; -} - -/** - * FoldingRegion - * - * { - * "kind": FoldingKind - * "offset": int - * "length": int - * } - */ -class FoldingRegion implements HasToJson { - /** - * The kind of the region. - */ - FoldingKind kind; - - /** - * The offset of the region to be folded. - */ - int offset; - - /** - * The length of the region to be folded. - */ - int length; - - FoldingRegion(this.kind, this.offset, this.length); - - factory FoldingRegion.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - FoldingKind kind; - if (json.containsKey("kind")) { - kind = new FoldingKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - return new FoldingRegion(kind, offset, length); - } else { - throw jsonDecoder.mismatch(jsonPath, "FoldingRegion"); - } - } - - Map toJson() { - Map result = {}; - result["kind"] = kind.toJson(); - result["offset"] = offset; - result["length"] = length; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is FoldingRegion) { - return kind == other.kind && - offset == other.offset && - length == other.length; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * HighlightRegion - * - * { - * "type": HighlightRegionType - * "offset": int - * "length": int - * } - */ -class HighlightRegion implements HasToJson { - /** - * The type of highlight associated with the region. - */ - HighlightRegionType type; - - /** - * The offset of the region to be highlighted. - */ - int offset; - - /** - * The length of the region to be highlighted. - */ - int length; - - HighlightRegion(this.type, this.offset, this.length); - - factory HighlightRegion.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - HighlightRegionType type; - if (json.containsKey("type")) { - type = new HighlightRegionType.fromJson(jsonDecoder, jsonPath + ".type", json["type"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "type"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - return new HighlightRegion(type, offset, length); - } else { - throw jsonDecoder.mismatch(jsonPath, "HighlightRegion"); - } - } - - Map toJson() { - Map result = {}; - result["type"] = type.toJson(); - result["offset"] = offset; - result["length"] = length; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is HighlightRegion) { - return type == other.type && - offset == other.offset && - length == other.length; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, type.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * HighlightRegionType - * - * enum { - * ANNOTATION - * BUILT_IN - * CLASS - * COMMENT_BLOCK - * COMMENT_DOCUMENTATION - * COMMENT_END_OF_LINE - * CONSTRUCTOR - * DIRECTIVE - * DYNAMIC_TYPE - * FIELD - * FIELD_STATIC - * FUNCTION - * FUNCTION_DECLARATION - * FUNCTION_TYPE_ALIAS - * GETTER_DECLARATION - * IDENTIFIER_DEFAULT - * IMPORT_PREFIX - * KEYWORD - * LABEL - * LITERAL_BOOLEAN - * LITERAL_DOUBLE - * LITERAL_INTEGER - * LITERAL_LIST - * LITERAL_MAP - * LITERAL_STRING - * LOCAL_VARIABLE - * LOCAL_VARIABLE_DECLARATION - * METHOD - * METHOD_DECLARATION - * METHOD_DECLARATION_STATIC - * METHOD_STATIC - * PARAMETER - * SETTER_DECLARATION - * TOP_LEVEL_VARIABLE - * TYPE_NAME_DYNAMIC - * TYPE_PARAMETER - * } - */ -class HighlightRegionType { - static const ANNOTATION = const HighlightRegionType._("ANNOTATION"); - - static const BUILT_IN = const HighlightRegionType._("BUILT_IN"); - - static const CLASS = const HighlightRegionType._("CLASS"); - - static const COMMENT_BLOCK = const HighlightRegionType._("COMMENT_BLOCK"); - - static const COMMENT_DOCUMENTATION = const HighlightRegionType._("COMMENT_DOCUMENTATION"); - - static const COMMENT_END_OF_LINE = const HighlightRegionType._("COMMENT_END_OF_LINE"); - - static const CONSTRUCTOR = const HighlightRegionType._("CONSTRUCTOR"); - - static const DIRECTIVE = const HighlightRegionType._("DIRECTIVE"); - - static const DYNAMIC_TYPE = const HighlightRegionType._("DYNAMIC_TYPE"); - - static const FIELD = const HighlightRegionType._("FIELD"); - - static const FIELD_STATIC = const HighlightRegionType._("FIELD_STATIC"); - - static const FUNCTION = const HighlightRegionType._("FUNCTION"); - - static const FUNCTION_DECLARATION = const HighlightRegionType._("FUNCTION_DECLARATION"); - - static const FUNCTION_TYPE_ALIAS = const HighlightRegionType._("FUNCTION_TYPE_ALIAS"); - - static const GETTER_DECLARATION = const HighlightRegionType._("GETTER_DECLARATION"); - - static const IDENTIFIER_DEFAULT = const HighlightRegionType._("IDENTIFIER_DEFAULT"); - - static const IMPORT_PREFIX = const HighlightRegionType._("IMPORT_PREFIX"); - - static const KEYWORD = const HighlightRegionType._("KEYWORD"); - - static const LABEL = const HighlightRegionType._("LABEL"); - - static const LITERAL_BOOLEAN = const HighlightRegionType._("LITERAL_BOOLEAN"); - - static const LITERAL_DOUBLE = const HighlightRegionType._("LITERAL_DOUBLE"); - - static const LITERAL_INTEGER = const HighlightRegionType._("LITERAL_INTEGER"); - - static const LITERAL_LIST = const HighlightRegionType._("LITERAL_LIST"); - - static const LITERAL_MAP = const HighlightRegionType._("LITERAL_MAP"); - - static const LITERAL_STRING = const HighlightRegionType._("LITERAL_STRING"); - - static const LOCAL_VARIABLE = const HighlightRegionType._("LOCAL_VARIABLE"); - - static const LOCAL_VARIABLE_DECLARATION = const HighlightRegionType._("LOCAL_VARIABLE_DECLARATION"); - - static const METHOD = const HighlightRegionType._("METHOD"); - - static const METHOD_DECLARATION = const HighlightRegionType._("METHOD_DECLARATION"); - - static const METHOD_DECLARATION_STATIC = const HighlightRegionType._("METHOD_DECLARATION_STATIC"); - - static const METHOD_STATIC = const HighlightRegionType._("METHOD_STATIC"); - - static const PARAMETER = const HighlightRegionType._("PARAMETER"); - - static const SETTER_DECLARATION = const HighlightRegionType._("SETTER_DECLARATION"); - - static const TOP_LEVEL_VARIABLE = const HighlightRegionType._("TOP_LEVEL_VARIABLE"); - - static const TYPE_NAME_DYNAMIC = const HighlightRegionType._("TYPE_NAME_DYNAMIC"); - - static const TYPE_PARAMETER = const HighlightRegionType._("TYPE_PARAMETER"); - - final String name; - - const HighlightRegionType._(this.name); - - factory HighlightRegionType(String name) { - switch (name) { - case "ANNOTATION": - return ANNOTATION; - case "BUILT_IN": - return BUILT_IN; - case "CLASS": - return CLASS; - case "COMMENT_BLOCK": - return COMMENT_BLOCK; - case "COMMENT_DOCUMENTATION": - return COMMENT_DOCUMENTATION; - case "COMMENT_END_OF_LINE": - return COMMENT_END_OF_LINE; - case "CONSTRUCTOR": - return CONSTRUCTOR; - case "DIRECTIVE": - return DIRECTIVE; - case "DYNAMIC_TYPE": - return DYNAMIC_TYPE; - case "FIELD": - return FIELD; - case "FIELD_STATIC": - return FIELD_STATIC; - case "FUNCTION": - return FUNCTION; - case "FUNCTION_DECLARATION": - return FUNCTION_DECLARATION; - case "FUNCTION_TYPE_ALIAS": - return FUNCTION_TYPE_ALIAS; - case "GETTER_DECLARATION": - return GETTER_DECLARATION; - case "IDENTIFIER_DEFAULT": - return IDENTIFIER_DEFAULT; - case "IMPORT_PREFIX": - return IMPORT_PREFIX; - case "KEYWORD": - return KEYWORD; - case "LABEL": - return LABEL; - case "LITERAL_BOOLEAN": - return LITERAL_BOOLEAN; - case "LITERAL_DOUBLE": - return LITERAL_DOUBLE; - case "LITERAL_INTEGER": - return LITERAL_INTEGER; - case "LITERAL_LIST": - return LITERAL_LIST; - case "LITERAL_MAP": - return LITERAL_MAP; - case "LITERAL_STRING": - return LITERAL_STRING; - case "LOCAL_VARIABLE": - return LOCAL_VARIABLE; - case "LOCAL_VARIABLE_DECLARATION": - return LOCAL_VARIABLE_DECLARATION; - case "METHOD": - return METHOD; - case "METHOD_DECLARATION": - return METHOD_DECLARATION; - case "METHOD_DECLARATION_STATIC": - return METHOD_DECLARATION_STATIC; - case "METHOD_STATIC": - return METHOD_STATIC; - case "PARAMETER": - return PARAMETER; - case "SETTER_DECLARATION": - return SETTER_DECLARATION; - case "TOP_LEVEL_VARIABLE": - return TOP_LEVEL_VARIABLE; - case "TYPE_NAME_DYNAMIC": - return TYPE_NAME_DYNAMIC; - case "TYPE_PARAMETER": - return TYPE_PARAMETER; - } - throw new Exception('Illegal enum value: $name'); - } - - factory HighlightRegionType.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new HighlightRegionType(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "HighlightRegionType"); - } - - @override - String toString() => "HighlightRegionType.$name"; - - String toJson() => name; -} - -/** - * HoverInformation - * - * { - * "offset": int - * "length": int - * "containingLibraryPath": optional String - * "containingLibraryName": optional String - * "dartdoc": optional String - * "elementDescription": optional String - * "elementKind": optional String - * "parameter": optional String - * "propagatedType": optional String - * "staticType": optional String - * } - */ -class HoverInformation implements HasToJson { - /** - * The offset of the range of characters that encompases the cursor position - * and has the same hover information as the cursor position. - */ - int offset; - - /** - * The length of the range of characters that encompases the cursor position - * and has the same hover information as the cursor position. - */ - int length; - - /** - * The path to the defining compilation unit of the library in which the - * referenced element is declared. This data is omitted if there is no - * referenced element, or if the element is declared inside an HTML file. - */ - String containingLibraryPath; - - /** - * The name of the library in which the referenced element is declared. This - * data is omitted if there is no referenced element, or if the element is - * declared inside an HTML file. - */ - String containingLibraryName; - - /** - * The dartdoc associated with the referenced element. Other than the removal - * of the comment delimiters, including leading asterisks in the case of a - * block comment, the dartdoc is unprocessed markdown. This data is omitted - * if there is no referenced element, or if the element has no dartdoc. - */ - String dartdoc; - - /** - * A human-readable description of the element being referenced. This data is - * omitted if there is no referenced element. - */ - String elementDescription; - - /** - * A human-readable description of the kind of element being referenced (such - * as “class” or “function type alias”). This data is omitted if there is no - * referenced element. - */ - String elementKind; - - /** - * A human-readable description of the parameter corresponding to the - * expression being hovered over. This data is omitted if the location is not - * in an argument to a function. - */ - String parameter; - - /** - * The name of the propagated type of the expression. This data is omitted if - * the location does not correspond to an expression or if there is no - * propagated type information. - */ - String propagatedType; - - /** - * The name of the static type of the expression. This data is omitted if the - * location does not correspond to an expression. - */ - String staticType; - - HoverInformation(this.offset, this.length, {this.containingLibraryPath, this.containingLibraryName, this.dartdoc, this.elementDescription, this.elementKind, this.parameter, this.propagatedType, this.staticType}); - - factory HoverInformation.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - String containingLibraryPath; - if (json.containsKey("containingLibraryPath")) { - containingLibraryPath = jsonDecoder._decodeString(jsonPath + ".containingLibraryPath", json["containingLibraryPath"]); - } - String containingLibraryName; - if (json.containsKey("containingLibraryName")) { - containingLibraryName = jsonDecoder._decodeString(jsonPath + ".containingLibraryName", json["containingLibraryName"]); - } - String dartdoc; - if (json.containsKey("dartdoc")) { - dartdoc = jsonDecoder._decodeString(jsonPath + ".dartdoc", json["dartdoc"]); - } - String elementDescription; - if (json.containsKey("elementDescription")) { - elementDescription = jsonDecoder._decodeString(jsonPath + ".elementDescription", json["elementDescription"]); - } - String elementKind; - if (json.containsKey("elementKind")) { - elementKind = jsonDecoder._decodeString(jsonPath + ".elementKind", json["elementKind"]); - } - String parameter; - if (json.containsKey("parameter")) { - parameter = jsonDecoder._decodeString(jsonPath + ".parameter", json["parameter"]); - } - String propagatedType; - if (json.containsKey("propagatedType")) { - propagatedType = jsonDecoder._decodeString(jsonPath + ".propagatedType", json["propagatedType"]); - } - String staticType; - if (json.containsKey("staticType")) { - staticType = jsonDecoder._decodeString(jsonPath + ".staticType", json["staticType"]); - } - return new HoverInformation(offset, length, containingLibraryPath: containingLibraryPath, containingLibraryName: containingLibraryName, dartdoc: dartdoc, elementDescription: elementDescription, elementKind: elementKind, parameter: parameter, propagatedType: propagatedType, staticType: staticType); - } else { - throw jsonDecoder.mismatch(jsonPath, "HoverInformation"); - } - } - - Map toJson() { - Map result = {}; - result["offset"] = offset; - result["length"] = length; - if (containingLibraryPath != null) { - result["containingLibraryPath"] = containingLibraryPath; - } - if (containingLibraryName != null) { - result["containingLibraryName"] = containingLibraryName; - } - if (dartdoc != null) { - result["dartdoc"] = dartdoc; - } - if (elementDescription != null) { - result["elementDescription"] = elementDescription; - } - if (elementKind != null) { - result["elementKind"] = elementKind; - } - if (parameter != null) { - result["parameter"] = parameter; - } - if (propagatedType != null) { - result["propagatedType"] = propagatedType; - } - if (staticType != null) { - result["staticType"] = staticType; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is HoverInformation) { - return offset == other.offset && - length == other.length && - containingLibraryPath == other.containingLibraryPath && - containingLibraryName == other.containingLibraryName && - dartdoc == other.dartdoc && - elementDescription == other.elementDescription && - elementKind == other.elementKind && - parameter == other.parameter && - propagatedType == other.propagatedType && - staticType == other.staticType; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, containingLibraryPath.hashCode); - hash = _JenkinsSmiHash.combine(hash, containingLibraryName.hashCode); - hash = _JenkinsSmiHash.combine(hash, dartdoc.hashCode); - hash = _JenkinsSmiHash.combine(hash, elementDescription.hashCode); - hash = _JenkinsSmiHash.combine(hash, elementKind.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameter.hashCode); - hash = _JenkinsSmiHash.combine(hash, propagatedType.hashCode); - hash = _JenkinsSmiHash.combine(hash, staticType.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * LinkedEditGroup - * - * { - * "positions": List - * "length": int - * "suggestions": List - * } - */ -class LinkedEditGroup implements HasToJson { - /** - * The positions of the regions that should be edited simultaneously. - */ - List positions; - - /** - * The length of the regions that should be edited simultaneously. - */ - int length; - - /** - * Pre-computed suggestions for what every region might want to be changed - * to. - */ - List suggestions; - - LinkedEditGroup(this.positions, this.length, this.suggestions); - - factory LinkedEditGroup.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List positions; - if (json.containsKey("positions")) { - positions = jsonDecoder._decodeList(jsonPath + ".positions", json["positions"], (String jsonPath, Object json) => new Position.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "positions"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - List suggestions; - if (json.containsKey("suggestions")) { - suggestions = jsonDecoder._decodeList(jsonPath + ".suggestions", json["suggestions"], (String jsonPath, Object json) => new LinkedEditSuggestion.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "suggestions"); - } - return new LinkedEditGroup(positions, length, suggestions); - } else { - throw jsonDecoder.mismatch(jsonPath, "LinkedEditGroup"); - } - } - - /** - * Construct an empty LinkedEditGroup. - */ - LinkedEditGroup.empty() : this([], 0, []); - - Map toJson() { - Map result = {}; - result["positions"] = positions.map((Position value) => value.toJson()).toList(); - result["length"] = length; - result["suggestions"] = suggestions.map((LinkedEditSuggestion value) => value.toJson()).toList(); - return result; - } - - /** - * Add a new position and change the length. - */ - void addPosition(Position position, int length) { - positions.add(position); - this.length = length; - } - - /** - * Add a new suggestion. - */ - void addSuggestion(LinkedEditSuggestion suggestion) { - suggestions.add(suggestion); - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is LinkedEditGroup) { - return _listEqual(positions, other.positions, (Position a, Position b) => a == b) && - length == other.length && - _listEqual(suggestions, other.suggestions, (LinkedEditSuggestion a, LinkedEditSuggestion b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, positions.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, suggestions.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * LinkedEditSuggestion - * - * { - * "value": String - * "kind": LinkedEditSuggestionKind - * } - */ -class LinkedEditSuggestion implements HasToJson { - /** - * The value that could be used to replace all of the linked edit regions. - */ - String value; - - /** - * The kind of value being proposed. - */ - LinkedEditSuggestionKind kind; - - LinkedEditSuggestion(this.value, this.kind); - - factory LinkedEditSuggestion.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String value; - if (json.containsKey("value")) { - value = jsonDecoder._decodeString(jsonPath + ".value", json["value"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "value"); - } - LinkedEditSuggestionKind kind; - if (json.containsKey("kind")) { - kind = new LinkedEditSuggestionKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - return new LinkedEditSuggestion(value, kind); - } else { - throw jsonDecoder.mismatch(jsonPath, "LinkedEditSuggestion"); - } - } - - Map toJson() { - Map result = {}; - result["value"] = value; - result["kind"] = kind.toJson(); - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is LinkedEditSuggestion) { - return value == other.value && - kind == other.kind; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, value.hashCode); - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * LinkedEditSuggestionKind - * - * enum { - * METHOD - * PARAMETER - * TYPE - * VARIABLE - * } - */ -class LinkedEditSuggestionKind { - static const METHOD = const LinkedEditSuggestionKind._("METHOD"); - - static const PARAMETER = const LinkedEditSuggestionKind._("PARAMETER"); - - static const TYPE = const LinkedEditSuggestionKind._("TYPE"); - - static const VARIABLE = const LinkedEditSuggestionKind._("VARIABLE"); - - final String name; - - const LinkedEditSuggestionKind._(this.name); - - factory LinkedEditSuggestionKind(String name) { - switch (name) { - case "METHOD": - return METHOD; - case "PARAMETER": - return PARAMETER; - case "TYPE": - return TYPE; - case "VARIABLE": - return VARIABLE; - } - throw new Exception('Illegal enum value: $name'); - } - - factory LinkedEditSuggestionKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new LinkedEditSuggestionKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "LinkedEditSuggestionKind"); - } - - @override - String toString() => "LinkedEditSuggestionKind.$name"; - - String toJson() => name; -} - -/** - * Location - * - * { - * "file": FilePath - * "offset": int - * "length": int - * "startLine": int - * "startColumn": int - * } - */ -class Location implements HasToJson { - /** - * The file containing the range. - */ - String file; - - /** - * The offset of the range. - */ - int offset; - - /** - * The length of the range. - */ - int length; - - /** - * The one-based index of the line containing the first character of the - * range. - */ - int startLine; - - /** - * The one-based index of the column containing the first character of the - * range. - */ - int startColumn; - - Location(this.file, this.offset, this.length, this.startLine, this.startColumn); - - factory Location.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - int startLine; - if (json.containsKey("startLine")) { - startLine = jsonDecoder._decodeInt(jsonPath + ".startLine", json["startLine"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "startLine"); - } - int startColumn; - if (json.containsKey("startColumn")) { - startColumn = jsonDecoder._decodeInt(jsonPath + ".startColumn", json["startColumn"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "startColumn"); - } - return new Location(file, offset, length, startLine, startColumn); - } else { - throw jsonDecoder.mismatch(jsonPath, "Location"); - } - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - result["length"] = length; - result["startLine"] = startLine; - result["startColumn"] = startColumn; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is Location) { - return file == other.file && - offset == other.offset && - length == other.length && - startLine == other.startLine && - startColumn == other.startColumn; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, startLine.hashCode); - hash = _JenkinsSmiHash.combine(hash, startColumn.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * NavigationRegion - * - * { - * "offset": int - * "length": int - * "targets": List - * } - */ -class NavigationRegion implements HasToJson { - /** - * The offset of the region from which the user can navigate. - */ - int offset; - - /** - * The length of the region from which the user can navigate. - */ - int length; - - /** - * The elements to which the given region is bound. By opening the - * declaration of the elements, clients can implement one form of navigation. - */ - List targets; - - NavigationRegion(this.offset, this.length, this.targets); - - factory NavigationRegion.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - List targets; - if (json.containsKey("targets")) { - targets = jsonDecoder._decodeList(jsonPath + ".targets", json["targets"], (String jsonPath, Object json) => new Element.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "targets"); - } - return new NavigationRegion(offset, length, targets); - } else { - throw jsonDecoder.mismatch(jsonPath, "NavigationRegion"); - } - } - - Map toJson() { - Map result = {}; - result["offset"] = offset; - result["length"] = length; - result["targets"] = targets.map((Element value) => value.toJson()).toList(); - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is NavigationRegion) { - return offset == other.offset && - length == other.length && - _listEqual(targets, other.targets, (Element a, Element b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, targets.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * Occurrences - * - * { - * "element": Element - * "offsets": List - * "length": int - * } - */ -class Occurrences implements HasToJson { - /** - * The element that was referenced. - */ - Element element; - - /** - * The offsets of the name of the referenced element within the file. - */ - List offsets; - - /** - * The length of the name of the referenced element. - */ - int length; - - Occurrences(this.element, this.offsets, this.length); - - factory Occurrences.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Element element; - if (json.containsKey("element")) { - element = new Element.fromJson(jsonDecoder, jsonPath + ".element", json["element"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "element"); - } - List offsets; - if (json.containsKey("offsets")) { - offsets = jsonDecoder._decodeList(jsonPath + ".offsets", json["offsets"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "offsets"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - return new Occurrences(element, offsets, length); - } else { - throw jsonDecoder.mismatch(jsonPath, "Occurrences"); - } - } - - Map toJson() { - Map result = {}; - result["element"] = element.toJson(); - result["offsets"] = offsets; - result["length"] = length; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is Occurrences) { - return element == other.element && - _listEqual(offsets, other.offsets, (int a, int b) => a == b) && - length == other.length; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, element.hashCode); - hash = _JenkinsSmiHash.combine(hash, offsets.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * Outline - * - * { - * "element": Element - * "offset": int - * "length": int - * "children": optional List - * } - */ -class Outline implements HasToJson { - /** - * A description of the element represented by this node. - */ - Element element; - - /** - * The offset of the first character of the element. This is different than - * the offset in the Element, which if the offset of the name of the element. - * It can be used, for example, to map locations in the file back to an - * outline. - */ - int offset; - - /** - * The length of the element. - */ - int length; - - /** - * The children of the node. The field will be omitted if the node has no - * children. - */ - List children; - - Outline(this.element, this.offset, this.length, {this.children}) { - if (children == null) { - children = []; - } - } - - factory Outline.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Element element; - if (json.containsKey("element")) { - element = new Element.fromJson(jsonDecoder, jsonPath + ".element", json["element"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "element"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - List children; - if (json.containsKey("children")) { - children = jsonDecoder._decodeList(jsonPath + ".children", json["children"], (String jsonPath, Object json) => new Outline.fromJson(jsonDecoder, jsonPath, json)); - } else { - children = []; - } - return new Outline(element, offset, length, children: children); - } else { - throw jsonDecoder.mismatch(jsonPath, "Outline"); - } - } - - Map toJson() { - Map result = {}; - result["element"] = element.toJson(); - result["offset"] = offset; - result["length"] = length; - if (children.isNotEmpty) { - result["children"] = children.map((Outline value) => value.toJson()).toList(); - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is Outline) { - return element == other.element && - offset == other.offset && - length == other.length && - _listEqual(children, other.children, (Outline a, Outline b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, element.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, children.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * Override - * - * { - * "offset": int - * "length": int - * "superclassMember": optional OverriddenMember - * "interfaceMembers": optional List - * } - */ -class Override implements HasToJson { - /** - * The offset of the name of the overriding member. - */ - int offset; - - /** - * The length of the name of the overriding member. - */ - int length; - - /** - * The member inherited from a superclass that is overridden by the - * overriding member. The field is omitted if there is no superclass member, - * in which case there must be at least one interface member. - */ - OverriddenMember superclassMember; - - /** - * The members inherited from interfaces that are overridden by the - * overriding member. The field is omitted if there are no interface members, - * in which case there must be a superclass member. - */ - List interfaceMembers; - - Override(this.offset, this.length, {this.superclassMember, this.interfaceMembers}) { - if (interfaceMembers == null) { - interfaceMembers = []; - } - } - - factory Override.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - OverriddenMember superclassMember; - if (json.containsKey("superclassMember")) { - superclassMember = new OverriddenMember.fromJson(jsonDecoder, jsonPath + ".superclassMember", json["superclassMember"]); - } - List interfaceMembers; - if (json.containsKey("interfaceMembers")) { - interfaceMembers = jsonDecoder._decodeList(jsonPath + ".interfaceMembers", json["interfaceMembers"], (String jsonPath, Object json) => new OverriddenMember.fromJson(jsonDecoder, jsonPath, json)); - } else { - interfaceMembers = []; - } - return new Override(offset, length, superclassMember: superclassMember, interfaceMembers: interfaceMembers); - } else { - throw jsonDecoder.mismatch(jsonPath, "Override"); - } - } - - Map toJson() { - Map result = {}; - result["offset"] = offset; - result["length"] = length; - if (superclassMember != null) { - result["superclassMember"] = superclassMember.toJson(); - } - if (interfaceMembers.isNotEmpty) { - result["interfaceMembers"] = interfaceMembers.map((OverriddenMember value) => value.toJson()).toList(); - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is Override) { - return offset == other.offset && - length == other.length && - superclassMember == other.superclassMember && - _listEqual(interfaceMembers, other.interfaceMembers, (OverriddenMember a, OverriddenMember b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, superclassMember.hashCode); - hash = _JenkinsSmiHash.combine(hash, interfaceMembers.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * OverriddenMember - * - * { - * "element": Element - * "className": String - * } - */ -class OverriddenMember implements HasToJson { - /** - * The element that is being overridden. - */ - Element element; - - /** - * The name of the class in which the member is defined. - */ - String className; - - OverriddenMember(this.element, this.className); - - factory OverriddenMember.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Element element; - if (json.containsKey("element")) { - element = new Element.fromJson(jsonDecoder, jsonPath + ".element", json["element"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "element"); - } - String className; - if (json.containsKey("className")) { - className = jsonDecoder._decodeString(jsonPath + ".className", json["className"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "className"); - } - return new OverriddenMember(element, className); - } else { - throw jsonDecoder.mismatch(jsonPath, "OverriddenMember"); - } - } - - Map toJson() { - Map result = {}; - result["element"] = element.toJson(); - result["className"] = className; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is OverriddenMember) { - return element == other.element && - className == other.className; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, element.hashCode); - hash = _JenkinsSmiHash.combine(hash, className.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * Position - * - * { - * "file": FilePath - * "offset": int - * } - */ -class Position implements HasToJson { - /** - * The file containing the position. - */ - String file; - - /** - * The offset of the position. - */ - int offset; - - Position(this.file, this.offset); - - factory Position.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - return new Position(file, offset); - } else { - throw jsonDecoder.mismatch(jsonPath, "Position"); - } - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["offset"] = offset; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is Position) { - return file == other.file && - offset == other.offset; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RefactoringKind - * - * enum { - * CONVERT_GETTER_TO_METHOD - * CONVERT_METHOD_TO_GETTER - * EXTRACT_LOCAL_VARIABLE - * EXTRACT_METHOD - * INLINE_LOCAL_VARIABLE - * INLINE_METHOD - * RENAME - * } - */ -class RefactoringKind { - static const CONVERT_GETTER_TO_METHOD = const RefactoringKind._("CONVERT_GETTER_TO_METHOD"); - - static const CONVERT_METHOD_TO_GETTER = const RefactoringKind._("CONVERT_METHOD_TO_GETTER"); - - static const EXTRACT_LOCAL_VARIABLE = const RefactoringKind._("EXTRACT_LOCAL_VARIABLE"); - - static const EXTRACT_METHOD = const RefactoringKind._("EXTRACT_METHOD"); - - static const INLINE_LOCAL_VARIABLE = const RefactoringKind._("INLINE_LOCAL_VARIABLE"); - - static const INLINE_METHOD = const RefactoringKind._("INLINE_METHOD"); - - static const RENAME = const RefactoringKind._("RENAME"); - - final String name; - - const RefactoringKind._(this.name); - - factory RefactoringKind(String name) { - switch (name) { - case "CONVERT_GETTER_TO_METHOD": - return CONVERT_GETTER_TO_METHOD; - case "CONVERT_METHOD_TO_GETTER": - return CONVERT_METHOD_TO_GETTER; - case "EXTRACT_LOCAL_VARIABLE": - return EXTRACT_LOCAL_VARIABLE; - case "EXTRACT_METHOD": - return EXTRACT_METHOD; - case "INLINE_LOCAL_VARIABLE": - return INLINE_LOCAL_VARIABLE; - case "INLINE_METHOD": - return INLINE_METHOD; - case "RENAME": - return RENAME; - } - throw new Exception('Illegal enum value: $name'); - } - - factory RefactoringKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new RefactoringKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "RefactoringKind"); - } - - @override - String toString() => "RefactoringKind.$name"; - - String toJson() => name; -} - -/** - * RefactoringMethodParameter - * - * { - * "id": optional String - * "kind": RefactoringMethodParameterKind - * "type": String - * "name": String - * "parameters": optional String - * } - */ -class RefactoringMethodParameter implements HasToJson { - /** - * The unique identifier of the parameter. Clients may omit this field for - * the parameters they want to add. - */ - String id; - - /** - * The kind of the parameter. - */ - RefactoringMethodParameterKind kind; - - /** - * The type that should be given to the parameter, or the return type of the - * parameter's function type. - */ - String type; - - /** - * The name that should be given to the parameter. - */ - String name; - - /** - * The parameter list of the parameter's function type. If the parameter is - * not of a function type, this field will not be defined. If the function - * type has zero parameters, this field will have a value of "()". - */ - String parameters; - - RefactoringMethodParameter(this.kind, this.type, this.name, {this.id, this.parameters}); - - factory RefactoringMethodParameter.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } - RefactoringMethodParameterKind kind; - if (json.containsKey("kind")) { - kind = new RefactoringMethodParameterKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - String type; - if (json.containsKey("type")) { - type = jsonDecoder._decodeString(jsonPath + ".type", json["type"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "type"); - } - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - String parameters; - if (json.containsKey("parameters")) { - parameters = jsonDecoder._decodeString(jsonPath + ".parameters", json["parameters"]); - } - return new RefactoringMethodParameter(kind, type, name, id: id, parameters: parameters); - } else { - throw jsonDecoder.mismatch(jsonPath, "RefactoringMethodParameter"); - } - } - - Map toJson() { - Map result = {}; - if (id != null) { - result["id"] = id; - } - result["kind"] = kind.toJson(); - result["type"] = type; - result["name"] = name; - if (parameters != null) { - result["parameters"] = parameters; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RefactoringMethodParameter) { - return id == other.id && - kind == other.kind && - type == other.type && - name == other.name && - parameters == other.parameters; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - hash = _JenkinsSmiHash.combine(hash, type.hashCode); - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameters.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RefactoringFeedback - * - * { - * } - */ -class RefactoringFeedback implements HasToJson { - RefactoringFeedback(); - - factory RefactoringFeedback.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json, Map responseJson) { - return _refactoringFeedbackFromJson(jsonDecoder, jsonPath, json, responseJson); - } - - Map toJson() { - Map result = {}; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RefactoringFeedback) { - return true; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RefactoringOptions - * - * { - * } - */ -class RefactoringOptions implements HasToJson { - RefactoringOptions(); - - factory RefactoringOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json, RefactoringKind kind) { - return _refactoringOptionsFromJson(jsonDecoder, jsonPath, json, kind); - } - - Map toJson() { - Map result = {}; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RefactoringOptions) { - return true; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RefactoringMethodParameterKind - * - * enum { - * REQUIRED - * POSITIONAL - * NAMED - * } - */ -class RefactoringMethodParameterKind { - static const REQUIRED = const RefactoringMethodParameterKind._("REQUIRED"); - - static const POSITIONAL = const RefactoringMethodParameterKind._("POSITIONAL"); - - static const NAMED = const RefactoringMethodParameterKind._("NAMED"); - - final String name; - - const RefactoringMethodParameterKind._(this.name); - - factory RefactoringMethodParameterKind(String name) { - switch (name) { - case "REQUIRED": - return REQUIRED; - case "POSITIONAL": - return POSITIONAL; - case "NAMED": - return NAMED; - } - throw new Exception('Illegal enum value: $name'); - } - - factory RefactoringMethodParameterKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new RefactoringMethodParameterKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "RefactoringMethodParameterKind"); - } - - @override - String toString() => "RefactoringMethodParameterKind.$name"; - - String toJson() => name; -} - -/** - * RefactoringProblem - * - * { - * "severity": RefactoringProblemSeverity - * "message": String - * "location": optional Location - * } - */ -class RefactoringProblem implements HasToJson { - /** - * The severity of the problem being represented. - */ - RefactoringProblemSeverity severity; - - /** - * A human-readable description of the problem being represented. - */ - String message; - - /** - * The location of the problem being represented. This field is omitted - * unless there is a specific location associated with the problem (such as a - * location where an element being renamed will be shadowed). - */ - Location location; - - RefactoringProblem(this.severity, this.message, {this.location}); - - factory RefactoringProblem.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - RefactoringProblemSeverity severity; - if (json.containsKey("severity")) { - severity = new RefactoringProblemSeverity.fromJson(jsonDecoder, jsonPath + ".severity", json["severity"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "severity"); - } - String message; - if (json.containsKey("message")) { - message = jsonDecoder._decodeString(jsonPath + ".message", json["message"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "message"); - } - Location location; - if (json.containsKey("location")) { - location = new Location.fromJson(jsonDecoder, jsonPath + ".location", json["location"]); - } - return new RefactoringProblem(severity, message, location: location); - } else { - throw jsonDecoder.mismatch(jsonPath, "RefactoringProblem"); - } - } - - Map toJson() { - Map result = {}; - result["severity"] = severity.toJson(); - result["message"] = message; - if (location != null) { - result["location"] = location.toJson(); - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RefactoringProblem) { - return severity == other.severity && - message == other.message && - location == other.location; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, severity.hashCode); - hash = _JenkinsSmiHash.combine(hash, message.hashCode); - hash = _JenkinsSmiHash.combine(hash, location.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RefactoringProblemSeverity - * - * enum { - * INFO - * WARNING - * ERROR - * FATAL - * } - */ -class RefactoringProblemSeverity { - static const INFO = const RefactoringProblemSeverity._("INFO"); - - static const WARNING = const RefactoringProblemSeverity._("WARNING"); - - static const ERROR = const RefactoringProblemSeverity._("ERROR"); - - static const FATAL = const RefactoringProblemSeverity._("FATAL"); - - final String name; - - const RefactoringProblemSeverity._(this.name); - - factory RefactoringProblemSeverity(String name) { - switch (name) { - case "INFO": - return INFO; - case "WARNING": - return WARNING; - case "ERROR": - return ERROR; - case "FATAL": - return FATAL; - } - throw new Exception('Illegal enum value: $name'); - } - - factory RefactoringProblemSeverity.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new RefactoringProblemSeverity(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "RefactoringProblemSeverity"); - } - - /** - * Returns the [RefactoringProblemSeverity] with the maximal severity. - */ - static RefactoringProblemSeverity max(RefactoringProblemSeverity a, RefactoringProblemSeverity b) => - _maxRefactoringProblemSeverity(a, b); - - @override - String toString() => "RefactoringProblemSeverity.$name"; - - String toJson() => name; -} - -/** - * RemoveContentOverlay - * - * { - * "type": "remove" - * } - */ -class RemoveContentOverlay implements HasToJson { - RemoveContentOverlay(); - - factory RemoveContentOverlay.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - if (json["type"] != "remove") { - throw jsonDecoder.mismatch(jsonPath, "equal " + "remove"); - } - return new RemoveContentOverlay(); - } else { - throw jsonDecoder.mismatch(jsonPath, "RemoveContentOverlay"); - } - } - - Map toJson() { - Map result = {}; - result["type"] = "remove"; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RemoveContentOverlay) { - return true; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, 114870849); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RequestError - * - * { - * "code": RequestErrorCode - * "message": String - * "stackTrace": optional String - * } - */ -class RequestError implements HasToJson { - /** - * A code that uniquely identifies the error that occurred. - */ - RequestErrorCode code; - - /** - * A short description of the error. - */ - String message; - - /** - * The stack trace associated with processing the request, used for debugging - * the server. - */ - String stackTrace; - - RequestError(this.code, this.message, {this.stackTrace}); - - factory RequestError.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - RequestErrorCode code; - if (json.containsKey("code")) { - code = new RequestErrorCode.fromJson(jsonDecoder, jsonPath + ".code", json["code"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "code"); - } - String message; - if (json.containsKey("message")) { - message = jsonDecoder._decodeString(jsonPath + ".message", json["message"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "message"); - } - String stackTrace; - if (json.containsKey("stackTrace")) { - stackTrace = jsonDecoder._decodeString(jsonPath + ".stackTrace", json["stackTrace"]); - } - return new RequestError(code, message, stackTrace: stackTrace); - } else { - throw jsonDecoder.mismatch(jsonPath, "RequestError"); - } - } - - Map toJson() { - Map result = {}; - result["code"] = code.toJson(); - result["message"] = message; - if (stackTrace != null) { - result["stackTrace"] = stackTrace; - } - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RequestError) { - return code == other.code && - message == other.message && - stackTrace == other.stackTrace; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, code.hashCode); - hash = _JenkinsSmiHash.combine(hash, message.hashCode); - hash = _JenkinsSmiHash.combine(hash, stackTrace.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * RequestErrorCode - * - * enum { - * GET_ERRORS_INVALID_FILE - * INVALID_OVERLAY_CHANGE - * INVALID_PARAMETER - * INVALID_REQUEST - * SERVER_ALREADY_STARTED - * SERVER_ERROR - * UNANALYZED_PRIORITY_FILES - * UNKNOWN_REQUEST - * UNSUPPORTED_FEATURE - * } - */ -class RequestErrorCode { - /** - * An "analysis.getErrors" request specified a FilePath which does not match - * a file currently subject to analysis. - */ - static const GET_ERRORS_INVALID_FILE = const RequestErrorCode._("GET_ERRORS_INVALID_FILE"); - - /** - * An analysis.updateContent request contained a ChangeContentOverlay object - * which can't be applied, due to an edit having an offset or length that is - * out of range. - */ - static const INVALID_OVERLAY_CHANGE = const RequestErrorCode._("INVALID_OVERLAY_CHANGE"); - - /** - * One of the method parameters was invalid. - */ - static const INVALID_PARAMETER = const RequestErrorCode._("INVALID_PARAMETER"); - - /** - * A malformed request was received. - */ - static const INVALID_REQUEST = const RequestErrorCode._("INVALID_REQUEST"); - - /** - * The analysis server has already been started (and hence won't accept new - * connections). - * - * This error is included for future expansion; at present the analysis - * server can only speak to one client at a time so this error will never - * occur. - */ - static const SERVER_ALREADY_STARTED = const RequestErrorCode._("SERVER_ALREADY_STARTED"); - - /** - * An internal error occurred in the analysis server. Also see the - * server.error notification. - */ - static const SERVER_ERROR = const RequestErrorCode._("SERVER_ERROR"); - - /** - * An "analysis.setPriorityFiles" request includes one or more files that are - * not being analyzed. - * - * This is a legacy error; it will be removed before the API reaches version - * 1.0. - */ - static const UNANALYZED_PRIORITY_FILES = const RequestErrorCode._("UNANALYZED_PRIORITY_FILES"); - - /** - * A request was received which the analysis server does not recognize, or - * cannot handle in its current configuation. - */ - static const UNKNOWN_REQUEST = const RequestErrorCode._("UNKNOWN_REQUEST"); - - /** - * The analysis server was requested to perform an action which is not - * supported. - * - * This is a legacy error; it will be removed before the API reaches version - * 1.0. - */ - static const UNSUPPORTED_FEATURE = const RequestErrorCode._("UNSUPPORTED_FEATURE"); - - final String name; - - const RequestErrorCode._(this.name); - - factory RequestErrorCode(String name) { - switch (name) { - case "GET_ERRORS_INVALID_FILE": - return GET_ERRORS_INVALID_FILE; - case "INVALID_OVERLAY_CHANGE": - return INVALID_OVERLAY_CHANGE; - case "INVALID_PARAMETER": - return INVALID_PARAMETER; - case "INVALID_REQUEST": - return INVALID_REQUEST; - case "SERVER_ALREADY_STARTED": - return SERVER_ALREADY_STARTED; - case "SERVER_ERROR": - return SERVER_ERROR; - case "UNANALYZED_PRIORITY_FILES": - return UNANALYZED_PRIORITY_FILES; - case "UNKNOWN_REQUEST": - return UNKNOWN_REQUEST; - case "UNSUPPORTED_FEATURE": - return UNSUPPORTED_FEATURE; - } - throw new Exception('Illegal enum value: $name'); - } - - factory RequestErrorCode.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new RequestErrorCode(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "RequestErrorCode"); - } - - @override - String toString() => "RequestErrorCode.$name"; - - String toJson() => name; -} - -/** - * SearchResult - * - * { - * "location": Location - * "kind": SearchResultKind - * "isPotential": bool - * "path": List - * } - */ -class SearchResult implements HasToJson { - /** - * The location of the code that matched the search criteria. - */ - Location location; - - /** - * The kind of element that was found or the kind of reference that was - * found. - */ - SearchResultKind kind; - - /** - * True if the result is a potential match but cannot be confirmed to be a - * match. For example, if all references to a method m defined in some class - * were requested, and a reference to a method m from an unknown class were - * found, it would be marked as being a potential match. - */ - bool isPotential; - - /** - * The elements that contain the result, starting with the most immediately - * enclosing ancestor and ending with the library. - */ - List path; - - SearchResult(this.location, this.kind, this.isPotential, this.path); - - factory SearchResult.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Location location; - if (json.containsKey("location")) { - location = new Location.fromJson(jsonDecoder, jsonPath + ".location", json["location"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "location"); - } - SearchResultKind kind; - if (json.containsKey("kind")) { - kind = new SearchResultKind.fromJson(jsonDecoder, jsonPath + ".kind", json["kind"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "kind"); - } - bool isPotential; - if (json.containsKey("isPotential")) { - isPotential = jsonDecoder._decodeBool(jsonPath + ".isPotential", json["isPotential"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isPotential"); - } - List path; - if (json.containsKey("path")) { - path = jsonDecoder._decodeList(jsonPath + ".path", json["path"], (String jsonPath, Object json) => new Element.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "path"); - } - return new SearchResult(location, kind, isPotential, path); - } else { - throw jsonDecoder.mismatch(jsonPath, "SearchResult"); - } - } - - Map toJson() { - Map result = {}; - result["location"] = location.toJson(); - result["kind"] = kind.toJson(); - result["isPotential"] = isPotential; - result["path"] = path.map((Element value) => value.toJson()).toList(); - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SearchResult) { - return location == other.location && - kind == other.kind && - isPotential == other.isPotential && - _listEqual(path, other.path, (Element a, Element b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, location.hashCode); - hash = _JenkinsSmiHash.combine(hash, kind.hashCode); - hash = _JenkinsSmiHash.combine(hash, isPotential.hashCode); - hash = _JenkinsSmiHash.combine(hash, path.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * SearchResultKind - * - * enum { - * DECLARATION - * INVOCATION - * READ - * READ_WRITE - * REFERENCE - * UNKNOWN - * WRITE - * } - */ -class SearchResultKind { - /** - * The declaration of an element. - */ - static const DECLARATION = const SearchResultKind._("DECLARATION"); - - /** - * The invocation of a function or method. - */ - static const INVOCATION = const SearchResultKind._("INVOCATION"); - - /** - * A reference to a field, parameter or variable where it is being read. - */ - static const READ = const SearchResultKind._("READ"); - - /** - * A reference to a field, parameter or variable where it is being read and - * written. - */ - static const READ_WRITE = const SearchResultKind._("READ_WRITE"); - - /** - * A reference to an element. - */ - static const REFERENCE = const SearchResultKind._("REFERENCE"); - - /** - * Some other kind of search result. - */ - static const UNKNOWN = const SearchResultKind._("UNKNOWN"); - - /** - * A reference to a field, parameter or variable where it is being written. - */ - static const WRITE = const SearchResultKind._("WRITE"); - - final String name; - - const SearchResultKind._(this.name); - - factory SearchResultKind(String name) { - switch (name) { - case "DECLARATION": - return DECLARATION; - case "INVOCATION": - return INVOCATION; - case "READ": - return READ; - case "READ_WRITE": - return READ_WRITE; - case "REFERENCE": - return REFERENCE; - case "UNKNOWN": - return UNKNOWN; - case "WRITE": - return WRITE; - } - throw new Exception('Illegal enum value: $name'); - } - - factory SearchResultKind.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new SearchResultKind(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "SearchResultKind"); - } - - @override - String toString() => "SearchResultKind.$name"; - - String toJson() => name; -} - -/** - * ServerService - * - * enum { - * STATUS - * } - */ -class ServerService { - static const STATUS = const ServerService._("STATUS"); - - final String name; - - const ServerService._(this.name); - - factory ServerService(String name) { - switch (name) { - case "STATUS": - return STATUS; - } - throw new Exception('Illegal enum value: $name'); - } - - factory ServerService.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json is String) { - try { - return new ServerService(json); - } catch(_) { - // Fall through - } - } - throw jsonDecoder.mismatch(jsonPath, "ServerService"); - } - - @override - String toString() => "ServerService.$name"; - - String toJson() => name; -} - -/** - * SourceChange - * - * { - * "message": String - * "edits": List - * "linkedEditGroups": List - * "selection": optional Position - * } - */ -class SourceChange implements HasToJson { - /** - * A human-readable description of the change to be applied. - */ - String message; - - /** - * A list of the edits used to effect the change, grouped by file. - */ - List edits; - - /** - * A list of the linked editing groups used to customize the changes that - * were made. - */ - List linkedEditGroups; - - /** - * The position that should be selected after the edits have been applied. - */ - Position selection; - - SourceChange(this.message, {this.edits, this.linkedEditGroups, this.selection}) { - if (edits == null) { - edits = []; - } - if (linkedEditGroups == null) { - linkedEditGroups = []; - } - } - - factory SourceChange.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String message; - if (json.containsKey("message")) { - message = jsonDecoder._decodeString(jsonPath + ".message", json["message"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "message"); - } - List edits; - if (json.containsKey("edits")) { - edits = jsonDecoder._decodeList(jsonPath + ".edits", json["edits"], (String jsonPath, Object json) => new SourceFileEdit.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "edits"); - } - List linkedEditGroups; - if (json.containsKey("linkedEditGroups")) { - linkedEditGroups = jsonDecoder._decodeList(jsonPath + ".linkedEditGroups", json["linkedEditGroups"], (String jsonPath, Object json) => new LinkedEditGroup.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "linkedEditGroups"); - } - Position selection; - if (json.containsKey("selection")) { - selection = new Position.fromJson(jsonDecoder, jsonPath + ".selection", json["selection"]); - } - return new SourceChange(message, edits: edits, linkedEditGroups: linkedEditGroups, selection: selection); - } else { - throw jsonDecoder.mismatch(jsonPath, "SourceChange"); - } - } - - Map toJson() { - Map result = {}; - result["message"] = message; - result["edits"] = edits.map((SourceFileEdit value) => value.toJson()).toList(); - result["linkedEditGroups"] = linkedEditGroups.map((LinkedEditGroup value) => value.toJson()).toList(); - if (selection != null) { - result["selection"] = selection.toJson(); - } - return result; - } - - /** - * Adds [edit] to the [FileEdit] for the given [file]. - */ - void addEdit(String file, int fileStamp, SourceEdit edit) => - _addEditToSourceChange(this, file, fileStamp, edit); - - /** - * Adds the given [FileEdit]. - */ - void addFileEdit(SourceFileEdit edit) { - edits.add(edit); - } - - /** - * Adds the given [LinkedEditGroup]. - */ - void addLinkedEditGroup(LinkedEditGroup linkedEditGroup) { - linkedEditGroups.add(linkedEditGroup); - } - - /** - * Returns the [FileEdit] for the given [file], maybe `null`. - */ - SourceFileEdit getFileEdit(String file) => - _getChangeFileEdit(this, file); - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SourceChange) { - return message == other.message && - _listEqual(edits, other.edits, (SourceFileEdit a, SourceFileEdit b) => a == b) && - _listEqual(linkedEditGroups, other.linkedEditGroups, (LinkedEditGroup a, LinkedEditGroup b) => a == b) && - selection == other.selection; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, message.hashCode); - hash = _JenkinsSmiHash.combine(hash, edits.hashCode); - hash = _JenkinsSmiHash.combine(hash, linkedEditGroups.hashCode); - hash = _JenkinsSmiHash.combine(hash, selection.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * SourceEdit - * - * { - * "offset": int - * "length": int - * "replacement": String - * "id": optional String - * } - */ -class SourceEdit implements HasToJson { - /** - * Get the result of applying a set of [edits] to the given [code]. Edits are - * applied in the order they appear in [edits]. - */ - static String applySequence(String code, Iterable edits) => - _applySequence(code, edits); - - /** - * The offset of the region to be modified. - */ - int offset; - - /** - * The length of the region to be modified. - */ - int length; - - /** - * The code that is to replace the specified region in the original code. - */ - String replacement; - - /** - * An identifier that uniquely identifies this source edit from other edits - * in the same response. This field is omitted unless a containing structure - * needs to be able to identify the edit for some reason. - * - * For example, some refactoring operations can produce edits that might not - * be appropriate (referred to as potential edits). Such edits will have an - * id so that they can be referenced. Edits in the same response that do not - * need to be referenced will not have an id. - */ - String id; - - SourceEdit(this.offset, this.length, this.replacement, {this.id}); - - factory SourceEdit.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - String replacement; - if (json.containsKey("replacement")) { - replacement = jsonDecoder._decodeString(jsonPath + ".replacement", json["replacement"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "replacement"); - } - String id; - if (json.containsKey("id")) { - id = jsonDecoder._decodeString(jsonPath + ".id", json["id"]); - } - return new SourceEdit(offset, length, replacement, id: id); - } else { - throw jsonDecoder.mismatch(jsonPath, "SourceEdit"); - } - } - - /** - * The end of the region to be modified. - */ - int get end => offset + length; - - Map toJson() { - Map result = {}; - result["offset"] = offset; - result["length"] = length; - result["replacement"] = replacement; - if (id != null) { - result["id"] = id; - } - return result; - } - - /** - * Get the result of applying the edit to the given [code]. - */ - String apply(String code) => _applyEdit(code, this); - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SourceEdit) { - return offset == other.offset && - length == other.length && - replacement == other.replacement && - id == other.id; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, replacement.hashCode); - hash = _JenkinsSmiHash.combine(hash, id.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * SourceFileEdit - * - * { - * "file": FilePath - * "fileStamp": long - * "edits": List - * } - */ -class SourceFileEdit implements HasToJson { - /** - * The file containing the code to be modified. - */ - String file; - - /** - * The modification stamp of the file at the moment when the change was - * created, in milliseconds since the "Unix epoch". Will be -1 if the file - * did not exist and should be created. The client may use this field to make - * sure that the file was not changed since then, so it is safe to apply the - * change. - */ - int fileStamp; - - /** - * A list of the edits used to effect the change. - */ - List edits; - - SourceFileEdit(this.file, this.fileStamp, {this.edits}) { - if (edits == null) { - edits = []; - } - } - - factory SourceFileEdit.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String file; - if (json.containsKey("file")) { - file = jsonDecoder._decodeString(jsonPath + ".file", json["file"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "file"); - } - int fileStamp; - if (json.containsKey("fileStamp")) { - fileStamp = jsonDecoder._decodeInt(jsonPath + ".fileStamp", json["fileStamp"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "fileStamp"); - } - List edits; - if (json.containsKey("edits")) { - edits = jsonDecoder._decodeList(jsonPath + ".edits", json["edits"], (String jsonPath, Object json) => new SourceEdit.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "edits"); - } - return new SourceFileEdit(file, fileStamp, edits: edits); - } else { - throw jsonDecoder.mismatch(jsonPath, "SourceFileEdit"); - } - } - - Map toJson() { - Map result = {}; - result["file"] = file; - result["fileStamp"] = fileStamp; - result["edits"] = edits.map((SourceEdit value) => value.toJson()).toList(); - return result; - } - - /** - * Adds the given [Edit] to the list. - */ - void add(SourceEdit edit) => _addEditForSource(this, edit); - - /** - * Adds the given [Edit]s. - */ - void addAll(Iterable edits) => - _addAllEditsForSource(this, edits); - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is SourceFileEdit) { - return file == other.file && - fileStamp == other.fileStamp && - _listEqual(edits, other.edits, (SourceEdit a, SourceEdit b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, file.hashCode); - hash = _JenkinsSmiHash.combine(hash, fileStamp.hashCode); - hash = _JenkinsSmiHash.combine(hash, edits.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * TypeHierarchyItem - * - * { - * "classElement": Element - * "displayName": optional String - * "memberElement": optional Element - * "superclass": optional int - * "interfaces": List - * "mixins": List - * "subclasses": List - * } - */ -class TypeHierarchyItem implements HasToJson { - /** - * The class element represented by this item. - */ - Element classElement; - - /** - * The name to be displayed for the class. This field will be omitted if the - * display name is the same as the name of the element. The display name is - * different if there is additional type information to be displayed, such as - * type arguments. - */ - String displayName; - - /** - * The member in the class corresponding to the member on which the hierarchy - * was requested. This field will be omitted if the hierarchy was not - * requested for a member or if the class does not have a corresponding - * member. - */ - Element memberElement; - - /** - * The index of the item representing the superclass of this class. This - * field will be omitted if this item represents the class Object. - */ - int superclass; - - /** - * The indexes of the items representing the interfaces implemented by this - * class. The list will be empty if there are no implemented interfaces. - */ - List interfaces; - - /** - * The indexes of the items representing the mixins referenced by this class. - * The list will be empty if there are no classes mixed in to this class. - */ - List mixins; - - /** - * The indexes of the items representing the subtypes of this class. The list - * will be empty if there are no subtypes or if this item represents a - * supertype of the pivot type. - */ - List subclasses; - - TypeHierarchyItem(this.classElement, {this.displayName, this.memberElement, this.superclass, this.interfaces, this.mixins, this.subclasses}) { - if (interfaces == null) { - interfaces = []; - } - if (mixins == null) { - mixins = []; - } - if (subclasses == null) { - subclasses = []; - } - } - - factory TypeHierarchyItem.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - Element classElement; - if (json.containsKey("classElement")) { - classElement = new Element.fromJson(jsonDecoder, jsonPath + ".classElement", json["classElement"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "classElement"); - } - String displayName; - if (json.containsKey("displayName")) { - displayName = jsonDecoder._decodeString(jsonPath + ".displayName", json["displayName"]); - } - Element memberElement; - if (json.containsKey("memberElement")) { - memberElement = new Element.fromJson(jsonDecoder, jsonPath + ".memberElement", json["memberElement"]); - } - int superclass; - if (json.containsKey("superclass")) { - superclass = jsonDecoder._decodeInt(jsonPath + ".superclass", json["superclass"]); - } - List interfaces; - if (json.containsKey("interfaces")) { - interfaces = jsonDecoder._decodeList(jsonPath + ".interfaces", json["interfaces"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "interfaces"); - } - List mixins; - if (json.containsKey("mixins")) { - mixins = jsonDecoder._decodeList(jsonPath + ".mixins", json["mixins"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "mixins"); - } - List subclasses; - if (json.containsKey("subclasses")) { - subclasses = jsonDecoder._decodeList(jsonPath + ".subclasses", json["subclasses"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "subclasses"); - } - return new TypeHierarchyItem(classElement, displayName: displayName, memberElement: memberElement, superclass: superclass, interfaces: interfaces, mixins: mixins, subclasses: subclasses); - } else { - throw jsonDecoder.mismatch(jsonPath, "TypeHierarchyItem"); - } - } - - Map toJson() { - Map result = {}; - result["classElement"] = classElement.toJson(); - if (displayName != null) { - result["displayName"] = displayName; - } - if (memberElement != null) { - result["memberElement"] = memberElement.toJson(); - } - if (superclass != null) { - result["superclass"] = superclass; - } - result["interfaces"] = interfaces; - result["mixins"] = mixins; - result["subclasses"] = subclasses; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is TypeHierarchyItem) { - return classElement == other.classElement && - displayName == other.displayName && - memberElement == other.memberElement && - superclass == other.superclass && - _listEqual(interfaces, other.interfaces, (int a, int b) => a == b) && - _listEqual(mixins, other.mixins, (int a, int b) => a == b) && - _listEqual(subclasses, other.subclasses, (int a, int b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, classElement.hashCode); - hash = _JenkinsSmiHash.combine(hash, displayName.hashCode); - hash = _JenkinsSmiHash.combine(hash, memberElement.hashCode); - hash = _JenkinsSmiHash.combine(hash, superclass.hashCode); - hash = _JenkinsSmiHash.combine(hash, interfaces.hashCode); - hash = _JenkinsSmiHash.combine(hash, mixins.hashCode); - hash = _JenkinsSmiHash.combine(hash, subclasses.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * convertGetterToMethod feedback - */ -class ConvertGetterToMethodFeedback { - @override - bool operator==(other) { - if (other is ConvertGetterToMethodFeedback) { - return true; - } - return false; - } - - @override - int get hashCode { - return 616032599; - } -} -/** - * convertGetterToMethod options - */ -class ConvertGetterToMethodOptions { - @override - bool operator==(other) { - if (other is ConvertGetterToMethodOptions) { - return true; - } - return false; - } - - @override - int get hashCode { - return 488848400; - } -} -/** - * convertMethodToGetter feedback - */ -class ConvertMethodToGetterFeedback { - @override - bool operator==(other) { - if (other is ConvertMethodToGetterFeedback) { - return true; - } - return false; - } - - @override - int get hashCode { - return 165291526; - } -} -/** - * convertMethodToGetter options - */ -class ConvertMethodToGetterOptions { - @override - bool operator==(other) { - if (other is ConvertMethodToGetterOptions) { - return true; - } - return false; - } - - @override - int get hashCode { - return 27952290; - } -} - -/** - * extractLocalVariable feedback - * - * { - * "names": List - * "offsets": List - * "lengths": List - * } - */ -class ExtractLocalVariableFeedback extends RefactoringFeedback implements HasToJson { - /** - * The proposed names for the local variable. - */ - List names; - - /** - * The offsets of the expressions that would be replaced by a reference to - * the variable. - */ - List offsets; - - /** - * The lengths of the expressions that would be replaced by a reference to - * the variable. The lengths correspond to the offsets. In other words, for a - * given expression, if the offset of that expression is offsets[i], then the - * length of that expression is lengths[i]. - */ - List lengths; - - ExtractLocalVariableFeedback(this.names, this.offsets, this.lengths); - - factory ExtractLocalVariableFeedback.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - List names; - if (json.containsKey("names")) { - names = jsonDecoder._decodeList(jsonPath + ".names", json["names"], jsonDecoder._decodeString); - } else { - throw jsonDecoder.missingKey(jsonPath, "names"); - } - List offsets; - if (json.containsKey("offsets")) { - offsets = jsonDecoder._decodeList(jsonPath + ".offsets", json["offsets"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "offsets"); - } - List lengths; - if (json.containsKey("lengths")) { - lengths = jsonDecoder._decodeList(jsonPath + ".lengths", json["lengths"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "lengths"); - } - return new ExtractLocalVariableFeedback(names, offsets, lengths); - } else { - throw jsonDecoder.mismatch(jsonPath, "extractLocalVariable feedback"); - } - } - - Map toJson() { - Map result = {}; - result["names"] = names; - result["offsets"] = offsets; - result["lengths"] = lengths; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExtractLocalVariableFeedback) { - return _listEqual(names, other.names, (String a, String b) => a == b) && - _listEqual(offsets, other.offsets, (int a, int b) => a == b) && - _listEqual(lengths, other.lengths, (int a, int b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, names.hashCode); - hash = _JenkinsSmiHash.combine(hash, offsets.hashCode); - hash = _JenkinsSmiHash.combine(hash, lengths.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * extractLocalVariable options - * - * { - * "name": String - * "extractAll": bool - * } - */ -class ExtractLocalVariableOptions extends RefactoringOptions implements HasToJson { - /** - * The name that the local variable should be given. - */ - String name; - - /** - * True if all occurrences of the expression within the scope in which the - * variable will be defined should be replaced by a reference to the local - * variable. The expression used to initiate the refactoring will always be - * replaced. - */ - bool extractAll; - - ExtractLocalVariableOptions(this.name, this.extractAll); - - factory ExtractLocalVariableOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - bool extractAll; - if (json.containsKey("extractAll")) { - extractAll = jsonDecoder._decodeBool(jsonPath + ".extractAll", json["extractAll"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "extractAll"); - } - return new ExtractLocalVariableOptions(name, extractAll); - } else { - throw jsonDecoder.mismatch(jsonPath, "extractLocalVariable options"); - } - } - - factory ExtractLocalVariableOptions.fromRefactoringParams(EditGetRefactoringParams refactoringParams, Request request) { - return new ExtractLocalVariableOptions.fromJson( - new RequestDecoder(request), "options", refactoringParams.options); - } - - Map toJson() { - Map result = {}; - result["name"] = name; - result["extractAll"] = extractAll; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExtractLocalVariableOptions) { - return name == other.name && - extractAll == other.extractAll; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - hash = _JenkinsSmiHash.combine(hash, extractAll.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * extractMethod feedback - * - * { - * "offset": int - * "length": int - * "returnType": String - * "names": List - * "canCreateGetter": bool - * "parameters": List - * "offsets": List - * "lengths": List - * } - */ -class ExtractMethodFeedback extends RefactoringFeedback implements HasToJson { - /** - * The offset to the beginning of the expression or statements that will be - * extracted. - */ - int offset; - - /** - * The length of the expression or statements that will be extracted. - */ - int length; - - /** - * The proposed return type for the method. - */ - String returnType; - - /** - * The proposed names for the method. - */ - List names; - - /** - * True if a getter could be created rather than a method. - */ - bool canCreateGetter; - - /** - * The proposed parameters for the method. - */ - List parameters; - - /** - * The offsets of the expressions or statements that would be replaced by an - * invocation of the method. - */ - List offsets; - - /** - * The lengths of the expressions or statements that would be replaced by an - * invocation of the method. The lengths correspond to the offsets. In other - * words, for a given expression (or block of statements), if the offset of - * that expression is offsets[i], then the length of that expression is - * lengths[i]. - */ - List lengths; - - ExtractMethodFeedback(this.offset, this.length, this.returnType, this.names, this.canCreateGetter, this.parameters, this.offsets, this.lengths); - - factory ExtractMethodFeedback.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - String returnType; - if (json.containsKey("returnType")) { - returnType = jsonDecoder._decodeString(jsonPath + ".returnType", json["returnType"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "returnType"); - } - List names; - if (json.containsKey("names")) { - names = jsonDecoder._decodeList(jsonPath + ".names", json["names"], jsonDecoder._decodeString); - } else { - throw jsonDecoder.missingKey(jsonPath, "names"); - } - bool canCreateGetter; - if (json.containsKey("canCreateGetter")) { - canCreateGetter = jsonDecoder._decodeBool(jsonPath + ".canCreateGetter", json["canCreateGetter"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "canCreateGetter"); - } - List parameters; - if (json.containsKey("parameters")) { - parameters = jsonDecoder._decodeList(jsonPath + ".parameters", json["parameters"], (String jsonPath, Object json) => new RefactoringMethodParameter.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "parameters"); - } - List offsets; - if (json.containsKey("offsets")) { - offsets = jsonDecoder._decodeList(jsonPath + ".offsets", json["offsets"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "offsets"); - } - List lengths; - if (json.containsKey("lengths")) { - lengths = jsonDecoder._decodeList(jsonPath + ".lengths", json["lengths"], jsonDecoder._decodeInt); - } else { - throw jsonDecoder.missingKey(jsonPath, "lengths"); - } - return new ExtractMethodFeedback(offset, length, returnType, names, canCreateGetter, parameters, offsets, lengths); - } else { - throw jsonDecoder.mismatch(jsonPath, "extractMethod feedback"); - } - } - - Map toJson() { - Map result = {}; - result["offset"] = offset; - result["length"] = length; - result["returnType"] = returnType; - result["names"] = names; - result["canCreateGetter"] = canCreateGetter; - result["parameters"] = parameters.map((RefactoringMethodParameter value) => value.toJson()).toList(); - result["offsets"] = offsets; - result["lengths"] = lengths; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExtractMethodFeedback) { - return offset == other.offset && - length == other.length && - returnType == other.returnType && - _listEqual(names, other.names, (String a, String b) => a == b) && - canCreateGetter == other.canCreateGetter && - _listEqual(parameters, other.parameters, (RefactoringMethodParameter a, RefactoringMethodParameter b) => a == b) && - _listEqual(offsets, other.offsets, (int a, int b) => a == b) && - _listEqual(lengths, other.lengths, (int a, int b) => a == b); - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, returnType.hashCode); - hash = _JenkinsSmiHash.combine(hash, names.hashCode); - hash = _JenkinsSmiHash.combine(hash, canCreateGetter.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameters.hashCode); - hash = _JenkinsSmiHash.combine(hash, offsets.hashCode); - hash = _JenkinsSmiHash.combine(hash, lengths.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * extractMethod options - * - * { - * "returnType": String - * "createGetter": bool - * "name": String - * "parameters": List - * "extractAll": bool - * } - */ -class ExtractMethodOptions extends RefactoringOptions implements HasToJson { - /** - * The return type that should be defined for the method. - */ - String returnType; - - /** - * True if a getter should be created rather than a method. It is an error if - * this field is true and the list of parameters is non-empty. - */ - bool createGetter; - - /** - * The name that the method should be given. - */ - String name; - - /** - * The parameters that should be defined for the method. - * - * It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL - * parameter. It is an error if a REQUIRED or POSITIONAL parameter follows a - * NAMED parameter. - * - * - To change the order and/or update proposed parameters, add parameters - * with the same identifiers as proposed. - * - To add new parameters, omit their identifier. - * - To remove some parameters, omit them in this list. - */ - List parameters; - - /** - * True if all occurrences of the expression or statements should be replaced - * by an invocation of the method. The expression or statements used to - * initiate the refactoring will always be replaced. - */ - bool extractAll; - - ExtractMethodOptions(this.returnType, this.createGetter, this.name, this.parameters, this.extractAll); - - factory ExtractMethodOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String returnType; - if (json.containsKey("returnType")) { - returnType = jsonDecoder._decodeString(jsonPath + ".returnType", json["returnType"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "returnType"); - } - bool createGetter; - if (json.containsKey("createGetter")) { - createGetter = jsonDecoder._decodeBool(jsonPath + ".createGetter", json["createGetter"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "createGetter"); - } - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - List parameters; - if (json.containsKey("parameters")) { - parameters = jsonDecoder._decodeList(jsonPath + ".parameters", json["parameters"], (String jsonPath, Object json) => new RefactoringMethodParameter.fromJson(jsonDecoder, jsonPath, json)); - } else { - throw jsonDecoder.missingKey(jsonPath, "parameters"); - } - bool extractAll; - if (json.containsKey("extractAll")) { - extractAll = jsonDecoder._decodeBool(jsonPath + ".extractAll", json["extractAll"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "extractAll"); - } - return new ExtractMethodOptions(returnType, createGetter, name, parameters, extractAll); - } else { - throw jsonDecoder.mismatch(jsonPath, "extractMethod options"); - } - } - - factory ExtractMethodOptions.fromRefactoringParams(EditGetRefactoringParams refactoringParams, Request request) { - return new ExtractMethodOptions.fromJson( - new RequestDecoder(request), "options", refactoringParams.options); - } - - Map toJson() { - Map result = {}; - result["returnType"] = returnType; - result["createGetter"] = createGetter; - result["name"] = name; - result["parameters"] = parameters.map((RefactoringMethodParameter value) => value.toJson()).toList(); - result["extractAll"] = extractAll; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is ExtractMethodOptions) { - return returnType == other.returnType && - createGetter == other.createGetter && - name == other.name && - _listEqual(parameters, other.parameters, (RefactoringMethodParameter a, RefactoringMethodParameter b) => a == b) && - extractAll == other.extractAll; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, returnType.hashCode); - hash = _JenkinsSmiHash.combine(hash, createGetter.hashCode); - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - hash = _JenkinsSmiHash.combine(hash, parameters.hashCode); - hash = _JenkinsSmiHash.combine(hash, extractAll.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * inlineLocalVariable feedback - * - * { - * "name": String - * "occurrences": int - * } - */ -class InlineLocalVariableFeedback extends RefactoringFeedback implements HasToJson { - /** - * The name of the variable being inlined. - */ - String name; - - /** - * The number of times the variable occurs. - */ - int occurrences; - - InlineLocalVariableFeedback(this.name, this.occurrences); - - factory InlineLocalVariableFeedback.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String name; - if (json.containsKey("name")) { - name = jsonDecoder._decodeString(jsonPath + ".name", json["name"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "name"); - } - int occurrences; - if (json.containsKey("occurrences")) { - occurrences = jsonDecoder._decodeInt(jsonPath + ".occurrences", json["occurrences"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "occurrences"); - } - return new InlineLocalVariableFeedback(name, occurrences); - } else { - throw jsonDecoder.mismatch(jsonPath, "inlineLocalVariable feedback"); - } - } - - Map toJson() { - Map result = {}; - result["name"] = name; - result["occurrences"] = occurrences; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is InlineLocalVariableFeedback) { - return name == other.name && - occurrences == other.occurrences; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, name.hashCode); - hash = _JenkinsSmiHash.combine(hash, occurrences.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} -/** - * inlineLocalVariable options - */ -class InlineLocalVariableOptions { - @override - bool operator==(other) { - if (other is InlineLocalVariableOptions) { - return true; - } - return false; - } - - @override - int get hashCode { - return 540364977; - } -} - -/** - * inlineMethod feedback - * - * { - * "className": optional String - * "methodName": String - * "isDeclaration": bool - * } - */ -class InlineMethodFeedback extends RefactoringFeedback implements HasToJson { - /** - * The name of the class enclosing the method being inlined. If not a class - * member is being inlined, this field will be absent. - */ - String className; - - /** - * The name of the method (or function) being inlined. - */ - String methodName; - - /** - * True if the declaration of the method is selected. So all references - * should be inlined. - */ - bool isDeclaration; - - InlineMethodFeedback(this.methodName, this.isDeclaration, {this.className}); - - factory InlineMethodFeedback.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String className; - if (json.containsKey("className")) { - className = jsonDecoder._decodeString(jsonPath + ".className", json["className"]); - } - String methodName; - if (json.containsKey("methodName")) { - methodName = jsonDecoder._decodeString(jsonPath + ".methodName", json["methodName"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "methodName"); - } - bool isDeclaration; - if (json.containsKey("isDeclaration")) { - isDeclaration = jsonDecoder._decodeBool(jsonPath + ".isDeclaration", json["isDeclaration"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "isDeclaration"); - } - return new InlineMethodFeedback(methodName, isDeclaration, className: className); - } else { - throw jsonDecoder.mismatch(jsonPath, "inlineMethod feedback"); - } - } - - Map toJson() { - Map result = {}; - if (className != null) { - result["className"] = className; - } - result["methodName"] = methodName; - result["isDeclaration"] = isDeclaration; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is InlineMethodFeedback) { - return className == other.className && - methodName == other.methodName && - isDeclaration == other.isDeclaration; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, className.hashCode); - hash = _JenkinsSmiHash.combine(hash, methodName.hashCode); - hash = _JenkinsSmiHash.combine(hash, isDeclaration.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * inlineMethod options - * - * { - * "deleteSource": bool - * "inlineAll": bool - * } - */ -class InlineMethodOptions extends RefactoringOptions implements HasToJson { - /** - * True if the method being inlined should be removed. It is an error if this - * field is true and inlineAll is false. - */ - bool deleteSource; - - /** - * True if all invocations of the method should be inlined, or false if only - * the invocation site used to create this refactoring should be inlined. - */ - bool inlineAll; - - InlineMethodOptions(this.deleteSource, this.inlineAll); - - factory InlineMethodOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - bool deleteSource; - if (json.containsKey("deleteSource")) { - deleteSource = jsonDecoder._decodeBool(jsonPath + ".deleteSource", json["deleteSource"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "deleteSource"); - } - bool inlineAll; - if (json.containsKey("inlineAll")) { - inlineAll = jsonDecoder._decodeBool(jsonPath + ".inlineAll", json["inlineAll"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "inlineAll"); - } - return new InlineMethodOptions(deleteSource, inlineAll); - } else { - throw jsonDecoder.mismatch(jsonPath, "inlineMethod options"); - } - } - - factory InlineMethodOptions.fromRefactoringParams(EditGetRefactoringParams refactoringParams, Request request) { - return new InlineMethodOptions.fromJson( - new RequestDecoder(request), "options", refactoringParams.options); - } - - Map toJson() { - Map result = {}; - result["deleteSource"] = deleteSource; - result["inlineAll"] = inlineAll; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is InlineMethodOptions) { - return deleteSource == other.deleteSource && - inlineAll == other.inlineAll; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, deleteSource.hashCode); - hash = _JenkinsSmiHash.combine(hash, inlineAll.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * rename feedback - * - * { - * "offset": int - * "length": int - * "elementKindName": String - * "oldName": String - * } - */ -class RenameFeedback extends RefactoringFeedback implements HasToJson { - /** - * The offset to the beginning of the name selected to be renamed. - */ - int offset; - - /** - * The length of the name selected to be renamed. - */ - int length; - - /** - * The human-readable description of the kind of element being renamed (such - * as “class” or “function type alias”). - */ - String elementKindName; - - /** - * The old name of the element before the refactoring. - */ - String oldName; - - RenameFeedback(this.offset, this.length, this.elementKindName, this.oldName); - - factory RenameFeedback.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - int offset; - if (json.containsKey("offset")) { - offset = jsonDecoder._decodeInt(jsonPath + ".offset", json["offset"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "offset"); - } - int length; - if (json.containsKey("length")) { - length = jsonDecoder._decodeInt(jsonPath + ".length", json["length"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "length"); - } - String elementKindName; - if (json.containsKey("elementKindName")) { - elementKindName = jsonDecoder._decodeString(jsonPath + ".elementKindName", json["elementKindName"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "elementKindName"); - } - String oldName; - if (json.containsKey("oldName")) { - oldName = jsonDecoder._decodeString(jsonPath + ".oldName", json["oldName"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "oldName"); - } - return new RenameFeedback(offset, length, elementKindName, oldName); - } else { - throw jsonDecoder.mismatch(jsonPath, "rename feedback"); - } - } - - Map toJson() { - Map result = {}; - result["offset"] = offset; - result["length"] = length; - result["elementKindName"] = elementKindName; - result["oldName"] = oldName; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RenameFeedback) { - return offset == other.offset && - length == other.length && - elementKindName == other.elementKindName && - oldName == other.oldName; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, offset.hashCode); - hash = _JenkinsSmiHash.combine(hash, length.hashCode); - hash = _JenkinsSmiHash.combine(hash, elementKindName.hashCode); - hash = _JenkinsSmiHash.combine(hash, oldName.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} - -/** - * rename options - * - * { - * "newName": String - * } - */ -class RenameOptions extends RefactoringOptions implements HasToJson { - /** - * The name that the element should have after the refactoring. - */ - String newName; - - RenameOptions(this.newName); - - factory RenameOptions.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) { - if (json == null) { - json = {}; - } - if (json is Map) { - String newName; - if (json.containsKey("newName")) { - newName = jsonDecoder._decodeString(jsonPath + ".newName", json["newName"]); - } else { - throw jsonDecoder.missingKey(jsonPath, "newName"); - } - return new RenameOptions(newName); - } else { - throw jsonDecoder.mismatch(jsonPath, "rename options"); - } - } - - factory RenameOptions.fromRefactoringParams(EditGetRefactoringParams refactoringParams, Request request) { - return new RenameOptions.fromJson( - new RequestDecoder(request), "options", refactoringParams.options); - } - - Map toJson() { - Map result = {}; - result["newName"] = newName; - return result; - } - - @override - String toString() => JSON.encode(toJson()); - - @override - bool operator==(other) { - if (other is RenameOptions) { - return newName == other.newName; - } - return false; - } - - @override - int get hashCode { - int hash = 0; - hash = _JenkinsSmiHash.combine(hash, newName.hashCode); - return _JenkinsSmiHash.finish(hash); - } -} diff --git a/pkg/analysis_server/bin/fuzz/json.dart b/pkg/analysis_server/bin/fuzz/json.dart deleted file mode 100644 index 462bea826462..000000000000 --- a/pkg/analysis_server/bin/fuzz/json.dart +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -library services.json; - -/** - * Instances of the class [HasToJson] implement [toJson] method that returns - * a JSON presentation. - */ -abstract class HasToJson { - /** - * Returns a JSON presentation of the object. - */ - Map toJson(); -} diff --git a/pkg/analysis_server/bin/fuzz/protocol.dart b/pkg/analysis_server/bin/fuzz/protocol.dart deleted file mode 100644 index b41b28eba62d..000000000000 --- a/pkg/analysis_server/bin/fuzz/protocol.dart +++ /dev/null @@ -1,771 +0,0 @@ -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -library protocol; - -import 'dart:collection'; -import 'dart:convert'; - -import 'json.dart'; - -part 'generated_protocol.dart'; - - -final Map REQUEST_ID_REFACTORING_KINDS = - new HashMap(); - -/** - * Translate the input [map], applying [keyCallback] to all its keys, and - * [valueCallback] to all its values. - */ -mapMap(Map map, {dynamic keyCallback(key), dynamic valueCallback(value)}) { - Map result = {}; - map.forEach((key, value) { - if (keyCallback != null) { - key = keyCallback(key); - } - if (valueCallback != null) { - value = valueCallback(value); - } - result[key] = value; - }); - return result; -} - -/** - * Adds the given [sourceEdits] to the list in [sourceFileEdit]. - */ -void _addAllEditsForSource(SourceFileEdit sourceFileEdit, - Iterable edits) { - edits.forEach(sourceFileEdit.add); -} - -/** - * Adds the given [sourceEdit] to the list in [sourceFileEdit]. - */ -void _addEditForSource(SourceFileEdit sourceFileEdit, SourceEdit sourceEdit) { - List edits = sourceFileEdit.edits; - int index = 0; - while (index < edits.length && edits[index].offset > sourceEdit.offset) { - index++; - } - edits.insert(index, sourceEdit); -} - -/** - * Adds [edit] to the [FileEdit] for the given [file]. - */ -void _addEditToSourceChange(SourceChange change, String file, int fileStamp, - SourceEdit edit) { - SourceFileEdit fileEdit = change.getFileEdit(file); - if (fileEdit == null) { - fileEdit = new SourceFileEdit(file, fileStamp); - change.addFileEdit(fileEdit); - } - fileEdit.add(edit); -} - -/** - * Get the result of applying the edit to the given [code]. Access via - * SourceEdit.apply(). - */ -String _applyEdit(String code, SourceEdit edit) { - if (edit.length < 0) { - throw new RangeError('length is negative'); - } - return code.substring(0, edit.offset) + - edit.replacement + - code.substring(edit.end); -} - -/** - * Get the result of applying a set of [edits] to the given [code]. Edits - * are applied in the order they appear in [edits]. Access via - * SourceEdit.applySequence(). - */ -String _applySequence(String code, Iterable edits) { - edits.forEach((SourceEdit edit) { - code = edit.apply(code); - }); - return code; -} - -/** - * Returns the [FileEdit] for the given [file], maybe `null`. - */ -SourceFileEdit _getChangeFileEdit(SourceChange change, String file) { - for (SourceFileEdit fileEdit in change.edits) { - if (fileEdit.file == file) { - return fileEdit; - } - } - return null; -} - -/** - * Compare the lists [listA] and [listB], using [itemEqual] to compare - * list elements. - */ -bool _listEqual(List listA, List listB, bool itemEqual(a, b)) { - if (listA.length != listB.length) { - return false; - } - for (int i = 0; i < listA.length; i++) { - if (!itemEqual(listA[i], listB[i])) { - return false; - } - } - return true; -} - -/** - * Compare the maps [mapA] and [mapB], using [valueEqual] to compare map - * values. - */ -bool _mapEqual(Map mapA, Map mapB, bool valueEqual(a, b)) { - if (mapA.length != mapB.length) { - return false; - } - for (var key in mapA.keys) { - if (!mapB.containsKey(key)) { - return false; - } - if (!valueEqual(mapA[key], mapB[key])) { - return false; - } - } - return true; -} - -RefactoringProblemSeverity - _maxRefactoringProblemSeverity(RefactoringProblemSeverity a, - RefactoringProblemSeverity b) { - if (b == null) { - return a; - } - if (a == null) { - return b; - } else if (a == RefactoringProblemSeverity.INFO) { - return b; - } else if (a == RefactoringProblemSeverity.WARNING) { - if (b == RefactoringProblemSeverity.ERROR || - b == RefactoringProblemSeverity.FATAL) { - return b; - } - } else if (a == RefactoringProblemSeverity.ERROR) { - if (b == RefactoringProblemSeverity.FATAL) { - return b; - } - } - return a; -} - -/** - * Create a [RefactoringFeedback] corresponding the given [kind]. - */ -RefactoringFeedback _refactoringFeedbackFromJson(JsonDecoder jsonDecoder, - String jsonPath, Object json, Map feedbackJson) { - String requestId; - if (jsonDecoder is ResponseDecoder) { - requestId = jsonDecoder.response.id; - } - RefactoringKind kind = REQUEST_ID_REFACTORING_KINDS.remove(requestId); - if (kind == RefactoringKind.EXTRACT_LOCAL_VARIABLE) { - return new ExtractLocalVariableFeedback.fromJson( - jsonDecoder, - jsonPath, - json); - } - if (kind == RefactoringKind.EXTRACT_METHOD) { - return new ExtractMethodFeedback.fromJson(jsonDecoder, jsonPath, json); - } - if (kind == RefactoringKind.INLINE_LOCAL_VARIABLE) { - return new InlineLocalVariableFeedback.fromJson( - jsonDecoder, - jsonPath, - json); - } - if (kind == RefactoringKind.INLINE_METHOD) { - return new InlineMethodFeedback.fromJson(jsonDecoder, jsonPath, json); - } - if (kind == RefactoringKind.RENAME) { - return new RenameFeedback.fromJson(jsonDecoder, jsonPath, json); - } - return null; -} - - -/** - * Create a [RefactoringOptions] corresponding the given [kind]. - */ -RefactoringOptions _refactoringOptionsFromJson(JsonDecoder jsonDecoder, - String jsonPath, Object json, RefactoringKind kind) { - if (kind == RefactoringKind.EXTRACT_LOCAL_VARIABLE) { - return new ExtractLocalVariableOptions.fromJson( - jsonDecoder, - jsonPath, - json); - } - if (kind == RefactoringKind.EXTRACT_METHOD) { - return new ExtractMethodOptions.fromJson(jsonDecoder, jsonPath, json); - } - if (kind == RefactoringKind.INLINE_METHOD) { - return new InlineMethodOptions.fromJson(jsonDecoder, jsonPath, json); - } - if (kind == RefactoringKind.RENAME) { - return new RenameOptions.fromJson(jsonDecoder, jsonPath, json); - } - return null; -} - -/** - * Type of callbacks used to decode parts of JSON objects. [jsonPath] is a - * string describing the part of the JSON object being decoded, and [value] is - * the part to decode. - */ -typedef Object JsonDecoderCallback(String jsonPath, Object value); - -/** - * Base class for decoding JSON objects. The derived class must implement - * error reporting logic. - */ -abstract class JsonDecoder { - /** - * Create an exception to throw if the JSON object at [jsonPath] fails to - * match the API definition of [expected]. - */ - dynamic mismatch(String jsonPath, String expected); - - /** - * Create an exception to throw if the JSON object at [jsonPath] is missing - * the key [key]. - */ - dynamic missingKey(String jsonPath, String key); - - /** - * Decode a JSON object that is expected to be a boolean. The strings "true" - * and "false" are also accepted. - */ - bool _decodeBool(String jsonPath, Object json) { - if (json is bool) { - return json; - } else if (json == 'true') { - return true; - } else if (json == 'false') { - return false; - } - throw mismatch(jsonPath, 'bool'); - } - - /** - * Decode a JSON object that is expected to be an integer. A string - * representation of an integer is also accepted. - */ - int _decodeInt(String jsonPath, Object json) { - if (json is int) { - return json; - } else if (json is String) { - return int.parse(json, onError: (String value) { - throw mismatch(jsonPath, 'int'); - }); - } - throw mismatch(jsonPath, 'int'); - } - - /** - * Decode a JSON object that is expected to be a List. [decoder] is used to - * decode the items in the list. - */ - List _decodeList(String jsonPath, Object json, - [JsonDecoderCallback decoder]) { - if (json == null) { - return []; - } else if (json is List) { - List result = []; - for (int i = 0; i < json.length; i++) { - result.add(decoder('$jsonPath[$i]', json[i])); - } - return result; - } else { - throw mismatch(jsonPath, 'List'); - } - } - - /** - * Decode a JSON object that is expected to be a Map. [keyDecoder] is used - * to decode the keys, and [valueDecoder] is used to decode the values. - */ - Map _decodeMap(String jsonPath, Object json, {JsonDecoderCallback keyDecoder, - JsonDecoderCallback valueDecoder}) { - if (json == null) { - return {}; - } else if (json is Map) { - Map result = {}; - json.forEach((String key, value) { - Object decodedKey; - if (keyDecoder != null) { - decodedKey = keyDecoder('$jsonPath.key', key); - } else { - decodedKey = key; - } - if (valueDecoder != null) { - value = valueDecoder('$jsonPath[${JSON.encode(key)}]', value); - } - result[decodedKey] = value; - }); - return result; - } else { - throw mismatch(jsonPath, 'Map'); - } - } - - /** - * Decode a JSON object that is expected to be a string. - */ - String _decodeString(String jsonPath, Object json) { - if (json is String) { - return json; - } else { - throw mismatch(jsonPath, 'String'); - } - } - - /** - * Decode a JSON object that is expected to be one of several choices, - * where the choices are disambiguated by the contents of the field [field]. - * [decoders] is a map from each possible string in the field to the decoder - * that should be used to decode the JSON object. - */ - Object _decodeUnion(String jsonPath, Map json, String field, Map decoders) { - if (json is Map) { - if (!json.containsKey(field)) { - throw missingKey(jsonPath, field); - } - var disambiguatorPath = '$jsonPath[${JSON.encode(field)}]'; - String disambiguator = _decodeString(disambiguatorPath, json[field]); - if (!decoders.containsKey(disambiguator)) { - throw mismatch(disambiguatorPath, 'One of: ${decoders.keys.toList()}'); - } - return decoders[disambiguator](jsonPath, json); - } else { - throw mismatch(jsonPath, 'Map'); - } - } -} - - -/** - * Instances of the class [Notification] represent a notification from the - * server about an event that occurred. - */ -class Notification { - /** - * The name of the JSON attribute containing the name of the event that - * triggered the notification. - */ - static const String EVENT = 'event'; - - /** - * The name of the JSON attribute containing the result values. - */ - static const String PARAMS = 'params'; - - /** - * The name of the event that triggered the notification. - */ - final String event; - - /** - * A table mapping the names of notification parameters to their values, or - * null if there are no notification parameters. - */ - Map _params; - - /** - * Initialize a newly created [Notification] to have the given [event] name. - * If [_params] is provided, it will be used as the params; otherwise no - * params will be used. - */ - Notification(this.event, [this._params]); - - /** - * Initialize a newly created instance based upon the given JSON data - */ - factory Notification.fromJson(Map json) { - return new Notification( - json[Notification.EVENT], - json[Notification.PARAMS]); - } - - /** - * Return a table representing the structure of the Json object that will be - * sent to the client to represent this response. - */ - Map toJson() { - Map jsonObject = {}; - jsonObject[EVENT] = event; - if (_params != null) { - jsonObject[PARAMS] = _params; - } - return jsonObject; - } -} - - -/** - * Instances of the class [Request] represent a request that was received. - */ -class Request { - /** - * The name of the JSON attribute containing the id of the request. - */ - static const String ID = 'id'; - - /** - * The name of the JSON attribute containing the name of the request. - */ - static const String METHOD = 'method'; - - /** - * The name of the JSON attribute containing the request parameters. - */ - static const String PARAMS = 'params'; - - /** - * The unique identifier used to identify this request. - */ - final String id; - - /** - * The method being requested. - */ - final String method; - - /** - * A table mapping the names of request parameters to their values. - */ - final Map _params; - - /** - * Initialize a newly created [Request] to have the given [id] and [method] - * name. If [params] is supplied, it is used as the "params" map for the - * request. Otherwise an empty "params" map is allocated. - */ - Request(this.id, this.method, [Map params]) - : _params = params != null ? params : new HashMap(); - - /** - * Return a request parsed from the given [data], or `null` if the [data] is - * not a valid json representation of a request. The [data] is expected to - * have the following format: - * - * { - * 'id': String, - * 'method': methodName, - * 'params': { - * paramter_name: value - * } - * } - * - * where the parameters are optional and can contain any number of name/value - * pairs. - */ - factory Request.fromString(String data) { - try { - var result = JSON.decode(data); - if (result is! Map) { - return null; - } - var id = result[Request.ID]; - var method = result[Request.METHOD]; - if (id is! String || method is! String) { - return null; - } - var params = result[Request.PARAMS]; - if (params is Map || params == null) { - return new Request(id, method, params); - } else { - return null; - } - } catch (exception) { - return null; - } - } - - /** - * Return a table representing the structure of the Json object that will be - * sent to the client to represent this response. - */ - Map toJson() { - Map jsonObject = new HashMap(); - jsonObject[ID] = id; - jsonObject[METHOD] = method; - if (_params.isNotEmpty) { - jsonObject[PARAMS] = _params; - } - return jsonObject; - } -} - -/** - * JsonDecoder for decoding requests. Errors are reporting by throwing a - * [RequestFailure]. - */ -class RequestDecoder extends JsonDecoder { - /** - * The request being deserialized. - */ - final Request _request; - - RequestDecoder(this._request); - - @override - dynamic mismatch(String jsonPath, String expected) { - return new RequestFailure( - new Response.invalidParameter(_request, jsonPath, 'be $expected')); - } - - @override - dynamic missingKey(String jsonPath, String key) { - return new RequestFailure( - new Response.invalidParameter( - _request, - jsonPath, - 'contain key ${JSON.encode(key)}')); - } -} - - -/** - * Instances of the class [RequestFailure] represent an exception that occurred - * during the handling of a request that requires that an error be returned to - * the client. - */ -class RequestFailure implements Exception { - /** - * The response to be returned as a result of the failure. - */ - final Response response; - - /** - * Initialize a newly created exception to return the given reponse. - */ - RequestFailure(this.response); -} - -/** - * Instances of the class [RequestHandler] implement a handler that can handle - * requests and produce responses for them. - */ -abstract class RequestHandler { - /** - * Attempt to handle the given [request]. If the request is not recognized by - * this handler, return `null` so that other handlers will be given a chance - * to handle it. Otherwise, return the response that should be passed back to - * the client. - */ - Response handleRequest(Request request); -} - -/** - * Instances of the class [Response] represent a response to a request. - */ -class Response { - /** - * The [Response] instance that is returned when a real [Response] cannot - * be provided at the moment. - */ - static final Response DELAYED_RESPONSE = new Response('DELAYED_RESPONSE'); - - /** - * The name of the JSON attribute containing the id of the request for which - * this is a response. - */ - static const String ID = 'id'; - - /** - * The name of the JSON attribute containing the error message. - */ - static const String ERROR = 'error'; - - /** - * The name of the JSON attribute containing the result values. - */ - static const String RESULT = 'result'; - - /** - * The unique identifier used to identify the request that this response is - * associated with. - */ - final String id; - - /** - * The error that was caused by attempting to handle the request, or `null` if - * there was no error. - */ - final RequestError error; - - /** - * A table mapping the names of result fields to their values. Should be - * null if there is no result to send. - */ - Map _result; - - /** - * Initialize a newly created instance to represent a response to a request - * with the given [id]. If [_result] is provided, it will be used as the - * result; otherwise an empty result will be used. If an [error] is provided - * then the response will represent an error condition. - */ - Response(this.id, {Map result, this.error}) - : _result = result; - - /** - * Initialize a newly created instance based upon the given JSON data - */ - factory Response.fromJson(Map json) { - try { - Object id = json[Response.ID]; - if (id is! String) { - return null; - } - Object error = json[Response.ERROR]; - RequestError decodedError; - if (error is Map) { - decodedError = - new RequestError.fromJson(new ResponseDecoder(null), '.error', error); - } - Object result = json[Response.RESULT]; - Map decodedResult; - if (result is Map) { - decodedResult = result; - } - return new Response(id, error: decodedError, result: decodedResult); - } catch (exception) { - return null; - } - } - - /** - * Initialize a newly created instance to represent the - * GET_ERRORS_INVALID_FILE error condition. - */ - Response.getErrorsInvalidFile(Request request) - : this( - request.id, - error: new RequestError( - RequestErrorCode.GET_ERRORS_INVALID_FILE, - 'Error during `analysis.getErrors`: invalid file.')); - - /** - * Initialize a newly created instance to represent an error condition caused - * by a [request] that had invalid parameter. [path] is the path to the - * invalid parameter, in Javascript notation (e.g. "foo.bar" means that the - * parameter "foo" contained a key "bar" whose value was the wrong type). - * [expectation] is a description of the type of data that was expected. - */ - Response.invalidParameter(Request request, String path, String expectation) - : this( - request.id, - error: new RequestError( - RequestErrorCode.INVALID_PARAMETER, - "Expected parameter $path to $expectation")); - - /** - * Initialize a newly created instance to represent an error condition caused - * by a malformed request. - */ - Response.invalidRequestFormat() - : this( - '', - error: new RequestError(RequestErrorCode.INVALID_REQUEST, 'Invalid request')); - - /** - * Initialize a newly created instance to represent an error condition caused - * by a `analysis.setPriorityFiles` [request] that includes one or more files - * that are not being analyzed. - */ - Response.unanalyzedPriorityFiles(Request request, String fileNames) - : this( - request.id, - error: new RequestError( - RequestErrorCode.UNANALYZED_PRIORITY_FILES, - "Unanalyzed files cannot be a priority: '$fileNames'")); - - /** - * Initialize a newly created instance to represent an error condition caused - * by a [request] that cannot be handled by any known handlers. - */ - Response.unknownRequest(Request request) - : this( - request.id, - error: new RequestError(RequestErrorCode.UNKNOWN_REQUEST, 'Unknown request')); - - Response.unsupportedFeature(String requestId, String message) - : this( - requestId, - error: new RequestError(RequestErrorCode.UNSUPPORTED_FEATURE, message)); - - /** - * Return a table representing the structure of the Json object that will be - * sent to the client to represent this response. - */ - Map toJson() { - Map jsonObject = new HashMap(); - jsonObject[ID] = id; - if (error != null) { - jsonObject[ERROR] = error.toJson(); - } - if (_result != null) { - jsonObject[RESULT] = _result; - } - return jsonObject; - } -} - -/** - * JsonDecoder for decoding responses from the server. This is intended to be - * used only for testing. Errors are reported using bare [Exception] objects. - */ -class ResponseDecoder extends JsonDecoder { - final Response response; - - ResponseDecoder(this.response); - - @override - dynamic mismatch(String jsonPath, String expected) { - return new Exception('Expected $expected at $jsonPath'); - } - - @override - dynamic missingKey(String jsonPath, String key) { - return new Exception('Missing key $key at $jsonPath'); - } -} - -/** - * Jenkins hash function, optimized for small integers. Borrowed from - * sdk/lib/math/jenkins_smi_hash.dart. - * - * TODO(paulberry): Move to somewhere that can be shared with other code. - */ -class _JenkinsSmiHash { - static int combine(int hash, int value) { - hash = 0x1fffffff & (hash + value); - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } - - static int hash2(a, b) => finish(combine(combine(0, a), b)); - - static int hash4(a, b, c, d) => - finish(combine(combine(combine(combine(0, a), b), c), d)); -} diff --git a/pkg/analysis_server/bin/fuzz/server_manager.dart b/pkg/analysis_server/bin/fuzz/server_manager.dart index c59e18cf76c9..59c1b03ac831 100644 --- a/pkg/analysis_server/bin/fuzz/server_manager.dart +++ b/pkg/analysis_server/bin/fuzz/server_manager.dart @@ -9,10 +9,9 @@ import 'dart:convert'; import 'dart:io'; import 'package:matcher/matcher.dart'; - -import 'byte_stream_channel.dart'; -import 'channel.dart'; -import 'protocol.dart'; +import 'package:analysis_server/src/protocol.dart'; +import 'package:analysis_server/src/channel/channel.dart'; +import 'package:analysis_server/src/channel/byte_stream_channel.dart'; part 'logging_client_channel.dart'; From efd813f9b35525d46a4180040af8fdd3f51a790d Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Fri, 17 Oct 2014 17:34:27 +0000 Subject: [PATCH 30/91] update protocol server getter test BUG= R=paulberry@google.com Review URL: https://codereview.chromium.org//662013002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41176 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analysis_server/test/protocol_server_test.dart | 7 ++++--- pkg/analyzer/test/generated/test_support.dart | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/analysis_server/test/protocol_server_test.dart b/pkg/analysis_server/test/protocol_server_test.dart index 7b704ca3acea..ca6198de4765 100644 --- a/pkg/analysis_server/test/protocol_server_test.dart +++ b/pkg/analysis_server/test/protocol_server_test.dart @@ -243,6 +243,7 @@ abstract class _MyClass {}'''); expect(location.startLine, 2); expect(location.startColumn, 16); } + expect(element.parameters, isNull); expect( element.flags, Element.FLAG_ABSTRACT | Element.FLAG_DEPRECATED | Element.FLAG_PRIVATE); @@ -300,7 +301,7 @@ class A { void test_fromElement_GETTER() { engine.Source source = addSource('/test.dart', ''' class A { - String myGetter => 42; + String get myGetter => 42; }'''); engine.CompilationUnit unit = resolveLibraryUnit(source); engine.PropertyAccessorElement engineElement = @@ -312,10 +313,10 @@ class A { { Location location = element.location; expect(location.file, '/test.dart'); - expect(location.offset, 19); + expect(location.offset, 23); expect(location.length, 'myGetter'.length); expect(location.startLine, 2); - expect(location.startColumn, 10); + expect(location.startColumn, 14); } expect(element.parameters, '()'); expect(element.returnType, 'String'); diff --git a/pkg/analyzer/test/generated/test_support.dart b/pkg/analyzer/test/generated/test_support.dart index 9a8ac18a1bf4..cb249cbef1df 100644 --- a/pkg/analyzer/test/generated/test_support.dart +++ b/pkg/analyzer/test/generated/test_support.dart @@ -18,7 +18,6 @@ import 'package:analyzer/src/generated/java_engine.dart'; import 'package:analyzer/src/generated/java_junit.dart'; import 'package:analyzer/src/generated/scanner.dart'; import 'package:analyzer/src/generated/source.dart'; -import 'package:unittest/unittest.dart' as _ut; /** From 8da06376d302d301488647a7982ceb3c68828360 Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Fri, 17 Oct 2014 17:35:41 +0000 Subject: [PATCH 31/91] update keyword suggestion priorities BUG= R=scheglov@google.com Review URL: https://codereview.chromium.org//666473002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41177 260f80e4-7a28-3924-810f-c04153c831b5 --- .../services/completion/keyword_computer.dart | 27 ++++++++------ .../completion/keyword_computer_test.dart | 36 ++++++++++++------- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/completion/keyword_computer.dart b/pkg/analysis_server/lib/src/services/completion/keyword_computer.dart index 4091f9f2828b..714c483c7130 100644 --- a/pkg/analysis_server/lib/src/services/completion/keyword_computer.dart +++ b/pkg/analysis_server/lib/src/services/completion/keyword_computer.dart @@ -87,12 +87,12 @@ class _KeywordVisitor extends GeneralizingAstVisitor { // Very simplistic suggestion because analyzer will warn if // the extends / with / implements keywords are out of order if (node.extendsClause == null) { - _addSuggestion(Keyword.EXTENDS); + _addSuggestion(Keyword.EXTENDS, CompletionRelevance.HIGH); } else if (node.withClause == null) { - _addSuggestion(Keyword.WITH); + _addSuggestion(Keyword.WITH, CompletionRelevance.HIGH); } if (node.implementsClause == null) { - _addSuggestion(Keyword.IMPLEMENTS); + _addSuggestion(Keyword.IMPLEMENTS, CompletionRelevance.HIGH); } } @@ -120,16 +120,18 @@ class _KeywordVisitor extends GeneralizingAstVisitor { if (firstDirective is! LibraryDirective) { if (firstDirective != null) { if (request.offset <= firstDirective.offset) { - _addSuggestions([Keyword.LIBRARY]); + _addSuggestions([Keyword.LIBRARY], CompletionRelevance.HIGH); } } else { if (request.offset <= startOfDeclarations) { - _addSuggestions([Keyword.LIBRARY]); + _addSuggestions([Keyword.LIBRARY], CompletionRelevance.HIGH); } } } if (request.offset <= startOfDeclarations) { - _addSuggestions([Keyword.EXPORT, Keyword.IMPORT, Keyword.PART]); + _addSuggestions( + [Keyword.EXPORT, Keyword.IMPORT, Keyword.PART], + CompletionRelevance.HIGH); } if (request.offset >= endOfDirectives) { _addSuggestions( @@ -139,7 +141,8 @@ class _KeywordVisitor extends GeneralizingAstVisitor { Keyword.CONST, Keyword.FINAL, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } } @@ -164,12 +167,13 @@ class _KeywordVisitor extends GeneralizingAstVisitor { } } - void _addSuggestion(Keyword keyword) { + void _addSuggestion(Keyword keyword, [CompletionRelevance relevance = + CompletionRelevance.DEFAULT]) { String completion = keyword.syntax; request.suggestions.add( new CompletionSuggestion( CompletionSuggestionKind.KEYWORD, - CompletionRelevance.DEFAULT, + relevance, completion, completion.length, 0, @@ -177,9 +181,10 @@ class _KeywordVisitor extends GeneralizingAstVisitor { false)); } - void _addSuggestions(List keywords) { + void _addSuggestions(List keywords, [CompletionRelevance relevance = + CompletionRelevance.DEFAULT]) { keywords.forEach((Keyword keyword) { - _addSuggestion(keyword); + _addSuggestion(keyword, relevance); }); } diff --git a/pkg/analysis_server/test/services/completion/keyword_computer_test.dart b/pkg/analysis_server/test/services/completion/keyword_computer_test.dart index c7964752e27b..558fbdf899ee 100644 --- a/pkg/analysis_server/test/services/completion/keyword_computer_test.dart +++ b/pkg/analysis_server/test/services/completion/keyword_computer_test.dart @@ -20,7 +20,8 @@ main() { @ReflectiveTestCase() class KeywordComputerTest extends AbstractCompletionTest { - void assertSuggestKeywords(Iterable expectedKeywords) { + void assertSuggestKeywords(Iterable expectedKeywords, + [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) { Set actualKeywords = new Set(); request.suggestions.forEach((CompletionSuggestion s) { if (s.kind == CompletionSuggestionKind.KEYWORD) { @@ -32,7 +33,7 @@ class KeywordComputerTest extends AbstractCompletionTest { fail('Duplicate keyword suggested: ${s.completion}'); } } - expect(s.relevance, equals(CompletionRelevance.DEFAULT)); + expect(s.relevance, equals(relevance)); expect(s.selectionOffset, equals(s.completion.length)); expect(s.selectionLength, equals(0)); expect(s.isDeprecated, equals(false)); @@ -74,26 +75,32 @@ class KeywordComputerTest extends AbstractCompletionTest { Keyword.CONST, Keyword.FINAL, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } test_before_import() { addTestSource('^ import foo;'); expect(computeFast(), isTrue); assertSuggestKeywords( - [Keyword.EXPORT, Keyword.IMPORT, Keyword.LIBRARY, Keyword.PART]); + [Keyword.EXPORT, Keyword.IMPORT, Keyword.LIBRARY, Keyword.PART], + CompletionRelevance.HIGH); } test_class() { addTestSource('class A ^'); expect(computeFast(), isTrue); - assertSuggestKeywords([Keyword.EXTENDS, Keyword.IMPLEMENTS]); + assertSuggestKeywords( + [Keyword.EXTENDS, Keyword.IMPLEMENTS], + CompletionRelevance.HIGH); } test_class_extends() { addTestSource('class A extends foo ^'); expect(computeFast(), isTrue); - assertSuggestKeywords([Keyword.IMPLEMENTS, Keyword.WITH]); + assertSuggestKeywords( + [Keyword.IMPLEMENTS, Keyword.WITH], + CompletionRelevance.HIGH); } test_class_extends_name() { @@ -105,7 +112,7 @@ class KeywordComputerTest extends AbstractCompletionTest { test_class_implements() { addTestSource('class A ^ implements foo'); expect(computeFast(), isTrue); - assertSuggestKeywords([Keyword.EXTENDS]); + assertSuggestKeywords([Keyword.EXTENDS], CompletionRelevance.HIGH); } test_class_implements_name() { @@ -140,7 +147,8 @@ class KeywordComputerTest extends AbstractCompletionTest { Keyword.LIBRARY, Keyword.PART, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } test_function_body() { @@ -199,7 +207,8 @@ class KeywordComputerTest extends AbstractCompletionTest { Keyword.IMPORT, Keyword.PART, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } test_library_name() { @@ -253,7 +262,8 @@ class KeywordComputerTest extends AbstractCompletionTest { Keyword.IMPORT, Keyword.PART, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } test_partial_class() { @@ -270,7 +280,8 @@ class KeywordComputerTest extends AbstractCompletionTest { Keyword.LIBRARY, Keyword.PART, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } test_partial_class2() { @@ -286,7 +297,8 @@ class KeywordComputerTest extends AbstractCompletionTest { Keyword.IMPORT, Keyword.PART, Keyword.TYPEDEF, - Keyword.VAR]); + Keyword.VAR], + CompletionRelevance.HIGH); } void _appendKeywords(StringBuffer msg, Iterable keywords) { From 946d40e8ac541dbde43d99720ac4dc07a20d170b Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Fri, 17 Oct 2014 17:37:37 +0000 Subject: [PATCH 32/91] improve element parameter string returned by local suggestion computer BUG= R=scheglov@google.com Review URL: https://codereview.chromium.org//664523003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41178 260f80e4-7a28-3924-810f-c04153c831b5 --- .../completion/imported_computer.dart | 40 +++++++++++++++---- .../services/completion/local_computer.dart | 23 +++++++++-- .../completion/completion_test_util.dart | 22 ++++++++++ 3 files changed, 74 insertions(+), 11 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/completion/imported_computer.dart b/pkg/analysis_server/lib/src/services/completion/imported_computer.dart index f02ec34b4994..d16b80d4f4dc 100644 --- a/pkg/analysis_server/lib/src/services/completion/imported_computer.dart +++ b/pkg/analysis_server/lib/src/services/completion/imported_computer.dart @@ -196,7 +196,8 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { return new Future.value(false); } - void _addElementSuggestion(Element element, bool typesOnly, bool excludeVoidReturn, CompletionRelevance relevance) { + void _addElementSuggestion(Element element, bool typesOnly, + bool excludeVoidReturn, CompletionRelevance relevance) { if (element is ExecutableElement) { if (element.isOperator) { @@ -246,9 +247,14 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { request.suggestions.add(suggestion); } - void _addElementSuggestions(List elements, bool typesOnly, bool excludeVoidReturn) { + void _addElementSuggestions(List elements, bool typesOnly, + bool excludeVoidReturn) { elements.forEach((Element elem) { - _addElementSuggestion(elem, typesOnly, excludeVoidReturn, CompletionRelevance.DEFAULT); + _addElementSuggestion( + elem, + typesOnly, + excludeVoidReturn, + CompletionRelevance.DEFAULT); }); } @@ -274,7 +280,11 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { if (elem is ClassElement) { classMap[name] = elem; } - _addElementSuggestion(elem, typesOnly, excludeVoidReturn, CompletionRelevance.DEFAULT); + _addElementSuggestion( + elem, + typesOnly, + excludeVoidReturn, + CompletionRelevance.DEFAULT); }); } else { // Exclude elements from prefixed imports @@ -295,7 +305,11 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { if (elem is ClassElement) { classMap[name] = elem; } - _addElementSuggestion(elem, typesOnly, excludeVoidReturn, CompletionRelevance.DEFAULT); + _addElementSuggestion( + elem, + typesOnly, + excludeVoidReturn, + CompletionRelevance.DEFAULT); }); // Build a list of inherited types that are imported @@ -317,8 +331,14 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { _addElementSuggestions(elem.methods, typesOnly, excludeVoidReturn); elem.allSupertypes.forEach((InterfaceType type) { if (visited.add(type.name)) { - _addElementSuggestions(type.accessors, typesOnly, excludeVoidReturn); - _addElementSuggestions(type.methods, typesOnly, excludeVoidReturn); + _addElementSuggestions( + type.accessors, + typesOnly, + excludeVoidReturn); + _addElementSuggestions( + type.methods, + typesOnly, + excludeVoidReturn); } }); } @@ -339,7 +359,11 @@ class _ImportedVisitor extends GeneralizingAstVisitor> { !excludedLibs.contains(element.library) && !completionSet.contains(element.displayName)) { if (!typesOnly || element is ClassElement) { - _addElementSuggestion(element, typesOnly, excludeVoidReturn, CompletionRelevance.LOW); + _addElementSuggestion( + element, + typesOnly, + excludeVoidReturn, + CompletionRelevance.LOW); } } } diff --git a/pkg/analysis_server/lib/src/services/completion/local_computer.dart b/pkg/analysis_server/lib/src/services/completion/local_computer.dart index 3fc11ca0b02e..19e28f46065a 100644 --- a/pkg/analysis_server/lib/src/services/completion/local_computer.dart +++ b/pkg/analysis_server/lib/src/services/completion/local_computer.dart @@ -296,6 +296,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { suggestion.element = _createElement( protocol.ElementKind.CLASS, declaration.name, + null, NO_RETURN_TYPE, declaration.isAbstract, _isDeprecated(declaration.metadata)); @@ -317,6 +318,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { suggestion.element = _createElement( protocol.ElementKind.GETTER, varDecl.name, + '()', fieldDecl.fields.type, false, isDeprecated || _isDeprecated(varDecl.metadata)); @@ -340,6 +342,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { suggestion.element = _createElement( protocol.ElementKind.FUNCTION, declaration.name, + declaration.functionExpression.parameters.toSource(), declaration.returnType, false, _isDeprecated(declaration.metadata)); @@ -356,6 +359,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { suggestion.element = _createElement( protocol.ElementKind.LOCAL_VARIABLE, id, + null, returnType, false, false); @@ -368,21 +372,25 @@ class _LocalVisitor extends GeneralizingAstVisitor { } protocol.ElementKind kind; CompletionSuggestionKind csKind; + String parameters; if (classMbr.isGetter) { kind = protocol.ElementKind.GETTER; csKind = CompletionSuggestionKind.GETTER; + parameters = '()'; } else if (classMbr.isSetter) { if (excludeVoidReturn) { return; } kind = protocol.ElementKind.SETTER; csKind = CompletionSuggestionKind.SETTER; + parameters = '(${classMbr.returnType.toSource()} value)'; } else { if (excludeVoidReturn && _isVoid(classMbr.returnType)) { return; } kind = protocol.ElementKind.METHOD; csKind = CompletionSuggestionKind.METHOD; + parameters = classMbr.parameters.toSource(); } CompletionSuggestion suggestion = _addSuggestion(classMbr.name, csKind, classMbr.returnType, node); @@ -390,6 +398,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { suggestion.element = _createElement( kind, classMbr.name, + parameters, classMbr.returnType, classMbr.isAbstract, _isDeprecated(classMbr.metadata)); @@ -428,8 +437,13 @@ class _LocalVisitor extends GeneralizingAstVisitor { CompletionSuggestion suggestion = _addSuggestion(identifier, CompletionSuggestionKind.PARAMETER, type, null); if (suggestion != null) { - suggestion.element = - _createElement(protocol.ElementKind.PARAMETER, identifier, type, false, false); + suggestion.element = _createElement( + protocol.ElementKind.PARAMETER, + identifier, + null, + type, + false, + false); } } @@ -487,6 +501,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { suggestion.element = _createElement( protocol.ElementKind.TOP_LEVEL_VARIABLE, varDecl.name, + null, varList.type, false, isDeprecated || _isDeprecated(varDecl.metadata)); @@ -509,7 +524,8 @@ class _LocalVisitor extends GeneralizingAstVisitor { * Create a new protocol Element for inclusion in a completion suggestion. */ protocol.Element _createElement(protocol.ElementKind kind, - SimpleIdentifier id, TypeName returnType, bool isAbstract, bool isDeprecated) { + SimpleIdentifier id, String parameters, TypeName returnType, + bool isAbstract, bool isDeprecated) { String name = id.name; int flags = protocol.Element.makeFlags( isAbstract: isAbstract, @@ -519,6 +535,7 @@ class _LocalVisitor extends GeneralizingAstVisitor { kind, name, flags, + parameters: parameters, returnType: _nameForType(returnType)); } diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart index 0931a4e84a2a..3c830a56a919 100644 --- a/pkg/analysis_server/test/services/completion/completion_test_util.dart +++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart @@ -107,6 +107,7 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.CLASS)); expect(element.name, equals(name)); + expect(element.parameters, isNull); expect(element.returnType, isNull); return cs; } @@ -125,6 +126,10 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element.kind, equals(protocol.ElementKind.FUNCTION)); expect(element.name, equals(name)); expect(element.isDeprecated, equals(isDeprecated)); + String param = element.parameters; + expect(param, isNotNull); + expect(param[0], equals('(')); + expect(param[param.length - 1], equals(')')); expect( element.returnType, equals(returnType != null ? returnType : 'dynamic')); @@ -140,6 +145,9 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.GETTER)); expect(element.name, equals(name)); + //TODO (danrubel) getter should have parameters + // but not used in code completion + //expect(element.parameters, '()'); expect( element.returnType, equals(returnType != null ? returnType : 'dynamic')); @@ -155,6 +163,7 @@ class AbstractCompletionTest extends AbstractContextTest { protocol.Element element = cs.element; expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.LIBRARY)); + expect(element.parameters, isNull); expect(element.returnType, isNull); return cs; } else { @@ -174,6 +183,7 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.LOCAL_VARIABLE)); expect(element.name, equals(name)); + expect(element.parameters, isNull); expect( element.returnType, equals(returnType != null ? returnType : 'dynamic')); @@ -194,6 +204,10 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.METHOD)); expect(element.name, equals(name)); + String param = element.parameters; + expect(param, isNotNull); + expect(param[0], equals('(')); + expect(param[param.length - 1], equals(')')); expect( element.returnType, equals(returnType != null ? returnType : 'dynamic')); @@ -210,6 +224,10 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); expect(element.name, equals(name)); + String param = element.parameters; + expect(param, isNotNull); + expect(param[0], equals('(')); + expect(param[param.length - 1], equals(')')); expect(element.returnType, equals(returnType)); return cs; } else { @@ -228,6 +246,7 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.PARAMETER)); expect(element.name, equals(name)); + expect(element.parameters, isNull); expect( element.returnType, equals(returnType != null ? returnType : 'dynamic')); @@ -245,6 +264,8 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.SETTER)); expect(element.name, equals(name)); + // TODO (danrubel) assert setter param + //expect(element.parameters, isNull); expect(element.returnType, isNull); return cs; } @@ -258,6 +279,7 @@ class AbstractCompletionTest extends AbstractContextTest { expect(element, isNotNull); expect(element.kind, equals(protocol.ElementKind.TOP_LEVEL_VARIABLE)); expect(element.name, equals(name)); + expect(element.parameters, isNull); //TODO (danrubel) return type level variable 'type' but not as 'returnType' // expect( // element.returnType, From acbf532add0496affd27c568a18d960c38890811 Mon Sep 17 00:00:00 2001 From: "brianwilkerson@google.com" Date: Fri, 17 Oct 2014 18:35:21 +0000 Subject: [PATCH 33/91] Disable tests to fix the build Review URL: https://codereview.chromium.org//664773002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41180 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/test/task/task_dart_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/analyzer/test/task/task_dart_test.dart b/pkg/analyzer/test/task/task_dart_test.dart index 723216bcf88c..b9e86ecc9290 100644 --- a/pkg/analyzer/test/task/task_dart_test.dart +++ b/pkg/analyzer/test/task/task_dart_test.dart @@ -19,7 +19,7 @@ import '../reflective_tests.dart'; main() { groupSep = ' | '; - runReflectiveTests(BuildUnitElementTaskTest); +// runReflectiveTests(BuildUnitElementTaskTest); } class BuildUnitElementTaskTest extends EngineTestCase { From 7ca5a2ccef702075daed52a12b6589b54593c6fd Mon Sep 17 00:00:00 2001 From: "sigmund@google.com" Date: Fri, 17 Oct 2014 20:38:54 +0000 Subject: [PATCH 34/91] fix typo in error mesage polymer#42 R=jakemac@google.com Review URL: https://codereview.chromium.org//664713003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41181 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/polymer/CHANGELOG.md | 5 ++++- pkg/polymer/lib/src/build/messages.dart | 4 ++-- pkg/polymer/pubspec.yaml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/polymer/CHANGELOG.md b/pkg/polymer/CHANGELOG.md index a1fb4321a7a1..cbe1eb4cc33d 100644 --- a/pkg/polymer/CHANGELOG.md +++ b/pkg/polymer/CHANGELOG.md @@ -1,4 +1,7 @@ -#### 0.15.1-dev +#### 0.15.1+1 + * Fix typo in error message polymer#42 + +#### 0.15.1 * Upgraded to polymer [0.4.2][] * No need to include dart_support.js in your entrypoints anymore. diff --git a/pkg/polymer/lib/src/build/messages.dart b/pkg/polymer/lib/src/build/messages.dart index c4cc934cb711..24b88b649ace 100644 --- a/pkg/polymer/lib/src/build/messages.dart +++ b/pkg/polymer/lib/src/build/messages.dart @@ -551,8 +551,8 @@ To do this, use the following pattern to update your pubspec.yaml: transformers: - polymer: - inline_stylesheets: - web/my_file.css: false + inline_stylesheets: + web/my_file.css: false If you would like to hide this warning and keep it inlined, do the same thing but assign the value to true. diff --git a/pkg/polymer/pubspec.yaml b/pkg/polymer/pubspec.yaml index 9a076c621405..57301bdef6d0 100644 --- a/pkg/polymer/pubspec.yaml +++ b/pkg/polymer/pubspec.yaml @@ -1,5 +1,5 @@ name: polymer -version: 0.15.1 +version: 0.15.1+1 author: Polymer.dart Authors description: > Polymer.dart is a new type of library for the web, built on top of Web From 6266f1d4a0514df9e2f897fec42f2ca478713dbd Mon Sep 17 00:00:00 2001 From: "iposva@google.com" Date: Fri, 17 Oct 2014 21:50:28 +0000 Subject: [PATCH 35/91] - Do not attempt to set parameter types if they were already finalized. R=zra@google.com Review URL: https://codereview.chromium.org//652743007 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41182 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/class_finalizer.cc | 13 +++++++++---- runtime/vm/object.cc | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc index 1030271d747a..45f44b0f7c92 100644 --- a/runtime/vm/class_finalizer.cc +++ b/runtime/vm/class_finalizer.cc @@ -1146,16 +1146,21 @@ void ClassFinalizer::ResolveAndFinalizeSignature(const Class& cls, AbstractType& type = AbstractType::Handle(function.result_type()); // It is not a compile time error if this name does not resolve to a class or // interface. - type = FinalizeType(cls, type, kCanonicalize); + AbstractType& finalized_type = + AbstractType::Handle(FinalizeType(cls, type, kCanonicalize)); // The result type may be malformed or malbounded. - function.set_result_type(type); + if (type.raw() != finalized_type.raw()) { + function.set_result_type(type); + } // Resolve formal parameter types. const intptr_t num_parameters = function.NumParameters(); for (intptr_t i = 0; i < num_parameters; i++) { type = function.ParameterTypeAt(i); - type = FinalizeType(cls, type, kCanonicalize); + finalized_type = FinalizeType(cls, type, kCanonicalize); // The parameter type may be malformed or malbounded. - function.SetParameterTypeAt(i, type); + if (type.raw() != finalized_type.raw()) { + function.SetParameterTypeAt(i, type); + } } } diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc index 03908d9acdf9..ad6f741cc3be 100644 --- a/runtime/vm/object.cc +++ b/runtime/vm/object.cc @@ -5459,6 +5459,8 @@ RawAbstractType* Function::ParameterTypeAt(intptr_t index) const { void Function::SetParameterTypeAt( intptr_t index, const AbstractType& value) const { ASSERT(!value.IsNull()); + // Method extractor parameters are in the VM heap. + ASSERT(kind() != RawFunction::kMethodExtractor); const Array& parameter_types = Array::Handle(raw_ptr()->parameter_types_); parameter_types.SetAt(index, value); } From 4f2faa385cc2b4f1c0cdd19e3c7665e2b8a02d77 Mon Sep 17 00:00:00 2001 From: "danrubel@google.com" Date: Sat, 18 Oct 2014 16:48:28 +0000 Subject: [PATCH 36/91] fix failing test BUG= Review URL: https://codereview.chromium.org//669483002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41183 260f80e4-7a28-3924-810f-c04153c831b5 --- .../test/domain_completion_test.dart | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart index 7ef999e17de8..7413542f59ca 100644 --- a/pkg/analysis_server/test/domain_completion_test.dart +++ b/pkg/analysis_server/test/domain_completion_test.dart @@ -37,13 +37,13 @@ class CompletionTest extends AbstractAnalysisTest { int nextOffset = content.indexOf('^', completionOffset + 1); expect(nextOffset, equals(-1), reason: 'too many ^'); return super.addTestFile( - content.substring(0, completionOffset) - + content.substring(completionOffset + 1)); + content.substring(0, completionOffset) + + content.substring(completionOffset + 1)); } void assertHasResult(CompletionSuggestionKind kind, String completion, - [CompletionRelevance relevance = CompletionRelevance.DEFAULT, - bool isDeprecated = false, bool isPotential = false]) { + [CompletionRelevance relevance = CompletionRelevance.DEFAULT, bool isDeprecated + = false, bool isPotential = false]) { var cs; suggestions.forEach((s) { if (s.completion == completion) { @@ -84,8 +84,8 @@ class CompletionTest extends AbstractAnalysisTest { Future getSuggestions() { return waitForTasksFinished().then((_) { - Request request = new CompletionGetSuggestionsParams(testFile, - completionOffset).toRequest('0'); + Request request = + new CompletionGetSuggestionsParams(testFile, completionOffset).toRequest('0'); Response response = handleSuccessfulRequest(request); var result = new CompletionGetSuggestionsResult.fromResponse(response); completionId = response.id; @@ -165,8 +165,14 @@ class CompletionTest extends AbstractAnalysisTest { return getSuggestions().then((_) { expect(replacementOffset, equals(completionOffset - 2)); expect(replacementLength, equals(2)); - assertHasResult(CompletionSuggestionKind.KEYWORD, 'import'); - assertHasResult(CompletionSuggestionKind.KEYWORD, 'class'); + assertHasResult( + CompletionSuggestionKind.KEYWORD, + 'import', + CompletionRelevance.HIGH); + assertHasResult( + CompletionSuggestionKind.KEYWORD, + 'class', + CompletionRelevance.HIGH); }); } From 40ccf5b5ddd46e154ff651b3463be8f665e912da Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Mon, 20 Oct 2014 07:21:12 +0000 Subject: [PATCH 37/91] Cleanup constant building in IrBuilder. BUG= R=floitsch@google.com Review URL: https://codereview.chromium.org//657373003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41184 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/cps_ir/cps_ir_builder.dart | 62 ++++++++----------- .../cps_ir/cps_ir_builder_visitor.dart | 12 +--- 2 files changed, 29 insertions(+), 45 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 38c036ee37c8..4a8a2ae464d1 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -280,8 +280,7 @@ class IrBuilder { if (initialValue == null) { // TODO(kmillikin): Consider pooling constants. // The initial value is null. - initialValue = makePrimConst(state.constantSystem.createNull()); - add(new ir.LetPrim(initialValue)); + initialValue = buildNullLiteral(); } if (isClosureVariable) { add(new ir.SetClosureVariable(variableElement, @@ -317,46 +316,42 @@ class IrBuilder { return v; } - ir.Constant makeConst(ConstantExpression exp) { - return new ir.Constant(exp); - } - - ir.Constant makePrimConst(PrimitiveConstantValue value) { - return makeConst(new PrimitiveConstantExpression(value)); - } - - // TODO(johnniwinther): Build constants directly through [ConstExp] when these - // are created from analyzer2dart. - ir.Node buildPrimConst(PrimitiveConstantValue constant) { + /// Create a constant literal from [constant]. + ir.Constant buildConstantLiteral(ConstantExpression constant) { assert(isOpen); - ir.Node prim = makePrimConst(constant); + ir.Constant prim = new ir.Constant(constant); add(new ir.LetPrim(prim)); return prim; } + // Helper for building primitive literals. + ir.Constant _buildPrimitiveConstant(PrimitiveConstantValue constant) { + return buildConstantLiteral(new PrimitiveConstantExpression(constant)); + } + /// Create an integer literal. ir.Constant buildIntegerLiteral(int value) { - return buildPrimConst(state.constantSystem.createInt(value)); + return _buildPrimitiveConstant(state.constantSystem.createInt(value)); } /// Create an double literal. ir.Constant buildDoubleLiteral(double value) { - return buildPrimConst(state.constantSystem.createDouble(value)); + return _buildPrimitiveConstant(state.constantSystem.createDouble(value)); } /// Create an bool literal. ir.Constant buildBooleanLiteral(bool value) { - return buildPrimConst(state.constantSystem.createBool(value)); + return _buildPrimitiveConstant(state.constantSystem.createBool(value)); } /// Create an null literal. ir.Constant buildNullLiteral() { - return buildPrimConst(state.constantSystem.createNull()); + return _buildPrimitiveConstant(state.constantSystem.createNull()); } /// Create a string literal. ir.Constant buildStringLiteral(String value) { - return buildPrimConst( + return _buildPrimitiveConstant( state.constantSystem.createString(new ast.DartString.literal(value))); } @@ -392,8 +387,7 @@ class IrBuilder { */ void ensureReturn() { if (!isOpen) return; - ir.Constant constant = makePrimConst(state.constantSystem.createNull()); - add(new ir.LetPrim(constant)); + ir.Constant constant = buildNullLiteral(); add(new ir.InvokeContinuation(state.returnContinuation, [constant])); _current = null; } @@ -461,8 +455,7 @@ class IrBuilder { // Return without a subexpression is translated as if it were return null. assert(isOpen); if (value == null) { - value = makePrimConst(state.constantSystem.createNull()); - add(new ir.LetPrim(value)); + value = buildNullLiteral(); } add(new ir.InvokeContinuation(state.returnContinuation, [value])); _current = null; @@ -507,10 +500,13 @@ class IrBuilder { ir.Continuation thenContinuation = new ir.Continuation([]); ir.Continuation elseContinuation = new ir.Continuation([]); - ir.Constant trueConstant = - makePrimConst(state.constantSystem.createBool(true)); - ir.Constant falseConstant = - makePrimConst(state.constantSystem.createBool(false)); + ir.Constant makeBoolConstant(bool value) { + return new ir.Constant(new PrimitiveConstantExpression( + state.constantSystem.createBool(value))); + } + + ir.Constant trueConstant = makeBoolConstant(true); + ir.Constant falseConstant = makeBoolConstant(false); thenContinuation.body = new ir.LetPrim(falseConstant) ..plug(new ir.InvokeContinuation(joinContinuation, [falseConstant])); @@ -553,17 +549,11 @@ class IrBuilder { // If we don't evaluate the right subexpression, the value of the whole // expression is this constant. - ir.Constant leftBool = emptyBuilder.makePrimConst( - emptyBuilder.state.constantSystem.createBool(isLazyOr)); + ir.Constant leftBool = emptyBuilder.buildBooleanLiteral(isLazyOr); // If we do evaluate the right subexpression, the value of the expression // is a true or false constant. - ir.Constant rightTrue = rightTrueBuilder.makePrimConst( - rightTrueBuilder.state.constantSystem.createBool(true)); - ir.Constant rightFalse = rightFalseBuilder.makePrimConst( - rightFalseBuilder.state.constantSystem.createBool(false)); - emptyBuilder.add(new ir.LetPrim(leftBool)); - rightTrueBuilder.add(new ir.LetPrim(rightTrue)); - rightFalseBuilder.add(new ir.LetPrim(rightFalse)); + ir.Constant rightTrue = rightTrueBuilder.buildBooleanLiteral(true); + ir.Constant rightFalse = rightFalseBuilder.buildBooleanLiteral(false); // Treat the result values as named values in the environment, so they // will be treated as arguments to the join-point continuation. diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart index 6ec3070f9fd7..795de5c5d654 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart @@ -280,9 +280,7 @@ class IrBuilderVisitor extends ResolvedVisitor ir.Primitive condition; if (node.condition == null) { // If the condition is empty then the body is entered unconditionally. - condition = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createBool(true)); - condBuilder.add(new ir.LetPrim(condition)); + condition = condBuilder.buildBooleanLiteral(true); } else { condition = withBuilder(condBuilder, () => visit(node.condition)); } @@ -1196,9 +1194,7 @@ class IrBuilderVisitor extends ResolvedVisitor // Do the modification of the value in getter. ir.Primitive arg; if (ast.Operator.INCREMENT_OPERATORS.contains(op.source)) { - arg = irBuilder.makePrimConst( - irBuilder.state.constantSystem.createInt(1)); - irBuilder.add(new ir.LetPrim(arg)); + arg = irBuilder.buildIntegerLiteral(1); } else { arg = visit(getAssignArgument()); } @@ -1276,9 +1272,7 @@ class IrBuilderVisitor extends ResolvedVisitor if (constant == null) { constant = getConstantForNode(node); } - ir.Primitive primitive = irBuilder.makeConst(constant); - irBuilder.add(new ir.LetPrim(primitive)); - return primitive; + return irBuilder.buildConstantLiteral(constant); } ir.FunctionDefinition makeSubFunction(ast.FunctionExpression node) { From 8d2bc28050ca17279476c5dc28b972c0c4c354b4 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 07:29:22 +0000 Subject: [PATCH 38/91] dart2js: Remove dead code. R=johnniwinther@google.com Review URL: https://codereview.chromium.org//663813004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41185 260f80e4-7a28-3924-810f-c04153c831b5 --- .../js_emitter/old_emitter/emitter.dart | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index ff746b282f03..cd7f93293aa4 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -920,15 +920,13 @@ class OldEmitter implements Emitter { // lazyInitializer(prototype, 'name', fieldName, getterName, initial); // The name is used for error reporting. The 'initial' must be a // closure that constructs the initial value. - jsAst.Expression getter = buildLazyInitializedGetter(element); - jsAst.Expression init = js('#(#,#,#,#,#,#)', + jsAst.Expression init = js('#(#,#,#,#,#)', [js(lazyInitializerName), js(isolateProperties), js.string(element.name), js.string(namer.getNameX(element)), js.string(namer.getLazyInitializerName(element)), - code, - getter == null ? [] : [getter]]); + code]); buffer.write(jsAst.prettyPrint(init, compiler, monitor: compiler.dumpInfoTask)); buffer.write("$N"); @@ -936,11 +934,6 @@ class OldEmitter implements Emitter { } } - jsAst.Expression buildLazyInitializedGetter(VariableElement element) { - // Nothing to do, the 'lazy' function will create the getter. - return null; - } - bool isConstantInlinedOrAlreadyEmitted(ConstantValue constant) { if (constant.isFunction) return true; // Already emitted. if (constant.isPrimitive) return true; // Inlined. From bcf6565dfed1ab9d63cc40c8b6cd4e06b5888144 Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Mon, 20 Oct 2014 10:21:13 +0000 Subject: [PATCH 39/91] Support if-statements in analyzer2dart. BUG= R=sigurdm@google.com Review URL: https://codereview.chromium.org//662363002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41186 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/cps_generator.dart | 17 +++++ pkg/analyzer2dart/test/end2end_test.dart | 51 ++++++++++++++ .../implementation/cps_ir/cps_ir_builder.dart | 69 +++++++++++++++++++ .../cps_ir/cps_ir_builder_visitor.dart | 67 +++--------------- 4 files changed, 145 insertions(+), 59 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart index 94c890d4c90b..c81513aec444 100644 --- a/pkg/analyzer2dart/lib/src/cps_generator.dart +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart @@ -221,4 +221,21 @@ class CpsGeneratingVisitor extends SemanticVisitor return handleBinaryExpression(node, op); } } + + @override + visitIfStatement(IfStatement node) { + ir.Primitive condition = node.condition.accept(this); + + void buildThenPart(IrBuilder thenBuilder) { + withBuilder(thenBuilder, () => node.thenStatement.accept(this)); + } + + void buildElsePart(IrBuilder elseBuilder) { + if (node.elseStatement != null) { + withBuilder(elseBuilder, () => node.elseStatement.accept(this)); + } + } + + irBuilder.buildIf(condition, buildThenPart, buildElsePart); + } } diff --git a/pkg/analyzer2dart/test/end2end_test.dart b/pkg/analyzer2dart/test/end2end_test.dart index c5f8ecf25253..6d2592997606 100644 --- a/pkg/analyzer2dart/test/end2end_test.dart +++ b/pkg/analyzer2dart/test/end2end_test.dart @@ -435,6 +435,57 @@ main(a) { } '''); }); + + test('If statement', () { + checkResult(''' +main(a) { + if (a) { + print(0); + } +} +''', ''' +main(a) { + if (a) { + print(0); + } +} +'''); + + checkResult(''' +main(a) { + if (a) { + print(0); + } else { + print(1); + } +} +''', ''' +main(a) { + a ? print(0) : print(1); +} +'''); + + checkResult(''' +main(a) { + if (a) { + print(0); + } else { + print(1); + print(2); + } +} +''', ''' +main(a) { + if (a) { + print(0); + } else { + print(1); + print(2); + } +} +'''); + + }); } checkResult(String input, [String expectedOutput]) { diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 4a8a2ae464d1..13933850fa14 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -446,6 +446,75 @@ class IrBuilder { (k) => new ir.InvokeStatic(element, selector, k, arguments)); } + /// Creates an if-then-else statement with the provided [condition] where the + /// then and else branches are created throught the [buildThenPart] and + /// [buildElsePart] functions, respectively. + /// + /// An if-then statement is created if [buildElsePart] is a no-op. + void buildIf(ir.Primitive condition, + void buildThenPart(IrBuilder builder), + void buildElsePart(IrBuilder builder)) { + assert(isOpen); + + // The then and else parts are delimited. + IrBuilder thenBuilder = new IrBuilder.delimited(this); + IrBuilder elseBuilder = new IrBuilder.delimited(this); + buildThenPart(thenBuilder); + buildElsePart(elseBuilder); + + // Build the term + // (Result =) let cont then() = [[thenPart]] in + // let cont else() = [[elsePart]] in + // if condition (then, else) + ir.Continuation thenContinuation = new ir.Continuation([]); + ir.Continuation elseContinuation = new ir.Continuation([]); + ir.Expression letElse = + new ir.LetCont(elseContinuation, + new ir.Branch(new ir.IsTrue(condition), + thenContinuation, + elseContinuation)); + ir.Expression letThen = new ir.LetCont(thenContinuation, letElse); + ir.Expression result = letThen; + + ir.Continuation joinContinuation; // Null if there is no join. + if (thenBuilder.isOpen && elseBuilder.isOpen) { + // There is a join-point continuation. Build the term + // 'let cont join(x, ...) = [] in Result' and plug invocations of the + // join-point continuation into the then and else continuations. + JumpCollector jumps = new JumpCollector(null); + jumps.addJump(thenBuilder); + jumps.addJump(elseBuilder); + joinContinuation = createJoin(environment.length, jumps); + result = new ir.LetCont(joinContinuation, result); + } + + // The then or else term root could be null, but not both. If there is + // a join then an InvokeContinuation was just added to both of them. If + // there is no join, then at least one of them is closed and thus has a + // non-null root by the definition of the predicate isClosed. In the + // case that one of them is null, it must be the only one that is open + // and thus contains the new hole in the context. This case is handled + // after the branch is plugged into the current hole. + thenContinuation.body = thenBuilder._root; + elseContinuation.body = elseBuilder._root; + + add(result); + if (joinContinuation == null) { + // At least one subexpression is closed. + if (thenBuilder.isOpen) { + _current = + (thenBuilder._root == null) ? letThen : thenBuilder._current; + environment = thenBuilder.environment; + } else if (elseBuilder.isOpen) { + _current = + (elseBuilder._root == null) ? letElse : elseBuilder._current; + environment = elseBuilder.environment; + } else { + _current = null; + } + } + } + /// Create a return statement `return value;` or `return;` if [value] is /// null. void buildReturn([ir.Primitive value]) { diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart index 795de5c5d654..04413a8dbf52 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart @@ -375,71 +375,20 @@ class IrBuilderVisitor extends ResolvedVisitor return null; } - ir.Primitive visitIf(ast.If node) { - assert(irBuilder.isOpen); + visitIf(ast.If node) { ir.Primitive condition = visit(node.condition); - // The then and else parts are delimited. - IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); - IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); - withBuilder(thenBuilder, () => visit(node.thenPart)); - if (node.hasElsePart) { - withBuilder(elseBuilder, () => visit(node.elsePart)); - } - - // Build the term - // (Result =) let cont then() = [[thenPart]] in - // let cont else() = [[elsePart]] in - // if condition (then, else) - ir.Continuation thenContinuation = new ir.Continuation([]); - ir.Continuation elseContinuation = new ir.Continuation([]); - ir.Expression letElse = - new ir.LetCont(elseContinuation, - new ir.Branch(new ir.IsTrue(condition), - thenContinuation, - elseContinuation)); - ir.Expression letThen = new ir.LetCont(thenContinuation, letElse); - ir.Expression result = letThen; - - ir.Continuation joinContinuation; // Null if there is no join. - if (thenBuilder.isOpen && elseBuilder.isOpen) { - // There is a join-point continuation. Build the term - // 'let cont join(x, ...) = [] in Result' and plug invocations of the - // join-point continuation into the then and else continuations. - JumpCollector jumps = new JumpCollector(null); - jumps.addJump(thenBuilder); - jumps.addJump(elseBuilder); - joinContinuation = - irBuilder.createJoin(irBuilder.environment.length, jumps); - result = new ir.LetCont(joinContinuation, result); + void buildThenPart(IrBuilder thenBuilder) { + withBuilder(thenBuilder, () => visit(node.thenPart)); } - // The then or else term root could be null, but not both. If there is - // a join then an InvokeContinuation was just added to both of them. If - // there is no join, then at least one of them is closed and thus has a - // non-null root by the definition of the predicate isClosed. In the - // case that one of them is null, it must be the only one that is open - // and thus contains the new hole in the context. This case is handled - // after the branch is plugged into the current hole. - thenContinuation.body = thenBuilder._root; - elseContinuation.body = elseBuilder._root; - - irBuilder.add(result); - if (joinContinuation == null) { - // At least one subexpression is closed. - if (thenBuilder.isOpen) { - irBuilder._current = - (thenBuilder._root == null) ? letThen : thenBuilder._current; - irBuilder.environment = thenBuilder.environment; - } else if (elseBuilder.isOpen) { - irBuilder._current = - (elseBuilder._root == null) ? letElse : elseBuilder._current; - irBuilder.environment = elseBuilder.environment; - } else { - irBuilder._current = null; + void buildElsePart(IrBuilder elseBuilder) { + if (node.hasElsePart) { + withBuilder(elseBuilder, () => visit(node.elsePart)); } } - return null; + + irBuilder.buildIf(condition, buildThenPart, buildElsePart); } ir.Primitive visitLabeledStatement(ast.LabeledStatement node) { From dde7963d36c81663e39f0df8ec5b3f8faec2d852 Mon Sep 17 00:00:00 2001 From: "vegorov@google.com" Date: Mon, 20 Oct 2014 11:29:19 +0000 Subject: [PATCH 40/91] Ignore redundant parallel moves when checking if a block is empty. Single predecessor blocks containing nothing but redundant parallel moves can be compacted away. R=zerny@google.com BUG=http://dartbug.com/21302 Review URL: https://codereview.chromium.org//669613003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41187 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/flow_graph_compiler.cc | 4 ++-- runtime/vm/intermediate_language.cc | 10 ++++++++++ runtime/vm/intermediate_language.h | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc index ce31710dcca5..d3258f98b9d1 100644 --- a/runtime/vm/flow_graph_compiler.cc +++ b/runtime/vm/flow_graph_compiler.cc @@ -225,9 +225,9 @@ bool FlowGraphCompiler::ForceSlowPathForStackOverflow() const { static bool IsEmptyBlock(BlockEntryInstr* block) { - return !block->HasParallelMove() && + return !block->HasNonRedundantParallelMove() && block->next()->IsGoto() && - !block->next()->AsGoto()->HasParallelMove(); + !block->next()->AsGoto()->HasNonRedundantParallelMove(); } diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc index ce6092afed47..c9c196855c5c 100644 --- a/runtime/vm/intermediate_language.cc +++ b/runtime/vm/intermediate_language.cc @@ -2566,6 +2566,16 @@ void ParameterInstr::EmitNativeCode(FlowGraphCompiler* compiler) { } +bool ParallelMoveInstr::IsRedundant() const { + for (intptr_t i = 0; i < moves_.length(); i++) { + if (!moves_[i]->IsRedundant()) { + return false; + } + } + return true; +} + + LocationSummary* ParallelMoveInstr::MakeLocationSummary(Isolate* isolate, bool optimizing) const { return NULL; diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h index 923b88334b85..2f46de57edce 100644 --- a/runtime/vm/intermediate_language.h +++ b/runtime/vm/intermediate_language.h @@ -1078,6 +1078,8 @@ class ParallelMoveInstr : public TemplateInstruction<0> { intptr_t NumMoves() const { return moves_.length(); } + bool IsRedundant() const; + virtual void PrintTo(BufferFormatter* f) const; virtual bool MayThrow() const { return false; } @@ -1138,6 +1140,10 @@ class BlockEntryInstr : public Instruction { return parallel_move_ != NULL; } + bool HasNonRedundantParallelMove() const { + return HasParallelMove() && !parallel_move()->IsRedundant(); + } + ParallelMoveInstr* GetParallelMove() { if (parallel_move_ == NULL) { parallel_move_ = new ParallelMoveInstr(); @@ -2167,6 +2173,10 @@ class GotoInstr : public TemplateInstruction<0> { return parallel_move_ != NULL; } + bool HasNonRedundantParallelMove() const { + return HasParallelMove() && !parallel_move()->IsRedundant(); + } + ParallelMoveInstr* GetParallelMove() { if (parallel_move_ == NULL) { parallel_move_ = new ParallelMoveInstr(); From 551b0c6943088829fd606709c750c76b0fe54e7e Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Mon, 20 Oct 2014 12:27:21 +0000 Subject: [PATCH 41/91] Support conditional expressions in analyzer2dart. BUG= R=sigurdm@google.com Review URL: https://codereview.chromium.org//666863002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41188 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/cps_generator.dart | 60 +++++++-------- pkg/analyzer2dart/test/end2end_test.dart | 11 +++ .../implementation/cps_ir/cps_ir_builder.dart | 75 ++++++++++++++++++- .../cps_ir/cps_ir_builder_visitor.dart | 72 +++--------------- 4 files changed, 118 insertions(+), 100 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart index c81513aec444..7acf50452f33 100644 --- a/pkg/analyzer2dart/lib/src/cps_generator.dart +++ b/pkg/analyzer2dart/lib/src/cps_generator.dart @@ -22,7 +22,7 @@ import 'util.dart'; import 'identifier_semantics.dart'; class CpsGeneratingVisitor extends SemanticVisitor - with IrBuilderMixin { + with IrBuilderMixin { final analyzer.Element element; final ElementConverter converter; @@ -30,6 +30,8 @@ class CpsGeneratingVisitor extends SemanticVisitor Source get currentSource => element.source; + ir.Node visit(AstNode node) => node.accept(this); + @override ir.FunctionDefinition visitFunctionDeclaration(FunctionDeclaration node) { analyzer.FunctionElement function = node.element; @@ -48,7 +50,7 @@ class CpsGeneratingVisitor extends SemanticVisitor }); // Visit the body directly to avoid processing the signature as // expressions. - node.functionExpression.body.accept(this); + visit(node.functionExpression.body); return irBuilder.buildFunctionDefinition(element, const []); }); } @@ -56,7 +58,7 @@ class CpsGeneratingVisitor extends SemanticVisitor List visitArguments(ArgumentList argumentList) { List arguments = []; for (Expression argument in argumentList.arguments) { - ir.Definition value = argument.accept(this); + ir.Definition value = build(argument); if (value == null) { giveUp(argument, 'Unsupported argument: $argument (${argument.runtimeType}).'); @@ -70,7 +72,7 @@ class CpsGeneratingVisitor extends SemanticVisitor ir.Primitive visitDynamicInvocation(MethodInvocation node, AccessSemantics semantics) { // TODO(johnniwinther): Handle implicit `this`. - ir.Primitive receiver = semantics.target.accept(this); + ir.Primitive receiver = build(semantics.target); List arguments = visitArguments(node.argumentList); return irBuilder.buildDynamicInvocation( receiver, @@ -131,11 +133,7 @@ class CpsGeneratingVisitor extends SemanticVisitor @override visitReturnStatement(ReturnStatement node) { - if (node.expression != null) { - irBuilder.buildReturn(node.expression.accept(this)); - } else { - irBuilder.buildReturn(); - } + irBuilder.buildReturn(build(node.expression)); } @override @@ -151,10 +149,7 @@ class CpsGeneratingVisitor extends SemanticVisitor @override visitVariableDeclaration(VariableDeclaration node) { // TODO(johnniwinther): Handle constant local variables. - ir.Node initialValue; - if (node.initializer != null) { - initialValue = node.initializer.accept(this); - } + ir.Node initialValue = build(node.initializer); irBuilder.declareLocalVariable( converter.convertElement(node.element), initialValue: initialValue); @@ -170,7 +165,7 @@ class CpsGeneratingVisitor extends SemanticVisitor @override ir.Node visitDynamicAccess(AstNode node, AccessSemantics semantics) { // TODO(johnniwinther): Handle implicit `this`. - ir.Primitive receiver = semantics.target.accept(this); + ir.Primitive receiver = build(semantics.target); return irBuilder.buildDynamicGet(receiver, new Selector.getter(semantics.identifier.name, converter.convertElement(element.library))); @@ -190,20 +185,18 @@ class CpsGeneratingVisitor extends SemanticVisitor ir.Primitive handleBinaryExpression(BinaryExpression node, String op) { - ir.Primitive left = node.leftOperand.accept(this); - ir.Primitive right = node.rightOperand.accept(this); + ir.Primitive left = build(node.leftOperand); + ir.Primitive right = build(node.rightOperand); Selector selector = new Selector.binaryOperator(op); return irBuilder.buildDynamicInvocation( left, selector, [right]); } ir.Node handleLazyOperator(BinaryExpression node, {bool isLazyOr: false}) { - ir.Primitive left = node.leftOperand.accept(this); - ir.Primitive buildRightValue(IrBuilder builder) { - return withBuilder(builder, () => node.rightOperand.accept(this)); - } return irBuilder.buildLogicalOperator( - left, buildRightValue, isLazyOr: isLazyOr); + build(node.leftOperand), + subbuild(node.rightOperand), + isLazyOr: isLazyOr); } @override @@ -223,19 +216,18 @@ class CpsGeneratingVisitor extends SemanticVisitor } @override - visitIfStatement(IfStatement node) { - ir.Primitive condition = node.condition.accept(this); - - void buildThenPart(IrBuilder thenBuilder) { - withBuilder(thenBuilder, () => node.thenStatement.accept(this)); - } - - void buildElsePart(IrBuilder elseBuilder) { - if (node.elseStatement != null) { - withBuilder(elseBuilder, () => node.elseStatement.accept(this)); - } - } + ir.Node visitConditionalExpression(ConditionalExpression node) { + return irBuilder.buildConditional( + build(node.condition), + subbuild(node.thenExpression), + subbuild(node.elseExpression)); + } - irBuilder.buildIf(condition, buildThenPart, buildElsePart); + @override + visitIfStatement(IfStatement node) { + irBuilder.buildIf( + build(node.condition), + subbuild(node.thenStatement), + subbuild(node.elseStatement)); } } diff --git a/pkg/analyzer2dart/test/end2end_test.dart b/pkg/analyzer2dart/test/end2end_test.dart index 6d2592997606..8bdbfffaa2e3 100644 --- a/pkg/analyzer2dart/test/end2end_test.dart +++ b/pkg/analyzer2dart/test/end2end_test.dart @@ -484,7 +484,18 @@ main(a) { } } '''); + }); + test('If statement', () { + checkResult(''' +main(a) { + return a ? print(0) : print(1); +} +''', ''' +main(a) { + return a ? print(0) : print(1); +} +'''); }); } diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart index 13933850fa14..850ff3ccfdc7 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart @@ -127,8 +127,11 @@ class JumpCollector { } } -/// Mixin that provided encapsulated access to nested builders. -class IrBuilderMixin { +/// Function for building nodes in the context of the provided [builder]. +typedef ir.Node SubbuildFunction(IrBuilder builder); + +/// Mixin that provides encapsulated access to nested builders. +abstract class IrBuilderMixin { IrBuilder _irBuilder; /// Execute [f] with [builder] as the current builder. @@ -146,8 +149,20 @@ class IrBuilderMixin { assert(_irBuilder != null); return _irBuilder; } -} + /// Visits the [node]. + ir.Primitive visit(N node); + + /// Builds and returns the [ir.Node] for [node] or returns `null` if + /// [node] is `null`. + ir.Node build(N node) => node != null ? visit(node) : null; + + /// Returns a closure that takes an [IrBuilder] and builds [node] in its + /// context using [build]. + SubbuildFunction subbuild(N node) { + return (IrBuilder builder) => withBuilder(builder, () => build(node)); + } +} /// Shared state between nested builders. class IrBuilderSharedState { @@ -355,6 +370,56 @@ class IrBuilder { state.constantSystem.createString(new ast.DartString.literal(value))); } + /// Creates a conditional expression with the provided [condition] where the + /// then and else expression are created through the [buildThenExpression] and + /// [buildElseExpression] functions, respectively. + ir.Primitive buildConditional( + ir.Primitive condition, + ir.Primitive buildThenExpression(IrBuilder builder), + ir.Primitive buildElseExpression(IrBuilder builder)) { + + assert(isOpen); + + // The then and else expressions are delimited. + IrBuilder thenBuilder = new IrBuilder.delimited(this); + IrBuilder elseBuilder = new IrBuilder.delimited(this); + ir.Primitive thenValue = buildThenExpression(thenBuilder); + ir.Primitive elseValue = buildElseExpression(elseBuilder); + + // Treat the values of the subexpressions as named values in the + // environment, so they will be treated as arguments to the join-point + // continuation. + assert(environment.length == thenBuilder.environment.length); + assert(environment.length == elseBuilder.environment.length); + thenBuilder.environment.extend(null, thenValue); + elseBuilder.environment.extend(null, elseValue); + JumpCollector jumps = new JumpCollector(null); + jumps.addJump(thenBuilder); + jumps.addJump(elseBuilder); + ir.Continuation joinContinuation = + createJoin(environment.length + 1, jumps); + + // Build the term + // let cont join(x, ..., result) = [] in + // let cont then() = [[thenPart]]; join(v, ...) in + // let cont else() = [[elsePart]]; join(v, ...) in + // if condition (then, else) + ir.Continuation thenContinuation = new ir.Continuation([]); + ir.Continuation elseContinuation = new ir.Continuation([]); + thenContinuation.body = thenBuilder._root; + elseContinuation.body = elseBuilder._root; + add(new ir.LetCont(joinContinuation, + new ir.LetCont(thenContinuation, + new ir.LetCont(elseContinuation, + new ir.Branch(new ir.IsTrue(condition), + thenContinuation, + elseContinuation))))); + return (thenValue == elseValue) + ? thenValue + : joinContinuation.parameters.last; + + } + /// Create a get access of [local]. ir.Primitive buildLocalGet(Element local) { assert(isOpen); @@ -447,10 +512,12 @@ class IrBuilder { } /// Creates an if-then-else statement with the provided [condition] where the - /// then and else branches are created throught the [buildThenPart] and + /// then and else branches are created through the [buildThenPart] and /// [buildElsePart] functions, respectively. /// /// An if-then statement is created if [buildElsePart] is a no-op. + // TODO(johnniwinther): Unify implementation with [buildConditional] and + // [_buildLogicalOperator]. void buildIf(ir.Primitive condition, void buildThenPart(IrBuilder builder), void buildElsePart(IrBuilder builder)) { diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart index 04413a8dbf52..9b20c5e6f403 100644 --- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart +++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart @@ -111,7 +111,7 @@ class _GetterElements { * an expression. */ class IrBuilderVisitor extends ResolvedVisitor - with IrBuilderMixin { + with IrBuilderMixin { final Compiler compiler; final SourceFile sourceFile; @@ -376,19 +376,10 @@ class IrBuilderVisitor extends ResolvedVisitor } visitIf(ast.If node) { - ir.Primitive condition = visit(node.condition); - - void buildThenPart(IrBuilder thenBuilder) { - withBuilder(thenBuilder, () => visit(node.thenPart)); - } - - void buildElsePart(IrBuilder elseBuilder) { - if (node.hasElsePart) { - withBuilder(elseBuilder, () => visit(node.elsePart)); - } - } - - irBuilder.buildIf(condition, buildThenPart, buildElsePart); + irBuilder.buildIf( + build(node.condition), + subbuild(node.thenPart), + subbuild(node.elsePart)); } ir.Primitive visitLabeledStatement(ast.LabeledStatement node) { @@ -636,58 +627,16 @@ class IrBuilderVisitor extends ResolvedVisitor ir.Primitive visitReturn(ast.Return node) { assert(irBuilder.isOpen); assert(invariant(node, node.beginToken.value != 'native')); - if (node.expression == null) { - irBuilder.buildReturn(); - } else { - irBuilder.buildReturn(visit(node.expression)); - } + irBuilder.buildReturn(build(node.expression)); return null; } // ==== Expressions ==== ir.Primitive visitConditional(ast.Conditional node) { - assert(irBuilder.isOpen); - ir.Primitive condition = visit(node.condition); - - // The then and else expressions are delimited. - IrBuilder thenBuilder = new IrBuilder.delimited(irBuilder); - IrBuilder elseBuilder = new IrBuilder.delimited(irBuilder); - ir.Primitive thenValue = - withBuilder(thenBuilder, () => visit(node.thenExpression)); - ir.Primitive elseValue = - withBuilder(elseBuilder, () => visit(node.elseExpression)); - - // Treat the values of the subexpressions as named values in the - // environment, so they will be treated as arguments to the join-point - // continuation. - assert(irBuilder.environment.length == thenBuilder.environment.length); - assert(irBuilder.environment.length == elseBuilder.environment.length); - thenBuilder.environment.extend(null, thenValue); - elseBuilder.environment.extend(null, elseValue); - JumpCollector jumps = new JumpCollector(null); - jumps.addJump(thenBuilder); - jumps.addJump(elseBuilder); - ir.Continuation joinContinuation = - irBuilder.createJoin(irBuilder.environment.length + 1, jumps); - - // Build the term - // let cont join(x, ..., result) = [] in - // let cont then() = [[thenPart]]; join(v, ...) in - // let cont else() = [[elsePart]]; join(v, ...) in - // if condition (then, else) - ir.Continuation thenContinuation = new ir.Continuation([]); - ir.Continuation elseContinuation = new ir.Continuation([]); - thenContinuation.body = thenBuilder._root; - elseContinuation.body = elseBuilder._root; - irBuilder.add(new ir.LetCont(joinContinuation, - new ir.LetCont(thenContinuation, - new ir.LetCont(elseContinuation, - new ir.Branch(new ir.IsTrue(condition), - thenContinuation, - elseContinuation))))); - return (thenValue == elseValue) - ? thenValue - : joinContinuation.parameters.last; + return irBuilder.buildConditional( + build(node.condition), + subbuild(node.thenExpression), + subbuild(node.elseExpression)); } // For all simple literals: @@ -1314,5 +1263,4 @@ class DetectClosureVariables extends ast.Visitor { visit(node.body); currentFunction = oldFunction; } - } From d83ee35044c6ffb71af33caa3acadb2f245e4a90 Mon Sep 17 00:00:00 2001 From: "ahe@google.com" Date: Mon, 20 Oct 2014 12:32:50 +0000 Subject: [PATCH 42/91] Terminate browsers in sequence. Also make iframe larger. R=whesse@google.com Review URL: https://codereview.chromium.org//660823002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41189 260f80e4-7a28-3924-810f-c04153c831b5 --- tools/testing/dart/browser_controller.dart | 49 ++++++++++++++++++---- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/tools/testing/dart/browser_controller.dart b/tools/testing/dart/browser_controller.dart index 493866224db5..d17612dbbcaa 100644 --- a/tools/testing/dart/browser_controller.dart +++ b/tools/testing/dart/browser_controller.dart @@ -1223,20 +1223,29 @@ class BrowserTestRunner { } Future terminate() { - var futures = []; + var browsers = []; underTermination = true; testingServer.underTermination = true; for (BrowserTestingStatus status in browserStatus.values) { - futures.add(status.browser.close()); + browsers.add(status.browser); if (status.nextTestTimeout != null) { status.nextTestTimeout.cancel(); status.nextTestTimeout = null; } } - return Future.wait(futures).then((values) { + // Success if all the browsers closed successfully. + bool success = true; + Future closeBrowser(Browser b) { + return b.close().then((bool closeSucceeded) { + if (!closeSucceeded) { + success = false; + } + }); + } + return Future.forEach(browsers, closeBrowser).then((_) { testingServer.errorReportingServer.close(); printDoubleReportingTests(); - return !values.contains(false); + return success; }); } @@ -1429,6 +1438,26 @@ class BrowserTestingServer { String driverContent = """ + Driving page - Dart test driver, number of tests:

- Currently executing:

- Unhandled error:
- +
+ Dart test driver, number of tests:
+ Currently executing:
+ Unhandled error: +
+
+ +
"""; From d0d97593dd579d20febff68892ac1ed74305a326 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 12:52:33 +0000 Subject: [PATCH 43/91] Update try status file. R=ahe@google.com Review URL: https://codereview.chromium.org//660673003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41190 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/try/try.status | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/try/try.status b/tests/try/try.status index 2e5203b5b789..02c8edc945b6 100644 --- a/tests/try/try.status +++ b/tests/try/try.status @@ -31,5 +31,5 @@ poi/serialize_test: SkipByDesign # Uses dart:io. [ $compiler == dart2js ] poi/*: Skip # http://dartbug.com/20031 -[ $runtime == ff || $runtime == chrome || $checked ] +[ $runtime == ff || $checked || ($system == windows && $compiler == dart2js)] web/incremental_compilation_update_test: Slow, Pass From bf339367c337d245dd7d6a34cede56422fe54552 Mon Sep 17 00:00:00 2001 From: "eernst@google.com" Date: Mon, 20 Oct 2014 14:02:23 +0000 Subject: [PATCH 44/91] Introduced hash valued location markers in the spec Introduced support for adding SHA1 hash valued location markers at several levels in the language specification, added long explanatory comment at the end, added a script 'addlatexhash.dart' to normalize spacing, remove comments, etc., in the spec, such that the hash values are more robust than they would be with a direct usage of the spec. The script passes the "dvi2tty test", that is, when the location markers are empty, the resulting *.dvi files created from dartLangSpec.tex and from the version processed by the script give rise to the same text via dvi2tty, i.e., the script does not destroy the spec. R=gbracha@google.com, ricow@google.com Review URL: https://codereview.chromium.org//646003002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41191 260f80e4-7a28-3924-810f-c04153c831b5 --- docs/language/dart.sty | 36 + docs/language/dartLangSpec.tex | 1196 +++++++++++++++++--- tests/standalone/io/addlatexhash_test.dart | 122 ++ tools/addlatexhash.dart | 204 ++++ 4 files changed, 1409 insertions(+), 149 deletions(-) create mode 100644 tests/standalone/io/addlatexhash_test.dart create mode 100644 tools/addlatexhash.dart diff --git a/docs/language/dart.sty b/docs/language/dart.sty index 9f4db5ee5b06..7da3c7b194e8 100644 --- a/docs/language/dart.sty +++ b/docs/language/dart.sty @@ -113,3 +113,39 @@ }{ %\end{verbatim} } + + +% ---------------------------------------------------------------------- +% Support for hash valued Location Markers + +% very small font, to enable 33 char hash values in the margin +\makeatletter +\ifcase \@ptsize \relax% 10pt + \newcommand{\miniscule}{\@setfontsize\miniscule{2}{3}}% \tiny: 5/6 +\or% 11pt + \newcommand{\miniscule}{\@setfontsize\miniscule{3}{4}}% \tiny: 6/7 +\or% 12pt + \newcommand{\miniscule}{\@setfontsize\miniscule{3}{4}}% \tiny: 6/7 +\fi +\makeatother + +% white: location markers should not create visual noise +\definecolor{LMdim}{gray}{1.0} + +% insert location marker showing hash value of following paragraph +\newcommand{\LMHash}[1]{% + \hspace{0pt}\marginpar{\raisebox{0.5ex}{\miniscule{\color{LMdim}#1}}}} + +% support convenient renewcommand +\let\OriginalLMHash\LMHash + +% define a label, and show the associated logical location marker +\newcommand{\LMLabel}[1]{% + \vspace{-\baselineskip}\hspace{0pt}\OriginalLMHash{\raisebox{10ex}{sec:#1}}% + \label{#1}} + +% dummy version of LMHash, always shows the same arbitrary hash value +\renewcommand{\LMHash}[1]{\OriginalLMHash{ba01b04d58c8c4e259764498f823cc65}} + +% ---------------------------------------------------------------------- + diff --git a/docs/language/dartLangSpec.tex b/docs/language/dartLangSpec.tex index 26214764de54..1b22fd8bc2a5 100644 --- a/docs/language/dartLangSpec.tex +++ b/docs/language/dartLangSpec.tex @@ -1,12 +1,19 @@ \documentclass{article} \usepackage{epsfig} +\usepackage{color} \usepackage{dart} \usepackage{bnf} \usepackage{hyperref} +\usepackage{lmodern} \newcommand{\code}[1]{{\sf #1}} \title{Dart Programming Language Specification \\ {\large Version 1.6}} %\author{The Dart Team} + +% For information about Location Markers (and in particular the +% commands \LMHash and \LMLabel), see the long comment at the +% end of this file. + \begin{document} \maketitle \tableofcontents @@ -19,22 +26,26 @@ % begin Ecma boilerplate \section{Scope} -\label{ecmaScope} +\LMLabel{ecmaScope} +\LMHash{} This Ecma standard specifies the syntax and semantics of the Dart programming language. It does not specify the APIs of the Dart libraries except where those library elements are essential to the correct functioning of the language itself (e.g., the existence of class \cd{Object} with methods such as \cd{noSuchMethod}, \cd{runtimeType}). \section{Conformance} -\label{ecmaConformance} +\LMLabel{ecmaConformance} +\LMHash{} A conforming implementation of the Dart programming language must provide and support all the APIs (libraries, types, functions, getters, setters, whether top-level, static, instance or local) mandated in this specification. +\LMHash{} A conforming implementation is permitted to provide additional APIs, but not additional syntax. % A claim of conformance with this Ecma Standard shall specify? \section{Normative References} -\label{ecmaNormativeReferences} +\LMLabel{ecmaNormativeReferences} +\LMHash{} The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies. \begin{enumerate} @@ -46,15 +57,17 @@ \section{Normative References} \section{Terms and Definitions} -\label{ecmaTermsAndDefinitions} +\LMLabel{ecmaTermsAndDefinitions} +\LMHash{} Terms and definitions used in this specification are given in the body of the specification proper. Such terms are highlighted in italics when they are introduced, e.g., `we use the term {\em verbosity} to refer to the property of excess verbiage'. % End Ecma Boilerplate \section{Notation} -\label{notation} +\LMLabel{notation} +\LMHash{} We distinguish between normative and non-normative text. Normative text defines the rules of Dart. It is given in this font. At this time, non-normative text includes: \begin{itemize} \item[Rationale] Discussion of the motivation for language design decisions appears in italics. \rationale{Distinguishing normative from non-normative helps clarify what part of the text is binding and what part is merely expository.} @@ -62,6 +75,7 @@ \section{Notation} \item[Open questions] (\Q{in this font}). Open questions are points that are unsettled in the mind of the author(s) of the specification; expect them (the questions, not the authors; precision is important in a specification) to be eliminated in the final specification. \Q{Should the text at the end of the previous bullet be rationale or commentary?} \end{itemize} +\LMHash{} Reserved words and built-in identifiers (\ref{identifierReference}) appear in {\bf bold}. \commentary{ @@ -69,6 +83,7 @@ \section{Notation} } +\LMHash{} Grammar productions are given in a common variant of EBNF. The left hand side of a production ends with a colon. On the right hand side, alternation is represented by vertical bars, and sequencing by spacing. As in PEGs, alternation gives priority to the left. Optional elements of a production are suffixed by a question mark like so: \code{anElephant?}. Appending a star to an element of a production means it may be repeated zero or more times. Appending a plus sign to a production means it occurs one or more times. Parentheses are used for grouping. Negation is represented by prefixing an element of a production with a tilde. Negation is similar to the not combinator of PEGs, but it consumes input if it matches. In the context of a lexical production it consumes a single character if there is one; otherwise, a single token if there is one. \commentary{ An example would be:} @@ -95,17 +110,23 @@ \section{Notation} % The alternative is to define ~X as anything but X, or to introduce an anthingBut(X) % combinator, such as !X +\LMHash{} Both syntactic and lexical productions are represented this way. Lexical productions are distinguished by their names. The names of lexical productions consist exclusively of upper case characters and underscores. As always, within grammatical productions, whitespace and comments between elements of the production are implicitly ignored unless stated otherwise. Punctuation tokens appear in quotes. +\LMHash{} Productions are embedded, as much as possible, in the discussion of the constructs they represent. +\LMHash{} A list $x_1, \ldots, x_n$ denotes any list of $n$ elements of the form $x_i, 1 \le i \le n$. Note that $n$ may be zero, in which case the list is empty. We use such lists extensively throughout this specification. +\LMHash{} The notation $[x_1, \ldots, x_n/y_1, \ldots, y_n]E$ denotes a copy of $E$ in which all occurrences of $y_i, 1 \le i \le n$ have been replaced with $x_i$. +\LMHash{} We sometimes abuse list or map literal syntax, writing $[o_1, \ldots, o_n]$ (respectively $\{k_1: o_1, \ldots, k_n: o_n\}$) where the $o_i$ and $k_i$ may be objects rather than expressions. The intent is to denote a list (respectively map) object whose elements are the $o_i$ (respectively, whose keys are the $k_i$ and values are the $o_i$). +\LMHash{} The specifications of operators often involve statements such as $x$ $op$ $y$ is equivalent to the method invocation $x.op(y)$. Such specifications should be understood as a shorthand for: \begin{itemize} \item @@ -115,8 +136,10 @@ \section{Notation} \rationale{This circumlocution is required because x.op(y), where op is an operator, is not legal syntax. However, it is painfully verbose, and we prefer to state this rule once here, and use a concise and clear notation across the specification. } +\LMHash{} When the specification refers to the order given in the program, it means the order of the program source code text, scanning left-to-right and top-to-bottom. +\LMHash{} References to otherwise unspecified names of program entities (such as classes or functions) are interpreted as the names of members of the Dart core library. \commentary{ @@ -124,12 +147,15 @@ \section{Notation} } \section{Overview} -\label{overview} +\LMLabel{overview} +\LMHash{} Dart is a class-based, single-inheritance, pure object-oriented programming language. Dart is optionally typed (\ref{types}) and supports reified generics. The run-time type of every object is represented as an instance of class \code{Type} which can be obtained by calling the getter \code{runtimeType} declared in class \code{Object}, the root of the Dart class hierarchy. +\LMHash{} Dart programs may be statically checked. The static checker will report some violations of the type rules, but such violations do not abort compilation or preclude execution. +\LMHash{} Dart programs may be executed in one of two modes: production mode or checked mode. In production mode, static type annotations (\ref{staticTypes}) have absolutely no effect on execution with the exception of reflection and structural type tests. \commentary{ @@ -138,6 +164,7 @@ \section{Overview} Type tests also examine the types in a program explicitly. Nevertheless, in most cases, these will not depend on type annotations. The exceptions to this rule are type tests involving function types. Function types are structural, and so depend on the types declared for their parameters and on their return types. } +\LMHash{} In checked mode, assignments are dynamically checked, and certain violations of the type system raise exceptions at run time. \commentary{ @@ -150,30 +177,36 @@ \section{Overview} \end{enumerate} } +\LMHash{} Dart programs are organized in a modular fashion into units called {\em libraries} (\ref{librariesAndScripts}). Libraries are units of encapsulation and may be mutually recursive. \commentary{However they are not first class. To get multiple copies of a library running simultaneously, one needs to spawn an isolate. } \subsection{Scoping} -\label{scoping} +\LMLabel{scoping} +\LMHash{} A {\em namespace} is a mapping of names denoting declarations to actual declarations. Let $NS$ be a namespace. We say that a name $n$ {\em is in }$NS$ if $n$ is a key of $NS$. We say a declaration $d$ {\em is in }$NS$ if a key of $NS$ maps to $d$. +\LMHash{} A scope $S_0$ induces a namespace $NS_0$ that maps the simple name of each variable, type or function declaration $d$ declared in $S_0$ to $d$. Labels are not included in the induced namespace of a scope; instead they have their own dedicated namespace. \commentary{It is therefore impossible, e.g., to define a class that declares a method and a field with the same name in Dart. Similarly one cannot declare a top-level function with the same name as a library variable or class. } +\LMHash{} It is a compile-time error if there is more than one entity with the same name declared in the same scope. \commentary{ In some cases, the name of the declaration differs from the identifier used to declare it. Setters have names that are distinct from the corresponding getters because they always have an = automatically added at the end, and unary minus has the special name unary-. } +\LMHash{} Dart is lexically scoped. Scopes may nest. A name or declaration $d$ is {\em available in scope} $S$ if $d$ is in the namespace induced by $S$ or if $d$ is available in the lexically enclosing scope of $S$. We say that a name or declaration $d$ is {\em in scope} if $d$ is available in the current scope. +\LMHash{} If a declaration $d$ named $n$ is in the namespace induced by a scope $S$, then $d$ {\em hides} any declaration named $n$ that is available in the lexically enclosing scope of $S$. \commentary { @@ -187,6 +220,7 @@ \subsection{Scoping} \} \end{dartCode} +\LMHash{} Names may be introduced into a scope by declarations within the scope or by other mechanisms such as imports or inheritance. \rationale{ @@ -227,17 +261,20 @@ \subsection{Scoping} \subsection{Privacy} -\label{privacy} +\LMLabel{privacy} +\LMHash{} Dart supports two levels of privacy: {\em public} and {\em private}. A declaration is {\em private} iff its name is private, otherwise it is {\em public.} A name $q$ is private iff any one of the identifiers that comprise $q$ is private, otherwise it is {\em public.} An identifier is private iff it begins with an underscore (the \_ character) otherwise it is {\em public.} +\LMHash{} A declaration $m$ is {\em accessible to library $L$} if $m$ is declared in $L$ or if $m$ is public. \commentary{ This means private declarations may only be accessed within the library in which they are declared. } +\LMHash{} Privacy applies only to declarations within a library, not to library declarations themselves. \rationale{Libraries do not reference each other by name and so the idea of a private library is meaningless. @@ -250,16 +287,20 @@ \subsection{Privacy} \subsection{Concurrency} +\LMHash{} Dart code is always single threaded. There is no shared-state concurrency in Dart. Concurrency is supported via actor-like entities called {\em isolates}. +\LMHash{} An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (\ref{sendingMessages}). No state is ever shared between isolates. Isolates are created by spawning (\ref{spawningAnIsolate}). \section{Errors and Warnings} -\label{errorsAndWarnings} +\LMLabel{errorsAndWarnings} +\LMHash{} This specification distinguishes between several kinds of errors. +\LMHash{} {\em Compile-time errors} are errors that preclude execution. A compile-time error must be reported by a Dart compiler before the erroneous code is executed. \rationale{A Dart implementation has considerable freedom as to when compilation takes place. Modern programming language implementations often interleave compilation and execution, so that compilation of a method may be delayed, e.g., until it is first invoked. Consequently, compile-time errors in a method $m$ may be reported as late as the time of $m$'s first invocation. @@ -269,6 +310,7 @@ \section{Errors and Warnings} In a development environment a compiler should of course report compilation errors eagerly so as to best serve the programmer. } +\LMHash{} If an uncaught compile-time error occurs within the code of a running isolate $A$, $A$ is immediately suspended. The only circumstance where a compile-time error could be caught would be via code run reflectively, where the mirror system can catch it. \rationale{Typically, once a compile-time error is thrown and $A$ is suspended, $A$ will then be terminated. However, this depends on the overall environment. @@ -276,18 +318,23 @@ \section{Errors and Warnings} a program that interfaces between the engine and the surrounding computing environment. The embedder will often be a web browser, but need not be; it may be a C++ program on the server for example. When an isolate fails with a compile-time error as described above, control returns to the embedder, along with an exception describing the problem. This is necessary so that the embedder can clean up resources etc. It is then the embedder's decision whether to terminate the isolate or not. } +\LMHash{} {\em Static warnings} are those errors reported by the static checker. They have no effect on execution. Many, but not all, static warnings relate to types, in which case they are known as {\em static type warnings.} Static warnings must be provided by Dart compilers used during development such as those incorporated in IDEs or otherwise intended to be used by developers for developing code. Compilers that are part of runtime execution environments such as virtual machines should not issue static warnings. +\LMHash{} {\em Dynamic type errors} are type errors reported in checked mode. +\LMHash{} {\em Run-time errors} are exceptions raised during execution. Whenever we say that an exception $ex$ is {\em raised} or {\em thrown}, we mean that a throw expression (\ref{throw}) of the form: \code{\THROW{} $ex$;} was implicitly evaluated or that a rethrow statement (\ref{rethrow}) of the form \code{\RETHROW} was executed. When we say that {\em a} $C$ {\em is thrown}, where $C$ is a class, we mean that an instance of class $C$ is thrown. +\LMHash{} If an uncaught exception is thrown by a running isolate $A$, $A$ is immediately suspended. \section{Variables} -\label{variables} +\LMLabel{variables} +\LMHash{} Variables are storage locations in memory. \begin{grammar} @@ -325,19 +372,25 @@ \section{Variables} \end{grammar} +\LMHash{} A variable that has not been initialized has the initial value \NULL{} (\ref{null}). +\LMHash{} A variable declared at the top-level of a library is referred to as either a {\em library variable} or simply a top-level variable. +\LMHash{} A {\em static variable} is a variable that is not associated with a particular instance, but rather with an entire library or class. Static variables include library variables and class variables. Class variables are variables whose declaration is immediately nested inside a class declaration and includes the modifier \STATIC{}. A library variable is implicitly static. It is a compile-time error to preface a top-level variable declaration with the built-in identifier (\ref{identifierReference}) \STATIC{}. +\LMHash{} Static variable declarations are initialized lazily. When a static variable $v$ is read, iff it has not yet been assigned, it is set to the result of evaluating its initializer. The precise rules are given in section \ref{evaluationOfImplicitVariableGetters}. \rationale{The lazy semantics are given because we do not want a language where one tends to define expensive initialization computations, causing long application startup times. This is especially crucial for Dart, which must support the coding of client applications. } +\LMHash{} A {\em final variable} is a variable whose binding is fixed upon initialization; a final variable $v$ will always refer to the same object after $v$ has been initialized. The declaration of a final variable must include the modifier \FINAL{}. +\LMHash{} It is a static warning if a final instance variable that has been initialized at its point of declaration is also initialized in a constructor. % It is a static warning if a final instance variable that has been initialized by means of an initializing formal of a constructor is also initialized elsewhere in the same constructor. It is a compile-time error if a local variable $v$ is final and $v$ is not initialized at its point of declaration. @@ -351,20 +404,27 @@ \section{Variables} Taken as a whole, the rules ensure that any attempt to execute multiple assignments to a final variable will yield static warnings and repeated assignments will fail dynamically. } +\LMHash{} A {\em constant variable} is a variable whose declaration includes the modifier \CONST{}. A constant variable is always implicitly final. A constant variable must be initialized to a compile-time constant (\ref{constants}) or a compile-time error occurs. +\LMHash{} We say that a variable $v$ is {\em potentially mutated} in some scope $s$ if $v$ is not final or constant and an assignment to $v$ occurs in $s$. +\LMHash{} If a variable declaration does not explicitly specify a type, the type of the declared variable(s) is \DYNAMIC{}, the unknown type (\ref{typeDynamic}). +\LMHash{} A variable is {\em mutable} if it is not final. Static and instance variable declarations always induce implicit getters. If the variable is mutable it also introduces an implicit setter. The scope into which the implicit getters and setters are introduced depends on the kind of variable declaration involved. +\LMHash{} A library variable introduces a getter into the top level scope of the enclosing library. A static class variable introduces a static getter into the immediately enclosing class. An instance variable introduces an instance getter into the immediately enclosing class. +\LMHash{} A mutable library variable introduces a setter into the top level scope of the enclosing library. A mutable static class variable introduces a static setter into the immediately enclosing class. A mutable instance variable introduces an instance setter into the immediately enclosing class. +\LMHash{} Local variables are added to the innermost enclosing scope. They do not induce getters and setters. A local variable may only be referenced at a source code location that is after its initializer, if any, is complete, or a compile-time error occurs. The error may be reported either at the point where the premature reference occurs, or at the variable declaration. \rationale { @@ -422,8 +482,10 @@ \section{Variables} % the grammar does not support local getters and setters. The local var discussion does not seem to mention getters and setters based semantics. It simply discusses the creation of the variable, not its access. Access is either assignment or identifiers. Identifiers ignore the getter story. +\LMHash{} The following rules apply to all static and instance variables. +\LMHash{} A variable declaration of one of the forms \code{$T$ $v$;}, \code{$T$ $v$ = $e$;} , \code{\CONST{} $T$ $v$ = $e$;}, \code{\FINAL{} $T$ $v$;} or \code{\FINAL{} $T$ $v$ = $e$;} always induces an implicit getter function (\ref{getters}) with signature $T$ \GET{} $v$ @@ -431,18 +493,21 @@ \section{Variables} whose invocation evaluates as described below (\ref{evaluationOfImplicitVariableGetters}). +\LMHash{} A variable declaration of one of the forms \code{\VAR{} $v$;}, \code{\VAR{} $v$ = $e$;} , \code{\CONST{} $v$ = $e$;}, \code{\FINAL{} $v$;} or \code{\FINAL{} $v$ = $e$;} always induces an implicit getter function with signature \GET{} $v$ whose invocation evaluates as described below (\ref{evaluationOfImplicitVariableGetters}). +\LMHash{} A non-final variable declaration of the form \code{{} $T$ $v$;} or the form \code{$T$ $v$ = $e$;} always induces an implicit setter function (\ref{setters}) with signature \VOID{} \SET{} $v=(T$ $x)$ whose execution sets the value of $v$ to the incoming argument $x$. +\LMHash{} A non-final variable declaration of the form \code{\VAR{} $v$;} or the form \code{\VAR{} $v$ = $e$;} always induces an implicit setter function with signature \SET{} $v=(x)$ @@ -451,8 +516,9 @@ \section{Variables} \subsection{Evaluation of Implicit Variable Getters} -\label{evaluationOfImplicitVariableGetters} +\LMLabel{evaluationOfImplicitVariableGetters} +\LMHash{} Let $d$ be the declaration of a static or instance variable $v$. If $d$ is an instance variable, then the invocation of the implicit getter of $v$ evaluates to the value stored in $v$. If $d$ is a static or library variable then the implicit getter method of $v$ executes as follows: \begin{itemize} @@ -467,8 +533,9 @@ \subsection{Evaluation of Implicit Variable Getters} \section{Functions} -\label{functions} +\LMLabel{functions} +\LMHash{} Functions abstract over executable actions. \begin{grammar} @@ -491,8 +558,10 @@ \section{Functions} \end{grammar} +\LMHash{} Functions include function declarations (\ref{functionDeclarations}), methods (\ref{instanceMethods}, \ref{staticMethods}), getters (\ref{getters}), setters (\ref{setters}), constructors (\ref{constructors}) and function literals (\ref{functionExpressions}). +\LMHash{} All functions have a signature and a body. The signature describes the formal parameters of the function, and possibly its name and return type. A function body is either: \begin{itemize} \item A block statement (\ref{blocks}) containing the statements (\ref{statements}) executed by the function, optionally marked with one of the modifiers: \ASYNC, \ASYNC* or \SYNC*. In this case, if the last statement of a function is not a return statement (\ref{return}), the statement \code{\RETURN{};} is implicitly appended to the function body. @@ -506,12 +575,14 @@ \section{Functions} \end{itemize} +\LMHash{} A function is {\em asynchronous} if its body is marked with the \ASYNC{} or \ASYNC* modifier. Otherwise the function is {\em synchronous}. A function is a {\em generator} if its body is marked with the \SYNC* or \ASYNC* modifier. \commentary{ Whether a function is synchronous or asynchronous is orthogonal to whether it is a generator or not. Generator functions are a sugar for functions that produce collections in a systematic way, by lazily applying a function that {\em generates} individual elements of a collection. Dart provides such a sugar in both the synchronous case, where one returns an iterable, and in the asynchronous case, where one returns a stream. Dart also allows both synchronous and asynchronous functions that produce a single value. } +\LMHash{} It is a compile-time error if an \ASYNC, \ASYNC* or \SYNC* modifier is attached to the body of a setter or constructor. \rationale{ @@ -524,14 +595,17 @@ \section{Functions} \subsection{Function Declarations} -\label{functionDeclarations} +\LMLabel{functionDeclarations} +\LMHash{} A {\em function declaration} is a function that is neither a member of a class nor a function literal. Function declarations include {\em library functions}, which are function declarations %(including getters and setters) at the top level of a library, and {\em local functions}, which are function declarations declared inside other functions. Library functions are often referred to simply as top-level functions. +\LMHash{} A function declaration consists of an identifier indicating the function's name, possibly prefaced by a return type. The function name is followed by a signature and body. For getters, the signature is empty. The body is empty for functions that are external. +\LMHash{} The scope of a library function is the scope of the enclosing library. The scope of a local function is described in section \ref{localFunctionDeclaration}. In both cases, the name of the function is in scope in its formal parameter scope (\ref{formalParameters}). %A function declaration of the form $T_0$ $id(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k} = d_k])\{s\}$ is equivalent to a variable declaration of the form \code{\FINAL{} $F$ $id$ = $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k}= d_k])\{s\}$}, where $F$ is the function type alias (\ref{typedef}) \code{\TYPEDEF{} $T_0$ $F(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}])$}. Likewise, a function declaration of the form $id(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k} = d_k])\{s\}$ is equivalent to a variable declaration of the form \code{\FINAL{} $F$ $id$ = $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k} = d_k])\{s\}$}, where $F$ is the function type alias \code{\TYPEDEF{} $F(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}])$}. @@ -552,18 +626,23 @@ \subsection{Function Declarations} %A function declaration of the form $T_0$ $id(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})\{s\}$ is equivalent to a variable declaration of the form \code{\FINAL{} $F$ $id$ = $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})\{s\}$}, where $F$ is the function type alias (\ref{typedef}) \code{\TYPEDEF{} $T_0$ $F(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]\}$}. Likewise, a function declaration of the form $id(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})\{s\}$ is equivalent to a variable declaration of the form \code{\FINAL{} $F$ $id$ = $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})\{s\}$}, where $F$ is the function type alias \code{\TYPEDEF{} $F(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\})$}. +\LMHash{} It is a compile-time error to preface a function declaration with the built-in identifier \STATIC{}. +\LMHash{} When we say that a function $f_1$ {\em forwards} to another function $f_2$, we mean that invoking $f_1$ causes $f_2$ to be executed with the same arguments and/or receiver as $f_1$, and returns the result of executing $f_2$ to the caller of $f_1$, unless $f_2$ throws an exception, in which case $f_1$ throws the same exception. Furthermore, we only use the term for synthetic functions introduced by the specification. \subsection{Formal Parameters} -\label{formalParameters} +\LMLabel{formalParameters} +\LMHash{} Every function includes a {\em formal parameter list}, which consists of a list of required positional parameters (\ref{requiredFormals}), followed by any optional parameters (\ref{optionalFormals}). The optional parameters may be specified either as a set of named parameters or as a list of positional parameters, but not both. +\LMHash{} The formal parameter list of a function introduces a new scope known as the function's {\em formal parameter scope}. The formal parameter scope of a function $f$ is enclosed in the scope where $f$ is declared. Every formal parameter introduces a local variable into the formal parameter scope. However, the scope of a function's signature is the function's enclosing scope, not the formal parameter scope. +\LMHash{} The body of a function introduces a new scope known as the function's {\em body scope}. The body scope of a function $f$ is enclosed in the scope introduced by the formal parameter scope of $f$. @@ -572,6 +651,7 @@ \subsection{Formal Parameters} % The formal parameters of a function are processed in the enclosing scope of the function. % \commentary{this means that the parameters themselves may not be referenced within the formal parameter list.} +\LMHash{} It is a compile-time error if a formal parameter is declared as a constant variable (\ref{variables}). \begin{grammar} @@ -611,8 +691,9 @@ \subsection{Formal Parameters} \subsubsection{Required Formals} -\label{requiredFormals} +\LMLabel{requiredFormals} +\LMHash{} A {\em required formal parameter} may be specified in one of three ways: \begin{itemize} \item By means of a function signature that names the parameter and describes its type as a function type (\ref{functionTypes}). It is a compile-time error if any default values are specified in the signature of such a function type.% explain what the type is in this case? Where is this described in general? @@ -645,8 +726,9 @@ \subsubsection{Required Formals} %\end{grammar} \subsubsection{Optional Formals} -\label{optionalFormals} +\LMLabel{optionalFormals} +\LMHash{} Optional parameters may be specified and provided with default values. \begin{grammar} @@ -659,8 +741,10 @@ \subsubsection{Optional Formals} . \end{grammar} +\LMHash{} It is a compile-time error if the default value of an optional parameter is not a compile-time constant (\ref{constants}). If no default is explicitly specified for an optional parameter an implicit default of \NULL{} is provided. +\LMHash{} It is a compile-time error if the name of a named optional parameter begins with an `\_' character. \rationale{ @@ -669,16 +753,21 @@ \subsubsection{Optional Formals} } \subsection{Type of a Function} -\label{typeOfAFunction} +\LMLabel{typeOfAFunction} +\LMHash{} If a function does not declare a return type explicitly, its return type is \DYNAMIC{} (\ref{typeDynamic}). +\LMHash{} Let $F$ be a function with required formal parameters $T_1$ $p_1 \ldots, T_n$ $p_n$, return type $T_0$ and no optional parameters. Then the type of $F$ is $(T_1 ,\ldots, T_n) \rightarrow T_0$. +\LMHash{} Let $F$ be a function with required formal parameters $T_1$ $p_1 \ldots, T_n$ $p_n$, return type $T_0$ and positional optional parameters $T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $ p_{n+k}$. Then the type of $F$ is $(T_1 ,\ldots, T_n, [T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $p_{n+k}]) \rightarrow T_0$. +\LMHash{} Let $F$ be a function with required formal parameters $T_1$ $p_1 \ldots, T_n$ $p_n$, return type $T_0$ and named optional parameters $T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $ p_{n+k}$. Then the type of $F$ is $(T_1 ,\ldots, T_n, \{T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $p_{n+k}\}) \rightarrow T_0$. +\LMHash{} The run time type of a function object always implements the class \cd{Function}. \commentary{ @@ -692,8 +781,9 @@ \subsection{Type of a Function} } \subsection{External Functions} -\label{externalFunctions} +\LMLabel{externalFunctions} +\LMHash{} An {\em external function} is a function whose body is provided separately from its declaration. An external function may be a top-level function (\ref{librariesAndScripts}), a method (\ref{instanceMethods}, \ref{staticMethods}), a getter (\ref{getters}), a setter (\ref{setters}) or a non-redirecting constructor (\ref{generativeConstructors}, \ref{factories}). External functions are introduced via the built-in identifier \EXTERNAL{} (\ref{identifierReference}) followed by the function signature. \rationale{ @@ -704,13 +794,16 @@ \subsection{External Functions} Examples of external functions might be foreign functions (defined in C, or Javascript etc.), primitives of the implementation (as defined by the Dart runtime), or code that was dynamically generated but whose interface is statically known. However, an abstract method is different from an external function, as it has {\em no} body. } +\LMHash{} An external function is connected to its body by an implementation specific mechanism. Attempting to invoke an external function that has not been connected to its body will raise a \code{NoSuchMethodError} or some subclass thereof. +\LMHash{} The actual syntax is given in sections \ref{classes} and \ref{librariesAndScripts} below. \section{Classes} -\label{classes} +\LMLabel{classes} +\LMHash{} A {\em class} defines the form and behavior of a set of objects which are its {\em instances}. Classes may be defined by class declarations as described below, or via mixin applications (\ref{mixinApplication}). \begin{grammar} @@ -761,6 +854,7 @@ \section{Classes} \end{grammar} +\LMHash{} A class has constructors, instance members and static members. The instance members of a class are its instance methods, getters, setters and instance variables. The static members of a class are its static methods, getters, setters and static variables. The members of a class are its static and instance members. % A class has a static scope and an instance scope. The enclosing scope of the static scope of a non-generic class is the enclosing scope of the class declaration. The enclosing scope of the static scope of a generic class is the type parameter scope (\ref{}) of the generic class declaration. @@ -771,12 +865,14 @@ \section{Classes} %The enclosing scope of a static member declaration is the static scope of the class in which it is declared. +\LMHash{} Every class has a single superclass except class \code{Object} which has no superclass. A class may implement a number of interfaces %, either by declaring them in its implements clause (\ref{superinterfaces}). % or via interface injection declarations (\ref{interfaceInjection}) outside the class declaration +\LMHash{} An {\em abstract class} is %either a class that is explicitly declared with the \ABSTRACT{} modifier, either by means of a class declaration or via a type alias (\ref{typedef}) for a mixin application (\ref{mixinApplication}). A {\em concrete class} is a class that is not abstract. @@ -787,6 +883,7 @@ \section{Classes} We want different behavior for concrete classes and abstract classes. If $A$ is intended to be abstract, we want the static checker to warn about any attempt to instantiate $A$, and we do not want the checker to complain about unimplemented methods in $A$. In contrast, if $A$ is intended to be concrete, the checker should warn about all unimplemented methods, but allow clients to instantiate it freely. } +\LMHash{} The {\em interface of class $C$} is an implicit interface that declares instance members that correspond to the instance members declared by $C$, and whose direct superinterfaces are the direct superinterfaces of $C$ (\ref{superinterfaces}). When a class name appears as a type, that name denotes the interface of the class. % making an exception for the setters generated for final fields is tempting but problematic. @@ -794,6 +891,7 @@ \section{Classes} % Maybe the final field hides the setter in scope? % I think the original rules were best. +\LMHash{} It is a compile-time error if a class declares two members of the same name. %, except that a getter and a setter may be declared with the same name provided both are instance members or both are static members. It is a compile-time error if a class has an instance member and a static member with the same name. @@ -819,27 +917,32 @@ \section{Classes} \} \end{dartCode} +\LMHash{} It is a compile time error if a class $C$ declares a member with the same name as $C$. It is a compile time error if a generic class declares a type variable with the same name as the class or any of its members or constructors. \subsection{Instance Methods} -\label{instanceMethods} +\LMLabel{instanceMethods} +\LMHash{} Instance methods are functions (\ref{functions}) whose declarations are immediately contained within a class declaration and that are not declared \STATIC{}. The instance methods of a class $C$ are those instance methods declared by $C$ and the instance methods inherited by $C$ from its superclass. %make these warnings if possible +\LMHash{} It is a static warning if an instance method $m_1$ overrides (\ref{inheritanceAndOverriding}) an instance member $m_2$ and $m_1$ has a greater number of required parameters than $m_2$. It is a static warning if an instance method $m_1$ overrides an instance member $m_2$ and $m_1$ has fewer positional parameters than $m_2$. It is a static warning if an instance method $m_1$ overrides an instance member $m_2$ and $m_1$ does not declare all the named parameters declared by $m_2$. % not quite right. It should be ok to override a method that requires N parameters with one that requires M < N but accepts the others as optional. +\LMHash{} It is a static warning if an instance method $m_1$ overrides an instance member $m_2$ and the type of $m_1$ is not a subtype of the type of $m_2$. It is a static warning if an instance method $m_1$ overrides an instance member $m_2$, the signature of $m_2$ explicitly specifies a default value for a formal parameter $p$ and the signature of $m_1$ implies a different default value for $p$. It is a static warning if a class $C$ declares an instance method named $n$ and has a setter named $n=$. It is a static warning if a class $C$ declares an instance method named $n$ and an accessible static member named $n$ is declared in a superclass of $C$. % Works. If the name is public, no issue. If it's private, if a subclass has a conflicting inst var, it either is in the same lib and will be flagged, or is in another and is not an issue. \subsubsection{Operators} -\label{operators} +\LMLabel{operators} +\LMHash{} {\em Operators} are instance methods with special names. \begin{grammar} @@ -862,33 +965,41 @@ \subsubsection{Operators} . \end{grammar} +\LMHash{} An operator declaration is identified using the built-in identifier (\ref{identifierReference}) \OPERATOR{}. +\LMHash{} The following names are allowed for user-defined operators: \code{$<$, $>$, $<$=, $>$=, ==, -, +, /, \~{}/, *, \%, $|$, \^{}, \&, $<<$, $>>$, []=, [], \~{}.} +\LMHash{} It is a compile-time error if the arity of the user-declared operator \code{[]=} is not 2. It is a compile-time error if the arity of a user-declared operator with one of the names: \code{ $<$, $>$, $<$=, $>$=, ==, -, +, \~{}/, /, *, \%, $|$, \^{}, \&, $<<$, $>>$, []} is not 1. It is a compile-time error if the arity of the user-declared operator \code{-} is not 0 or 1. \commentary{ The \code{-} operator is unique in that two overloaded versions are permitted. If the operator has no arguments, it denotes unary minus. If it has an argument, it denotes binary subtraction. } +\LMHash{} The name of the unary operator \code{-} is \code{unary-}. \rationale{ This device allows the two methods to be distinguished for purposes of method lookup, override and reflection. } +\LMHash{} It is a compile-time error if the arity of the user-declared operator \code{ \~{}} is not 0. +\LMHash{} It is a compile-time error to declare an optional parameter in an operator. +\LMHash{} It is a static warning if the return type of the user-declared operator \code{[]=} is explicitly declared and not \VOID{}. \subsection{Getters} -\label{getters} +\LMLabel{getters} +\LMHash{} Getters are functions (\ref{functions}) that are used to retrieve the values of object properties. \begin{grammar} @@ -899,29 +1010,36 @@ \subsection{Getters} %\Q{Why does a getter have a formal parameter list at all?} +\LMHash{} If no return type is specified, the return type of the getter is \DYNAMIC{}. +\LMHash{} A getter definition that is prefixed with the \STATIC{} modifier defines a static getter. Otherwise, it defines an instance getter. The name of the getter is given by the identifier in the definition. The effect of a static getter declaration in class $C$ is to add an instance getter with the same name and signature to the \code{Type} object for class $C$ that forwards (\ref{functionDeclarations}) to the static getter. %It is a compile-time error if a getter`s formal parameter list is not empty. +\LMHash{} The instance getters of a class $C$ are those instance getters declared by $C$, either implicitly or explicitly, and the instance getters inherited by $C$ from its superclass. The static getters of a class $C$ are those static getters declared by $C$. +\LMHash{} It is a compile-time error if a class has both a getter and a method with the same name. This restriction holds regardless of whether the getter is defined explicitly or implicitly, or whether the getter or the method are inherited or not. \commentary{ This implies that a getter can never override a method, and a method can never override a getter or field. } +\LMHash{} It is a static warning if the return type of a getter is \VOID. It is a static warning if a getter $m_1$ overrides (\ref{inheritanceAndOverriding}) a getter $m_2$ and the type of $m_1$ is not a subtype of the type of $m_2$. +\LMHash{} It is a static warning if a class declares a static getter named $v$ and also has a non-static setter named $v=$. It is a static warning if a class $C$ declares an instance getter named $v$ and an accessible static member named $v$ or $v=$ is declared in a superclass of $C$. These warnings must be issued regardless of whether the getters or setters are declared explicitly or implicitly. \subsection{Setters} -\label{setters} +\LMLabel{setters} +\LMHash{} Setters are functions (\ref{functions}) that are used to set the values of object properties. % what about top level ones? Same for getters @@ -932,28 +1050,36 @@ \subsection{Setters} . \end{grammar} +\LMHash{} If no return type is specified, the return type of the setter is \DYNAMIC{}. +\LMHash{} A setter definition that is prefixed with the \STATIC{} modifier defines a static setter. Otherwise, it defines an instance setter. The name of a setter is obtained by appending the string `=' to the identifier given in its signature. The effect of a static setter declaration in class $C$ is to add an instance setter with the same name and signature to the \code{Type} object for class $C$ that forwards (\ref{functionDeclarations}) to the static setter. \commentary{Hence, a setter name can never conflict with, override or be overridden by a getter or method.} +\LMHash{} The instance setters of a class $C$ are those instance setters declared by $C$ either implicitly or explicitly, and the instance setters inherited by $C$ from its superclass. The static setters of a class $C$ are those static setters declared by $C$. +\LMHash{} It is a compile-time error if a setter's formal parameter list does not consist of exactly one required formal parameter $p$. \rationale{We could enforce this via the grammar, but we'd have to specify the evaluation rules in that case.} %It is a compile-time error if a class has both a setter and a method with the same name. This restriction holds regardless of whether the setter is defined explicitly or implicitly, or whether the setter or the method are inherited or not. +\LMHash{} It is a static warning if a setter declares a return type other than \VOID{}. It is a static warning if a setter $m_1$ overrides (\ref{inheritanceAndOverriding}) a setter $m_2$ and the type of $m_1$ is not a subtype of the type of $m_2$. It is a static warning if a class has a setter named $v=$ with argument type $T$ and a getter named $v$ with return type $S$, and $T$ may not be assigned to $S$. +\LMHash{} It is a static warning if a class declares a static setter named $v=$ and also has a non-static member named $v$. It is a static warning if a class $C$ declares an instance setter named $v=$ and an accessible static member named $v=$ or $v$ is declared in a superclass of $C$. +\LMHash{} These warnings must be issued regardless of whether the getters or setters are declared explicitly or implicitly. \subsection{Abstract Instance Members} -\label{abstractInstanceMembers} +\LMLabel{abstractInstanceMembers} +\LMHash{} An {\em abstract method} (respectively, {\em abstract getter} or {\em abstract setter)} is an instance method, getter or setter that is not declared \EXTERNAL{} and does not provide an implementation. A {\em concrete method} (respectively, {\em concrete getter} or {\em concrete setter)} is an instance method, getter or setter that is not abstract. %The declaration of an abstract method is prefixed by the built-in identifier (\ref{identifierReference}) \ABSTRACT{}. @@ -977,6 +1103,7 @@ \subsection{Abstract Instance Members} } %always results in a run-time error. This must be \code{NoSuchMethodError} or an instance of a subclass of \code{NoSuchMethodError}, such as \code{AbstractMethodError}. +\LMHash{} It is a static warning if an abstract member is declared or inherited in a concrete class unless that member overrides a concrete one. \rationale { @@ -1001,10 +1128,12 @@ \subsection{Abstract Instance Members} \rationale{At run time, the concrete method \cd{one} declared in \cd{Base} will be executed, and no problem should arise. Therefore no warning should be issued and so we suppress warnings if a corresponding concrete member exists in the hierarchy. } \subsection{Instance Variables} -\label{instanceVariables} +\LMLabel{instanceVariables} +\LMHash{} Instance variables are variables whose declarations are immediately contained within a class declaration and that are not declared \STATIC{}. The instance variables of a class $C$ are those instance variables declared by $C$ and the instance variables inherited by $C$ from its superclass. +\LMHash{} It is a compile-time error if an instance variable is declared to be constant. \rationale{ @@ -1048,10 +1177,12 @@ \subsection{Instance Variables} \subsection{Constructors} -\label{constructors} +\LMLabel{constructors} +\LMHash{} A {\em constructor} is a special function that is used in instance creation expressions (\ref{instanceCreation}) to produce objects. Constructors may be generative (\ref{generativeConstructors}) or they may be factories (\ref{factories}). +\LMHash{} A {\em constructor name} always begins with the name of its immediately enclosing class, and may optionally be followed by a dot and an identifier $id$. It is a compile-time error if $id$ is the name of a member declared in the immediately enclosing class. It is a compile-time error if the name of a constructor is not a constructor name. @@ -1059,11 +1190,13 @@ \subsection{Constructors} % The enclosing scope of a generative constructor is the instance scope of the class in which it is declared (but what about redirecting?) +\LMHash{} Iff no constructor is specified for a class $C$, it implicitly has a default constructor \code{C() : \SUPER{}() \{\}}, unless $C$ is class \code{Object}. \subsubsection{Generative Constructors} -\label{generativeConstructors} +\LMLabel{generativeConstructors} +\LMHash{} A {\em generative constructor} consists of a constructor name, a constructor parameter list, and either a redirect clause or an initializer list and an optional body. \begin{grammar} @@ -1072,12 +1205,16 @@ \subsubsection{Generative Constructors} . \end{grammar} +\LMHash{} A {\em constructor parameter list} is a parenthesized, comma-separated list of formal constructor parameters. A {\em formal constructor parameter} is either a formal parameter (\ref{formalParameters}) or an initializing formal. An {\em initializing formal} has the form \code{\THIS{}.id}, where \code{id} is the name of an instance variable of the immediately enclosing class. It is a compile-time error if \code{id} is not an instance variable of the immediately enclosing class. It is a compile-time error if an initializing formal is used by a function other than a non-redirecting generative constructor. +\LMHash{} If an explicit type is attached to the initializing formal, that is its static type. Otherwise, the type of an initializing formal named \code{id} is $T_{id}$, where $T_{id}$ is the type of the field named \code{id} in the immediately enclosing class. It is a static warning if the static type of \code{id} is not assignable to $T_{id}$. +\LMHash{} Using an initializing formal \code{\THIS{}.id} in a formal parameter list does not introduce a formal parameter name into the scope of the constructor. However, the initializing formal does effect the type of the constructor function exactly as if a formal parameter named \code{id} of the same type were introduced in the same position. +\LMHash{} Initializing formals are executed during the execution of generative constructors detailed below. Executing an initializing formal \code{\THIS{}.id} causes the field \code{id} of the immediately surrounding class to be assigned the value of the corresponding actual parameter, unless $id$ is a final variable that has already been initialized, in which case a runtime error occurs. @@ -1101,18 +1238,21 @@ \subsubsection{Generative Constructors} \} \end{dartCode} +\LMHash{} A {\em fresh instance} is an instance whose identity is distinct from any previously allocated instance of its class. A generative constructor always operates on a fresh instance of its immediately enclosing class. \commentary{ The above holds if the constructor is actually run, as it is by \NEW{}. If a constructor $c$ is referenced by \CONST{}, $c$ may not be run; instead, a canonical object may be looked up. See the section on instance creation (\ref{instanceCreation}). } +\LMHash{} If a generative constructor $c$ is not a redirecting constructor and no body is provided, then $c$ implicitly has an empty body \code{\{\}}. \paragraph{Redirecting Constructors} -\label{redirectingConstructors} +\LMLabel{redirectingConstructors} +\LMHash{} A generative constructor may be {\em redirecting}, in which case its only action is to invoke another generative constructor. A redirecting constructor has no body; instead, it has a redirect clause that specifies which constructor the invocation is redirected to, and with what arguments. \begin{grammar} @@ -1128,6 +1268,7 @@ \subsubsection{Generative Constructors} \paragraph{Initializer Lists} +\LMHash{} An initializer list begins with a colon, and consists of a comma-separated list of individual {\em initializers}. There are two kinds of initializers. \begin{itemize} \item A {\em superinitializer} identifies a {\em superconstructor} - that is, a specific constructor of the superclass. Execution of the superinitializer causes the initializer list of the superconstructor to be executed. @@ -1152,8 +1293,10 @@ \subsubsection{Generative Constructors} \end{grammar} +\LMHash{} Let $k$ be a generative constructor. Then $k$ may include at most one superinitializer in its initializer list or a compile-time error occurs. If no superinitializer is provided, an implicit superinitializer of the form \SUPER{}() is added at the end of $k$'s initializer list, unless the enclosing class is class \code{Object}. It is a compile-time error if more than one initializer corresponding to a given instance variable appears in $k$'s initializer list. It is a compile-time error if $k$'s initializer list contains an initializer for a variable that is initialized by means of an initializing formal of $k$. % It is a compile-time error if $k$'s initializer list contains an initializer for a final variable $f$ whose declaration includes an initialization expression. +\LMHash{} Each final instance variable $f$ declared in the immediately enclosing class must have an initializer in $k$'s initializer list unless it has already been initialized by one of the following means: \begin{itemize} \item Initialization at the declaration of $f$. @@ -1166,21 +1309,26 @@ \subsubsection{Generative Constructors} \commentary{The initializer list may of course contain an initializer for any instance variable declared by the immediately surrounding class, even if it is not final. } +\LMHash{} It is a compile-time error if a generative constructor of class \code{Object} includes a superinitializer. +\LMHash{} Execution of a generative constructor $k$ is always done with respect to a set of bindings for its formal parameters and with \THIS{} bound to a fresh instance $i$ and the type parameters of the immediately enclosing class bound to a set of actual type arguments $V_1, \ldots , V_m$. \commentary{These bindings are usually determined by the instance creation expression that invoked the constructor (directly or indirectly). However, they may also be determined by a reflective call,. } +\LMHash{} If $k$ is redirecting then its redirect clause has the form \THIS{}$.g(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ where $g$ identifies another generative constructor of the immediately surrounding class. Then execution of $k$ proceeds by evaluating the argument list $(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$, and then executing $g$ with respect to the bindings resulting from the evaluation of $(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ and with \THIS{} bound to $i$ and the type parameters of the immediately enclosing class bound to $V_1, \ldots , V_m$. +\LMHash{} Otherwise, execution proceeds as follows: +\LMHash{} %First, a fresh instance (\ref{generativeConstructors}) $i$ of the immediately enclosing class is allocated. Next, the instance variable declarations of the immediately enclosing class are visited in the order they appear in the program text. For each such declaration $d$, if $d$ has the form \code{$finalConstVarOrType$ $v$ = $e$; } then the instance variable $v$ of $i$ is bound to the value of $e$ (which is necessarily a compile-time constant). %Next, a Any initializing formals declared in $k$'s parameter list are executed in the order they appear in the program text. @@ -1190,18 +1338,23 @@ \subsubsection{Generative Constructors} \rationale {We could observe the order by side effecting external routines called. So we need to specify the order.} +\LMHash{} After all the initializers have completed, the body of $k$ is executed in a scope where \THIS{} is bound to $i$. Execution of the body begins with execution of the body of the superconstructor with \THIS{} bound to $i$, the type parameters of the immediately enclosing class bound to a set of actual type arguments $V_1, \ldots , V_m$ and the formal parameters bindings determined by the argument list of the superinitializer of $k$. \rationale{ This process ensures that no uninitialized final field is ever seen by code. Note that \THIS{} is not in scope on the right hand side of an initializer (see \ref{this}) so no instance method can execute during initialization: an instance method cannot be directly invoked, nor can \THIS{} be passed into any other code being invoked in the initializer. } +\LMHash{} Execution of an initializer of the form \code{\THIS{}.$v$ = $e$} proceeds as follows: +\LMHash{} First, the expression $e$ is evaluated to an object $o$. Then, the instance variable $v$ of the object denoted by \THIS{} is bound to $o$, unless $v$ is a final variable that has already been initialized, in which case a runtime error occurs. In checked mode, it is a dynamic type error if $o$ is not \NULL{} and the interface of the class of $o$ is not a subtype of the actual type of the field $v$. +\LMHash{} An initializer of the form \code{$v$ = $e$} is equivalent to an initializer of the form \code{\THIS{}.$v$ = $e$}. +\LMHash{} Execution of a superinitializer of the form \SUPER{}$(a_1, \ldots, a_n, x_{n+1}: a_{n+1}, \ldots, x_{n+k}: a_{n+k})$ @@ -1210,17 +1363,22 @@ \subsubsection{Generative Constructors} proceeds as follows: +\LMHash{} First, the argument list $(a_1, \ldots, a_n, x_{n+1}: a_{n+1}, \ldots, x_{n+k}: a_{n+k})$ is evaluated. +\LMHash{} Let $C$ be the class in which the superinitializer appears and let $S$ be the superclass of $C$. If $S$ is generic (\ref{generics}), let $U_1, , \ldots, U_m$ be the actual type arguments passed to $S$ in the superclass clause of $C$. +\LMHash{} Then, the initializer list of the constructor $S$ (respectively $S.id$) is executed with respect to the bindings that resulted from the evaluation of the argument list, with \THIS{} bound to the current binding of \THIS{}, and the type parameters (if any) of class $S$ bound to the current bindings of $U_1, , \ldots, U_m$. +\LMHash{} It is a compile-time error if class $S$ does not declare a generative constructor named $S$ (respectively $S.id$). \subsubsection{Factories} -\label{factories} +\LMLabel{factories} +\LMHash{} A {\em factory} is a constructor prefaced by the built-in identifier (\ref{identifierReference}) \FACTORY{}. \begin{grammar} @@ -1232,10 +1390,13 @@ \subsubsection{Factories} %The enclosing scope of a factory constructor is the static scope \ref{} of the class in which it is declared. +\LMHash{} The {\em return type} of a factory whose signature is of the form \FACTORY{} $M$ or the form \FACTORY{} $M.id$ is $M$ if $M$ is not a generic type; otherwise the return type is $M $ where $T_1, \ldots, T_n$ are the type parameters of the enclosing class +\LMHash{} It is a compile-time error if $M$ is not the name of the immediately enclosing class. +\LMHash{} In checked mode, it is a dynamic type error if a factory returns a non-null object whose type is not a subtype of its actual (\ref{actualTypeOfADeclaration}) return type. \rationale{It seems useless to allow a factory to return null. But it is more uniform to allow it, as the rules currently do.} @@ -1246,8 +1407,9 @@ \subsubsection{Factories} } \paragraph{Redirecting Factory Constructors} -\label{redirectingFactoryConstructors} +\LMLabel{redirectingFactoryConstructors} +\LMHash{} A {\em redirecting factory constructor} specifies a call to a constructor of another class that is to be used whenever the redirecting constructor is called. \begin{grammar} @@ -1256,16 +1418,19 @@ \subsubsection{Factories} . \end{grammar} +\LMHash{} Calling a redirecting factory constructor $k$ causes the constructor $k^\prime$ denoted by $type$ (respectively, $type.identifier$) to be called with the actual arguments passed to $k$, and returns the result of $k^\prime$ as the result of $k$. The resulting constructor call is governed by the same rules as an instance creation expression using \NEW{} (\ref{instanceCreation}). \commentary{ It follows that if $type$ or $type.id$ are not defined, or do not refer to a class or constructor, a dynamic error occurs, as with any other undefined constructor call. The same holds if $k$ is called with fewer required parameters or more positional parameters than $k^\prime$ expects, or if $k$ is called with a named parameter that is not declared by $k^\prime$. } +\LMHash{} It is a compile-time error if $k$ explicitly specifies a default value for an optional parameter.\commentary{ Default values specified in $k$ would be ignored, since it is the {\em actual} parameters that are passed to $k^\prime$. Hence, default values are disallowed. } +\LMHash{} It is a run-time error if a redirecting factory constructor redirects to itself, either directly or indirectly via a sequence of redirections. %does not redirect to a non-redirecting factory constructor or to a generative constructor in a finite number of steps. % Make this a runtime error so deferred loading works @@ -1275,6 +1440,7 @@ \subsubsection{Factories} } +\LMHash{} It is a static warning if $type$ does not denote a class accessible in the current scope; if $type$ does denote such a class $C$ it is a static warning if the referenced constructor (be it $type$ or $type.id$) is not a constructor of $C$. \commentary{ @@ -1316,20 +1482,24 @@ \subsubsection{Factories} } %\end{dartCode} +\LMHash{} It is a compile-time error if $k$ is prefixed with the \CONST{} modifier but $k^\prime$ is not a constant constructor (\ref{constantConstructors}). +\LMHash{} It is a static warning if the function type of $k^\prime$ is not a subtype of the type of $k$. \commentary{ This implies that the resulting object conforms to the interface of the immediately enclosing class of $k$. } +\LMHash{} It is a static type warning if any of the type arguments to $k^\prime$ are not subtypes of the bounds of the corresponding formal type parameters of $type$. \subsubsection{Constant Constructors} -\label{constantConstructors} +\LMLabel{constantConstructors} +\LMHash{} A {\em constant constructor} may be used to create compile-time constant (\ref{constants}) objects. A constant constructor is prefixed by the reserved word \CONST{}. \begin{grammar} @@ -1345,22 +1515,27 @@ \subsubsection{Constant Constructors} \commentary{All the work of a constant constructor must be handled via its initializers.} +\LMHash{} It is a compile-time error if a constant constructor is declared by a class that has a non-final instance variable. \commentary{ The above refers to both locally declared and inherited instance variables. } +\LMHash{} It is a compile-time error if a constant constructor is declared by a class $C$ if any instance variable declared in $C$ is initialized with an expression that is not a constant expression. \commentary { A superclass of $C$ cannot declare such an initializer either, because it must necessarily declare constant constructor as well (unless it is \code{Object}, which declares no instance variables). } +\LMHash{} The superinitializer that appears, explicitly or implicitly, in the initializer list of a constant constructor must specify a constant constructor of the superclass of the immediately enclosing class or a compile-time error occurs. +\LMHash{} Any expression that appears within the initializer list of a constant constructor must be a potentially constant expression, or a compile-time error occurs. +\LMHash{} A {\em potentially constant expression} is an expression $e$ that would be a valid constant expression if all formal parameters of $e$'s immediately enclosing constant constructor were treated as compile-time constants that were guaranteed to evaluate to an integer, boolean or string value as required by their immediately enclosing superexpression. \commentary{ @@ -1424,15 +1599,18 @@ \subsubsection{Constant Constructors} Careful readers will of course worry about cases where the actual arguments to \code{C()} are constants, but are not numeric. This is precluded by the following rule, combined with the rules for evaluating constant objects (\ref{const}). } +\LMHash{} When invoked from a constant object expression, a constant constructor must throw an exception if any of its actual parameters is a value that would prevent one of the potentially constant expressions within it from being a valid compile-time constant. %Discuss External Constructors in ne subsubsection here \subsection{Static Methods} -\label{staticMethods} +\LMLabel{staticMethods} +\LMHash{} {\em Static methods} are functions, other than getters or setters, whose declarations are immediately contained within a class declaration and that are declared \STATIC{}. The static methods of a class $C$ are those static methods declared by $C$. +\LMHash{} The effect of a static method declaration in class $C$ is to add an instance method with the same name and signature to the \code{Type} object for class $C$ that forwards (\ref{functionDeclarations}) to the static method. \rationale{ @@ -1441,6 +1619,7 @@ \subsection{Static Methods} Of course, the entire notion of static methods is debatable, but it is retained here because so many programmers are familiar with it. Dart static methods may be seen as functions of the enclosing library. } +\LMHash{} It is a static warning if a class $C$ declares a static method named $n$ and has a setter named $n=$. %It is a static warning if a class has a static method with the same name as a static member of one of its superclasses. @@ -1453,8 +1632,9 @@ \subsection{Static Methods} \subsection{Static Variables} -\label{staticVariables} +\LMLabel{staticVariables} +\LMHash{} {\em Static variables} are variables whose declarations are immediately contained within a class declaration and that are declared \STATIC{}. The static variables of a class $C$ are those static variables declared by $C$. %A static variable declaration of one of the forms \code{\STATIC{} $T$ $v$;}, \code{\STATIC{} $T$ $v$ = $e$;} , \code{\STATIC{} \CONST{} $T$ $v$ = $e$;} or \code{\STATIC{} \FINAL{} $T$ $v$ = $e$;} always induces an implicit static getter function (\ref{getters}) with signature @@ -1485,7 +1665,7 @@ \subsection{Static Variables} %Extrernal static functions, getters, setters %\subsubsection{Evaluation of Implicit Static Variable Getters} -%\label{evaluationOfStaticVariableGetters} +%\LMLabel{evaluationOfStaticVariableGetters} %Let $d$ be the declaration of a static variable $v$. The implicit getter method of $v$ executes as follows: %\begin{itemize} @@ -1498,14 +1678,16 @@ \subsection{Static Variables} \subsection{Superclasses} -\label{superclasses} +\LMLabel{superclasses} +\LMHash{} The superclass of a class $C$ that has a with clause \code{\WITH{} $M_1, \ldots, M_k$} and an extends clause \code{\EXTENDS{} S} is the application of mixin (\ref{mixins}) $M_k* \cdots * M_1$ to S. If no \WITH{} clause is specified then the \EXTENDS{} clause of a class $C$ specifies its superclass. If no \EXTENDS{} clause is specified, then either: \begin{itemize} \item $C$ is \code{Object}, which has no superclass. OR \item Class $C$ is deemed to have an \EXTENDS{} clause of the form \code{\EXTENDS{} Object}, and the rules above apply. \end{itemize} +\LMHash{} It is a compile-time error to specify an \EXTENDS{} clause for class \code{Object}. \begin{grammar} @@ -1519,6 +1701,7 @@ \subsection{Superclasses} %This means that in a generic class, the type parameters of the generic are available in the superclass clause. %} +\LMHash{} %It is a compile-time error if the \EXTENDS{} clause of a class $C$ includes a type expression that does not denote a class available in the lexical scope of $C$. It is a compile-time error if the \EXTENDS{} clause of a class $C$ specifies an enumerated type (\ref{enums}), a malformed type or a deferred type (\ref{staticTypes}) as a superclass. % too strict? Do we e want extends List to work as List? @@ -1535,23 +1718,26 @@ \subsection{Superclasses} \end{dartCode} +\LMHash{} A class $S$ is {\em a superclass} of a class $C$ iff either: \begin{itemize} \item $S$ is the superclass of $C$, or \item $S$ is a superclass of a class $S^{\prime}$ and $S^{\prime}$ is a superclass of $C$. \end{itemize} +\LMHash{} It is a compile-time error if a class $C$ is a superclass of itself. \subsubsection{Inheritance and Overriding} - \label{inheritanceAndOverriding} + \LMLabel{inheritanceAndOverriding} %A class $C$ {\em inherits} any accessible instance members of its superclass that are not overridden by members declared in $C$. +\LMHash{} Let $C$ be a class, let $A$ be a superclass of $C$, and let $S_1 \ldots S_k$ be superclasses of $C$ that are also subclasses of $A$. $C$ {\em inherits} all accessible instance members of $A$ that have not been overridden by a declaration in $C$ or in at least one of $S_1 \ldots S_k$. \rationale { @@ -1560,8 +1746,10 @@ \subsection{Superclasses} the superclass chain of $S$ includes a class declared in $L_1$. } +\LMHash{} A class may override instance members that would otherwise have been inherited from its superclass. +\LMHash{} Let $C = S_0$ be a class declared in library $L$, and let $\{S_1 \ldots S_k\}$ be the set of all superclasses of $C$, where $S_i$ is the superclass of $S_{i-1}$ for $i \in 1 .. k$. Let $C$ declare a member $m$, and let $m^\prime$ be a member of $S_j, j \in 1 .. k$, that has the same name as $m$, such that $m^\prime$ is accessible to $L$. Then $m$ overrides $m^\prime$ if $m^\prime$ is not already overridden by a member of at least one of $S_1 \ldots S_{j-1}$ and neither $m$ nor $m^\prime$ are fields. %Let $C$ be a class declared in library $L$, with superclass $S$ and let $C$ declare an instance member $m$, and assume $S$ declares an instance member $m^\prime$ with the same name as $m$. Then $m$ {\em overrides} $m^\prime$ iff $m^\prime$ is accessible (\ref{privacy}) to $L$, $m$ has the same name as $m^\prime$ and neither $m$ nor $m^\prime$ are fields. @@ -1571,6 +1759,7 @@ \subsection{Superclasses} \rationale{Again, a local definition of overriding would be preferable, but fails to account for library privacy. } +\LMHash{} Whether an override is legal or not is described elsewhere in this specification (see \ref{instanceMethods}, \ref{getters} and \ref{setters}). \commentary{For example getters may not legally override methods and vice versa. Setters never override methods or getters, and vice versa, because their names always differ. @@ -1584,6 +1773,7 @@ \subsection{Superclasses} Note that instance variables do not participate in the override relation, but the getters and setters they induce do. Also, getters don't override setters and vice versa. Finally, static members never override anything. } +\LMHash{} It is a static warning if a non-abstract class inherits an abstract method. \commentary { @@ -1631,9 +1821,10 @@ \subsection{Superclasses} %Can we have abstract getters and setters? \subsection{ Superinterfaces} -\label{superinterfaces} +\LMLabel{superinterfaces} % what about rules about classes that fail to implement their interfaces? +\LMHash{} A class has a set of direct superinterfaces. This set includes the interface of its superclass and the interfaces specified in the the \IMPLEMENTS{} clause of the class. % and any superinterfaces specified by interface injection (\ref{interfaceInjection}). \Q{The latter needs to be worded carefully - when do interface injection clauses execute and in what scope?} @@ -1643,6 +1834,7 @@ \subsection{ Superinterfaces} . \end{grammar} +\LMHash{} It is a compile-time error if the \IMPLEMENTS{} clause of a class $C$ specifies a type variable as a superinterface. It is a compile-time error if the \IMPLEMENTS{} clause of a class $C$ specifies an enumerated type (\ref{enums}), a malformed type or deferred type (\ref{staticTypes}) as a superinterface It is a compile-time error if the \IMPLEMENTS{} clause of a class $C$ specifies type \DYNAMIC{} as a superinterface. It is a compile-time error if the \IMPLEMENTS{} clause of a class $C$ specifies a type $T$ as a superinterface more than once. It is a compile-time error if the superclass of a class $C$ is specified as a superinterface of $C$. @@ -1650,8 +1842,10 @@ \subsection{ Superinterfaces} One might argue that it is harmless to repeat a type in the superinterface list, so why make it an error? The issue is not so much that the situation described in program source is erroneous, but that it is pointless. As such, it is an indication that the programmer may very well have meant to say something else - and that is a mistake that should be called to her or his attention. Nevertheless, we could simply issue a warning; and perhaps we should and will. That said, problems like these are local and easily corrected on the spot, so we feel justified in taking a harder line. } +\LMHash{} It is a compile-time error if the interface of a class $C$ is a superinterface of itself. +\LMHash{} Let $C$ be a concrete class that does not declare its own \code{noSuchMethod()} method. It is a static warning if the implicit interface of $C$ includes an instance member $m$ of type $F$ and $C$ does not declare or inherit a corresponding non-abstract instance member $m$ of type $F'$ such that $F' <: F$. @@ -1670,6 +1864,7 @@ \subsection{ Superinterfaces} noSuchMethod(inv) =$>$ \SUPER.noSuchMethod(inv); \end{dartCode} +\LMHash{} It is a static warning if the implicit interface of a class $C$ includes an instance member $m$ of type $F$ and $C$ declares or inherits a corresponding instance member $m$ of type $F'$ if $F'$ is not a subtype of $F$. \rationale{ @@ -1704,23 +1899,27 @@ \subsection{ Superinterfaces} \section{Interfaces} -\label{interfaces} +\LMLabel{interfaces} +\LMHash{} An {\em interface} defines how one may interact with an object. An interface has methods, getters and setters and a set of superinterfaces. \subsection{Superinterfaces} -\label{interfaceSuperinterfaces} +\LMLabel{interfaceSuperinterfaces} +\LMHash{} An interface has a set of direct superinterfaces. +\LMHash{} An interface $J$ is a superinterface of an interface $I$ iff either $J$ is a direct superinterface of $I$ or $J$ is a superinterface of a direct superinterface of $I$. \subsubsection{Inheritance and Overriding} -\label{interfaceInheritanceAndOverriding} +\LMLabel{interfaceInheritanceAndOverriding} +\LMHash{} Let $J$ be an interface and $K$ be a library. We define $inherited(J, K)$ to be the set of members $m$ such that all of the following hold: \begin{itemize} \item $m$ is accessible to $K$ and @@ -1732,6 +1931,7 @@ \subsubsection{Inheritance and Overriding} \item $m$ is not overridden by $J$. \end{itemize} +\LMHash{} Furthermore, we define $overrides(J, K)$ to be the set of members $m^\prime$ such that all of the following hold: \begin{itemize} \item $J$ is the implicit interface of a class $C$. @@ -1746,10 +1946,13 @@ \subsubsection{Inheritance and Overriding} \end{itemize} +\LMHash{} Let $I$ be the implicit interface of a class $C$ declared in library $L$. $I$ {\em inherits} all members of $inherited(I, L)$ and $I$ {\em overrides} $m^\prime$ if $m^\prime \in overrides(I, L)$. +\LMHash{} All the static warnings pertaining to the overriding of instance members given in section \ref{classes} above hold for overriding between interfaces as well. +\LMHash{} It is a static warning if $m$ is a method and $m^\prime$ is a getter, or if $m$ is a getter and $m^\prime$ is a method. @@ -1760,10 +1963,13 @@ \subsubsection{Inheritance and Overriding} % tighten definition? do we need chain as for classes? Definition for interface override? +\LMHash{} However, if the above rules would cause multiple members $m_1, \ldots, m_k$ with the same name $n$ to be inherited (because identically named members existed in several superinterfaces) then at most one member is inherited. +\LMHash{} If some but not all of the $m_i, 1 \le i \le k$ are getters none of the $m_i$ are inherited, and a static warning is issued. +\LMHash{} Otherwise, if the static types $T_1, \ldots, T_k$ of the members $m_1, \ldots, m_k$ are not identical, then there must be a member $m_x$ such that $T_x <: T_i, 1 \le x \le k$ for all $i \in 1..k$, or a static type warning occurs. The member that is inherited is $m_x$, if it exists; otherwise: let $numberOfPositionals(f)$ denote the number of positional parameters of a function $f$, and let $numberOfRequiredParams(f)$ denote the number of required parameters of a function $f$. Furthermore, let $s$ denote the set of all named parameters of the $m_1, \ldots, m_k$. Then let @@ -1771,6 +1977,7 @@ \subsubsection{Inheritance and Overriding} $r = min(numberOfRequiredParams(m_i)), i \in 1..k$. +\LMHash{} Then $I$ has a method named $n$, with $r$ required parameters of type \DYNAMIC{}, $h$ positional parameters of type \DYNAMIC{}, named parameters $s$ of type \DYNAMIC{} and return type \DYNAMIC{}. @@ -1787,11 +1994,13 @@ \subsubsection{Inheritance and Overriding} % Need warnings if overrider conflicts with overriddee either because signatures are incompatible or because done is a method and one is a getter or setter. \section{Mixins} -\label{mixins} +\LMLabel{mixins} +\LMHash{} A mixin describes the difference between a class and its superclass. A mixin is always derived from an existing class declaration. +\LMHash{} It is a compile-time error if a declared or derived mixin refers to \SUPER{}. It is a compile-time error if a declared or derived mixin explicitly declares a constructor. It is a compile-time error if a mixin is derived from a class whose superclass is not \code{Object}. \rationale{ @@ -1807,8 +2016,9 @@ \section{Mixins} } \subsection{Mixin Application} -\label{mixinApplication} +\LMLabel{mixinApplication} +\LMHash{} A mixin may be applied to a superclass, yielding a new class. Mixin application occurs when a mixin is mixed into a class declaration via its \WITH{} clause. The mixin application may be used to extend a class per section (\ref{classes}); alternately, a class may be defined as a mixin application as described in this section. It is a compile-time error if the \WITH{} clause of a mixin application $C$ includes a deferred type expression. @@ -1821,21 +2031,28 @@ \subsection{Mixin Application} . \end{grammar} +\LMHash{} A mixin application of the form \code{$S$ \WITH{} $M$;} defines a class $C$ with superclass $S$. +\LMHash{} A mixin application of the form \code{$S$ \WITH{} $M_1, \ldots, M_k$;} defines a class $C$ whose superclass is the application of the mixin composition (\ref{mixinComposition}) $M_{k-1} * \ldots * M_1$ to $S$. +\LMHash{} In both cases above, $C$ declares the same instance members as $M$ (respectively, $M_k$). If any of the instance fields of $M$ (respectively, $M_k$) have initializers, they are executed in the scope of $M$ (respectively, $M_k$) to initialize the corresponding fields of $C$. +\LMHash{} For each generative constructor named $q_i(T_{i1}$ $ a_{i1}, \ldots , T_{ik_i}$ $ a_{ik_i}), i \in 1..n$ of $S$, $C$ has an implicitly declared constructor named $q'_i = [C/S]q_i$ of the form $q'_i(a_{i1}, \ldots , a_{ik_i}):\SUPER(a_{i1}, \ldots , a_{ik_i});$. +\LMHash{} If the mixin application declares support for interfaces, the resulting class implements those interfaces. +\LMHash{} It is a compile-time error if $S$ is an enumerated type (\ref{enums}) or a malformed type. It is a compile-time error if $M$ (respectively, any of $M_1, \ldots, M_k$) is an enumerated type (\ref{enums}) or a malformed type. It is a compile time error if a well formed mixin cannot be derived from $M$ (respectively, from each of $M_1, \ldots, M_k$). +\LMHash{} Let $K$ be a class declaration with the same constructors, superclass and interfaces as $C$, and the instance members declared by $M$ (respectively $M_1, \ldots, M_k$). It is a static warning if the declaration of $K$ would cause a static warning. It is a compile-time error if the declaration of $K$ would cause a compile-time error. \commentary{ @@ -1843,17 +2060,19 @@ \subsection{Mixin Application} } +\LMHash{} The effect of a class definition of the form \code{\CLASS{} $C$ = $M$; } or the form \code{\CLASS{} $C$ = $M$; } in library $L$ is to introduce the name $C$ into the scope of $L$, bound to the class (\ref{classes}) defined by the mixin application $M$. The name of the class is also set to $C$. Iff the class is prefixed by the built-in identifier \ABSTRACT{}, the class being defined is an abstract class. \subsection{Mixin Composition} -\label{mixinComposition} +\LMLabel{mixinComposition} \rationale{ Dart does not directly support mixin composition, but the concept is useful when defining how the superclass of a class with a mixin clause is created. } +\LMHash{} The {\em composition of two mixins}, $M_1$ and $M_2$, written $M_1 * M_2$ defines an anonymous mixin such that for any class $S$, the application of $M_1 * M_2$ @@ -1878,6 +2097,7 @@ \subsection{Mixin Composition} The classes produced by mixin composition are regarded as abstract because they cannot be instantiated independently. They are only introduced as anonymous superclasses of ordinary class declarations and mixin applications. Consequently, no warning is given if a mixin composition includes abstract members, or incompletely implements an interface. } +\LMHash{} Mixin composition is associative. @@ -1887,8 +2107,9 @@ \subsection{Mixin Composition} \section{Enums} -\label{enums} +\LMLabel{enums} +\LMHash{} An {\em enumerated type}, or {\em enum}, is used to represent a fixed number of constant values. \begin{grammar} @@ -1897,6 +2118,7 @@ \section{Enums} . \end{grammar} +\LMHash{} The declaration of an enum of the form \code{metadata \ENUM{} E \{ id$_0$, \ldots id$_{n-1}$\};} has the same effect as a class declaration @@ -1917,8 +2139,9 @@ \section{Enums} } \section{Generics} -\label{generics} +\LMLabel{generics} +\LMHash{} A class declaration (\ref{classes}) or type alias (\ref{typedef}) $G$ may be {\em generic}, that is, $G$ may have formal type parameters declared. A generic declaration induces a family of declarations, one for each set of actual type parameters provided in the program. @@ -1931,8 +2154,10 @@ \section{Generics} . \end{grammar} +\LMHash{} A type parameter $T$ may be suffixed with an \EXTENDS{} clause that specifies the {\em upper bound} for $T$. If no \EXTENDS{} clause is present, the upper bound is \code{Object}. It is a static type warning if a type parameter is a supertype of its upper bound. The bounds of type variables are a form of type annotation and have no effect on execution in production mode. +\LMHash{} The type parameters of a generic $G$ are in scope in the bounds of all of the type parameters of $G$. The type parameters of a generic class declaration $G$ are also in scope in the \EXTENDS{} and \IMPLEMENTS{} clauses of $G$ (if these exist) and in the body of $G$. However, a type parameter is considered to be a malformed type when referenced by a static member. \rationale{ @@ -2008,7 +2233,7 @@ \section{Generics} %\subsection{Interface Injection} -%\label{interfaceInjection} +%\LMLabel{interfaceInjection} %An {\em interface injection declaration} causes a pre-existing class $S$ to be considered a subinterface of another interface $I$. It is a static type warning if $S$ is not a structural subtype of $I$. However, the subinterface relations implied by the interface injection declaration are considered to hold by both the typechecker and the runtime, regardless. @@ -2038,8 +2263,9 @@ \section{Generics} \section{Metadata} -\label{metadata} +\LMLabel{metadata} +\LMHash{} Dart supports metadata which is used to attach user defined annotations to program structures. \begin{grammar} @@ -2048,12 +2274,14 @@ \section{Metadata} . \end{grammar} +\LMHash{} Metadata consists of a series of annotations, each of which begin with the character @, followed by a constant expression that starts with an identifier. It is a compile time error if the expression is not one of the following: \begin{itemize} \item A reference to a compile-time constant variable. \item A call to a constant constructor. \end{itemize} +\LMHash{} Metadata is associated with the abstract syntax tree of the program construct $p$ that immediately follows the metadata, assuming $p$ is not itself metadata or a comment. Metadata can be retrieved at runtime via a reflective call, provided the annotated program construct $p$ is accessible via reflection. \commentary{ @@ -2068,14 +2296,17 @@ \section{Metadata} It is possible to associate metadata with constructs that may not be accessible via reflection, such as local variables (though it is conceivable that in the future, richer reflective libraries might provide access to these as well). This is not as useless as it might seem. As noted above, the data can be retrieved statically if source code is available. } +\LMHash{} Metadata can appear before a library, part header, class, typedef, type parameter, constructor, factory, function, field, parameter, or variable declaration and before an import, export or part directive. +\LMHash{} The constant expression given in an annotation is type checked and evaluated in the scope surrounding the declaration being annotated. \section{Expressions} -\label{expressions} +\LMLabel{expressions} +\LMHash{} An {\em expression} is a fragment of Dart code that can be evaluated at run time to yield a {\em value}, which is always an object. Every expression has an associated static type (\ref{staticTypes}). Every value has an associated dynamic type (\ref{dynamicTypeSystem}). @@ -2110,6 +2341,7 @@ \section{Expressions} \end{grammar} +\LMHash{} An expression $e$ may always be enclosed in parentheses, but this never has any semantic effect on $e$. \commentary{ @@ -2117,8 +2349,9 @@ \section{Expressions} } \subsubsection{Object Identity} - \label{objectIdentity} + \LMLabel{objectIdentity} +\LMHash{} The predefined Dart function \cd{identical()} is defined such that \code{identical($c_1$, $c_2$)} iff: \begin{itemize} \item $c_1$ evaluates to either \NULL{} or an instance of \code{bool} and \code{$c_1$ == $c_2$}, OR @@ -2152,10 +2385,12 @@ \section{Expressions} \subsection{Constants} -\label{constants} +\LMLabel{constants} +\LMHash{} A {\em constant expression} is an expression whose value can never change, and that can be evaluated entirely at compile time. +\LMHash{} A constant expression is one of the following: \begin{itemize} \item A literal number (\ref{numbers}). @@ -2190,6 +2425,7 @@ \subsection{Constants} % designed so constants do not depend on check diode being on or not. +\LMHash{} It is a compile-time error if an expression is required to be a constant expression but its evaluation would raise an exception. % so, checked mode? analyzers? editor/development compilers? @@ -2232,6 +2468,7 @@ \subsection{Constants} \end{enumerate} } +\LMHash{} It is a compile-time error if the value of a compile-time constant expression depends on itself. \commentary{ @@ -2261,8 +2498,9 @@ \subsection{Constants} \subsection{Null} -\label{null} +\LMLabel{null} +\LMHash{} The reserved word \NULL{} denotes the {\em null object}. %\Q{Any methods, such as \code{isNull}?} @@ -2272,9 +2510,11 @@ \subsection{Null} . \end{grammar} +\LMHash{} The null object is the sole instance of the built-in class \code{Null}. Attempting to instantiate \code{Null} causes a run-time error. It is a compile-time error for a class to attempt to extend or implement \code{Null}. Invoking a method on \NULL{} yields a \code{NoSuchMethodError} unless the method is explicitly implemented by class \code{Null}. +\LMHash{} The static type of \NULL{} is $\bot$. \rationale{The decision to use $\bot$ instead of \code{Null} allows \NULL{} to be be assigned everywhere without complaint by the static checker. @@ -2282,8 +2522,9 @@ \subsection{Null} \subsection{Numbers} -\label{numbers} +\LMLabel{numbers} +\LMHash{} A {\em numeric literal} is either a decimal or hexadecimal integer of arbitrary size, or a decimal double. \begin{grammar} @@ -2309,24 +2550,30 @@ \subsection{Numbers} . \end{grammar} +\LMHash{} If a numeric literal begins with the prefix `0x' or `0X', it denotes the hexadecimal integer represented by the part of the literal following `0x' (respectively `0X'). Otherwise, if the numeric literal does not include a decimal point it denotes a decimal integer. Otherwise, the numeric literal denotes a 64 bit double precision floating point number as specified by the IEEE 754 standard. +\LMHash{} In principle, the range of integers supported by a Dart implementations is unlimited. In practice, it is limited by available memory. Implementations may also be limited by other considerations. \commentary{ For example, implementations may choose to limit the range to facilitate efficient compilation to Javascript. These limitations should be relaxed as soon as technologically feasible. } +\LMHash{} It is a compile-time error for a class to attempt to extend or implement \code{int}. It is a compile-time error for a class to attempt to extend or implement \code{double}. It is a compile-time error for any type other than the types \code{int} and \code{double} to attempt to extend or implement \code{num}. +\LMHash{} An {\em integer literal} is either a hexadecimal integer literal or a decimal integer literal. Invoking the getter \code{runtimeType} on an integer literal returns the \code{Type} object that is the value of the expression \code{int}. The static type of an integer literal is \code{int}. +\LMHash{} A {\em literal double} is a numeric literal that is not an integer literal. Invoking the getter \code{runtimeType} on a literal double returns the \code{Type} object that is the value of the expression \code{double}. The static type of a literal double is \code{double}. \subsection{Booleans} -\label{booleans} +\LMLabel{booleans} +\LMHash{} The reserved words \TRUE{} and \FALSE{} denote objects that represent the boolean values true and false respectively. They are the {\em boolean literals}. \begin{grammar} @@ -2335,17 +2582,20 @@ \subsection{Booleans} . \end{grammar} +\LMHash{} Both \TRUE{} and \FALSE{} implement the built-in class \code{bool}. It is a compile-time error for a class to attempt to extend or implement\code{ bool}. \commentary{ It follows that the two boolean literals are the only two instances of \code{bool}. } +\LMHash{} Invoking the getter \code{runtimeType} on a boolean literal returns the \code{Type} object that is the value of the expression \code{bool}. The static type of a boolean literal is \code{bool}. \subsubsection{Boolean Conversion} -\label{booleanConversion} +\LMLabel{booleanConversion} +\LMHash{} {\em Boolean conversion} maps any object $o$ into a boolean. Boolean conversion is defined by the function application \begin{dartCode} @@ -2368,8 +2618,9 @@ \subsubsection{Boolean Conversion} } \subsection{Strings} -\label{strings} +\LMLabel{strings} +\LMHash{} A {\em string} is a sequence of UTF-16 code units. \rationale{ @@ -2381,6 +2632,7 @@ \subsection{Strings} . \end{grammar} +\LMHash{} A string can be either a sequence of single line strings or a multiline string. \begin{grammar} @@ -2391,6 +2643,7 @@ \subsection{Strings} . \end{grammar} +\LMHash{} A single line string is delimited by either matching single quotes or matching double quotes. \commentary{ @@ -2400,6 +2653,7 @@ \subsection{Strings} \commentary{The grammar ensures that a single line string cannot span more than one line of source code, unless it includes an interpolated expression that spans multiple lines. } +\LMHash{} Adjacent %single line strings are implicitly concatenated to form a single string literal. @@ -2472,6 +2726,7 @@ \subsection{Strings} \end{grammar} +\LMHash{} Multiline strings are delimited by either matching triples of single quotes or matching triples of double quotes. If the first line of a multiline string consists solely of the whitespace characters defined by the production {\em WHITESPACE} \ref{lexicalRules}), possibly prefixed by $\backslash$, then that line is ignored, including the new line at its end. @@ -2479,6 +2734,7 @@ \subsection{Strings} The idea is to ignore whitespace, where whitespace is defined as tabs, spaces and newlines. These can be represented directly, but since for most characters prefixing by backslash is an identity, we allow those forms as well. } +\LMHash{} Strings support escape sequences for special characters. The escapes are: \begin{itemize} \item $\backslash$n for newline, equivalent to $\backslash$x0A. @@ -2496,8 +2752,10 @@ \subsection{Strings} \item Otherwise, $\backslash k$ indicates the character $k$ for any $k$ not in $\{n, r, f, b, t, v, x, u\}$. \end{itemize} +\LMHash{} Any string may be prefixed with the character `r', indicating that it is a {\em raw string}, in which case no escapes or interpolations are recognized. +\LMHash{} It is a compile-time error if a non-raw string literal contains a character sequence of the form $\backslash$x that is not followed by a sequence of two hexadecimal digits. It is a compile-time error if a non-raw string literal contains a character sequence of the form $\backslash$u that is not followed by either a sequence of four hexadecimal digits, or by curly brace delimited sequence of hexadecimal digits. @@ -2528,11 +2786,13 @@ \subsection{Strings} \end{grammar} +\LMHash{} All string literals implement the built-in class \code{String}. It is a compile-time error for a class to attempt to extend or implement \code{String}. Invoking the getter \code{runtimeType} on a string literal returns the \code{Type} object that is the value of the expression \code{String}. The static type of a string literal is \code{String}. \subsubsection{String Interpolation} -\label{stringInterpolation} +\LMLabel{stringInterpolation} +\LMHash{} It is possible to embed expressions within non-raw string literals, such that the these expressions are evaluated, and the resulting values are converted into strings and concatenated with the enclosing string. This process is known as {\em string interpolation}. \begin{grammar} @@ -2544,17 +2804,20 @@ \subsubsection{String Interpolation} \commentary{The reader will note that the expression inside the interpolation could itself include strings, which could again be interpolated recursively. } +\LMHash{} An unescaped \$ character in a string signifies the beginning of an interpolated expression. The \$ sign may be followed by either: \begin{itemize} \item A single identifier $id$ that must not contain the \$ character. \item An expression $e$ delimited by curly braces. \end{itemize} +\LMHash{} The form \code{\$id} is equivalent to the form \code{\$\{id\}}. An interpolated string \code{`$s_1$\$\{$e$\}$s_2$'} is equivalent to the concatenation of the strings \code{`$s_1$'}, \code{$e$.toString()} and \code{$`s_2$'}. Likewise an interpolated string \code{``$s_1$\$\{e\}$s_2$''} is equivalent to the concatenation of the strings \code{``$s_1$''}, \code{$e$.toString()} and \code{``$s_2$''}. \subsection{Symbols} -\label{symbols} +\LMLabel{symbols} +\LMHash{} A {\em symbol literal} denotes the name of a declaration in a Dart program. \begin{grammar} @@ -2562,9 +2825,11 @@ \subsection{Symbols} `\#' (operator $|$ (identifier (`{\escapegrammar .}' identifier)*)) . \end{grammar} +\LMHash{} A symbol literal \code{\#id} where \code{id} does not begin with an underscore ('\code{\_}') is equivalent to the expression \code{\CONST{} Symbol('id')}. -A symbol literal \code{\#\_id} evaluates to the object that would be returned by the call \code{mirror.getPrivateSymbol('id')} where mirror is an instance of the class \code{LibraryMirror} defined in the library \code{dart:mirrors}, reflecting the current library. +\LMHash{} +A symbol literal \code{\#\_id} evaluates to the object that would be returned by the call \code{mirror.getPrivateSymbol('id')} where mirror is an instance of the class \code{LibraryMirror} defined in the library \code{dart:mirrors}, reflecting the current library. \rationale{ One may well ask what is the motivation for introducing literal symbols? In some languages, symbols are canonicalized whereas strings are not. However literal strings are already canonicalized in Dart. Symbols are slightly easier to type compared to strings and their use can become strangely addictive, but this is not nearly sufficient justification for adding a literal form to the language. The primary motivation is related to the use of reflection and a web specific practice known as minification. @@ -2572,11 +2837,13 @@ \subsection{Symbols} Minification compresses identifiers consistently throughout a program in order to reduce download size. This practice poses difficulties for reflective programs that refer to program declarations via strings. A string will refer to an identifier in the source, but the identifier will no longer be used in the minified code, and reflective code using these truing would fail. Therefore, Dart reflection uses objects of type \code{Symbol} rather than strings. Instances of \code{Symbol} are guaranteed to be stable with repeat to minification. Providing a literal form for symbols makes reflective code easier to read and write. The fact that symbols are easy to type and can often act as convenient substitutes for enums are secondary benefits. } +\LMHash{} The static type of a symbol literal is \code{Symbol}. \subsection{Lists} -\label{lists} +\LMLabel{lists} +\LMHash{} A {\em list literal} denotes a list, which is an integer indexed collection of objects. \begin{grammar} @@ -2585,28 +2852,33 @@ \subsection{Lists} . \end{grammar} +\LMHash{} A list may contain zero or more objects. The number of elements in a list is its size. A list has an associated set of indices. An empty list has an empty set of indices. A non-empty list has the index set $\{0 \ldots n -1\}$ where $n$ is the size of the list. It is a runtime error to attempt to access a list using an index that is not a member of its set of indices. +\LMHash{} If a list literal begins with the reserved word \CONST{}, it is a {\em constant list literal} which is a compile-time constant (\ref{constants}) and therefore evaluated at compile-time. Otherwise, it is a {\em run-time list literal} and it is evaluated at run-time. Only run-time list literals can be mutated after they are created. Attempting to mutate a constant list literal will result in a dynamic error. +\LMHash{} It is a compile-time error if an element of a constant list literal is not a compile-time constant. It is a compile-time error if the type argument of a constant list literal includes a type parameter. \rationale{The binding of a type parameter is not known at compile-time, so we cannot use type parameters inside compile-time constants.} +\LMHash{} The value of a constant list literal \CONST{} $[e_1\ldots e_n]$ is an object $a$ whose class implements the built-in class $List$. The $i$th element of $a$ is $v_{i+1}$, where $v_i$ is the value of the compile-time expression $e_i$. The value of a constant list literal \CONST{} $[e_1 \ldots e_n]$ is defined as the value of the constant list literal \CONST{}$ < \DYNAMIC{}>[e_1\ldots e_n]$. +\LMHash{} Let $list_1 =$ \CONST{} $[e_{11} \ldots e_{1n}]$ and $list_2 =$ \CONST{} $[e_{21} \ldots e_{2n}]$ be two constant list literals and let the elements of $list_1$ and $list_2$ evaluate to $o_{11} \ldots o_{1n}$ and $o_{21} \ldots o_{2n}$ respectively. Iff \code{identical($o_{1i}$, $o_{2i}$)} for $i \in 1.. n$ and $V = U$ then \code{identical($list_1$, $list_2$)}. \commentary{In other words, constant list literals are canonicalized.} +\LMHash{} A run-time list literal $[e_1 \ldots e_n]$ is evaluated as follows: \begin{itemize} \item First, the expressions $e_1 \ldots e_n$ are evaluated in order they appear in the program, yielding objects $o_1 \ldots o_n$. \item A fresh instance (\ref{generativeConstructors}) $a$, of size $n$, whose class implements the built-in class $List$ is allocated. \item - The operator \code{[]=} is invoked on $a$ with first argument $i$ and second argument %The $i$th element of $a$ is set to $o_{i+1}, 0 \le i < n$. @@ -2619,6 +2891,7 @@ \subsection{Lists} Note that this document does not specify an order in which the elements are set. This allows for parallel assignments into the list if an implementation so desires. The order can only be observed in checked mode (and may not be relied upon): if element $i$ is not a subtype of the element type of the list, a dynamic type error will occur when $a[i]$ is assigned $o_{i-1}$. } +\LMHash{} A runtime list literal $[e_1 \ldots e_n]$ is evaluated as $< \DYNAMIC{}>[e_1\ldots e_n]$. @@ -2627,6 +2900,7 @@ \subsection{Lists} $>[[1, 2, 3], [4, 5, 6]]$ is a list with type parameter $List$, containing two lists with type parameter \DYNAMIC{}. } +\LMHash{} The static type of a list literal of the form \CONST{}$ [e_1\ldots e_n]$ or the form $[e_1 \ldots e_n]$ is $List$. The static type a list literal of the form \CONST{} $[e_1 \ldots e_n$] or the form $[e_1\ldots e_n$] is $List< \DYNAMIC{}>$. \rationale{ @@ -2637,8 +2911,9 @@ \subsection{Lists} % what about generics? \subsection{Maps} -\label{maps} +\LMLabel{maps} +\LMHash{} A {\em map literal} denotes a map object. \begin{grammar} @@ -2652,22 +2927,28 @@ \subsection{Maps} . \end{grammar} +\LMHash{} A {\em map literal} consists of zero or more entries. Each entry has a {\em key} and a {\em value}. Each key and each value is denoted by an expression. +\LMHash{} If a map literal begins with the reserved word \CONST{}, it is a {\em constant map literal} which is a compile-time constant (\ref{constants}) and therefore evaluated at compile-time. Otherwise, it is a {\em run-time map literal} and it is evaluated at run-time. Only run-time map literals can be mutated after they are created. Attempting to mutate a constant map literal will result in a dynamic error. +\LMHash{} It is a compile-time error if either a key or a value of an entry in a constant map literal is not a compile-time constant. It is a compile-time error if the key of an entry in a constant map literal is an instance of a class that implements the operator $==$ unless the key is a %symbol, string, an integer, a literal symbol or the result of invoking a constant constructor of class \cd{Symbol}. It is a compile-time error if the type arguments of a constant map literal include a type parameter. +\LMHash{} The value of a constant map literal \CONST{}$ \{k_1:e_1\ldots k_n :e_n\}$ is an object $m$ whose class implements the built-in class $Map$. The entries of $m$ are $u_i:v_i, i \in 1 .. n$, where $u_i$ is the value of the compile-time expression $k_i$ and $v_i$ is the value of the compile-time expression $e_i$. The value of a constant map literal \CONST{} $\{k_1:e_1\ldots k_n :e_n\}$ is defined as the value of a constant map literal \CONST{} $<\DYNAMIC{}, \DYNAMIC{}>\{k_1:e_1\ldots k_n :e_n\}$. +\LMHash{} Let $map_1 =$ \CONST{}$ \{k_{11}:e_{11} \ldots k_{1n} :e_{1n}\}$ and $map_2 =$ \CONST{}$ \{k_{21}:e_{21} \ldots k_{2n} :e_{2n}\}$ be two constant map literals. Let the keys of $map_1$ and $map_2$ evaluate to $s_{11} \ldots s_{1n}$ and $s_{21} \ldots s_{2n}$ respectively, and let the elements of $map_1$ and $map_2$ evaluate to $o_{11} \ldots o_{1n}$ and $o_{21} \ldots o_{2n}$ respectively. Iff \code{identical($o_{1i}$, $o_{2i}$)} and \code{identical($s_{1i}$, $s_{2i}$)} for $i \in 1.. n$, and $K = J, V = U$ then \code{identical($map_1$, $map_2$)}. \commentary{In other words, constant map literals are canonicalized.} +\LMHash{} A runtime map literal $\{k_1:e_1\ldots k_n :e_n\}$ is evaluated as follows: \begin{itemize} \item @@ -2682,12 +2963,15 @@ \subsection{Maps} \end{itemize} +\LMHash{} A runtime map literal $\{k_1:e_1\ldots k_n :e_n\}$ is evaluated as $<\DYNAMIC{}, \DYNAMIC{}>\{k_1:e_1\ldots k_n :e_n\}$. +\LMHash{} Iff all the keys in a map literal are compile-time constants, it is a static warning if the values of any two keys in a map literal are equal. +\LMHash{} A map literal is ordered: iterating over the keys and/or values of the maps always happens in the order the keys appeared in the source code. @@ -2695,12 +2979,14 @@ \subsection{Maps} Of course, if a key repeats, the order is defined by first occurrence, but the value is defined by the last. } +\LMHash{} The static type of a map literal of the form \CONST{}$ \{k_1:e_1\ldots k_n :e_n\}$ or the form $\{k_1:e_1\ldots k_n :e_n\}$ is $Map$. The static type a map literal of the form \CONST{}$\{k_1:e_1\ldots k_n :e_n\}$ or the form $\{k_1:e_1\ldots k_n :e_n\}$ is $Map<\DYNAMIC{}, \DYNAMIC{}>$. \subsection{Throw} -\label{throw} +\LMLabel{throw} +\LMHash{} The {\em throw expression} is used to raise an exception. \begin{grammar} @@ -2714,43 +3000,53 @@ \subsection{Throw} \end{grammar} +\LMHash{} The {\em current exception} is the last exception raised and not subsequently caught at a given moment during runtime. +\LMHash{} Evaluation of a throw expression of the form \code{\THROW{} $e$;} proceeds as follows: +\LMHash{} The expression $e$ is evaluated yielding a value $v$. \commentary{ There is no requirement that the expression $e$ evaluate to a special kind of exception or error object. } +\LMHash{} If $e$ evaluates to \NULL{} (\ref{null}), then a \code{NullThrownError} is thrown. Otherwise the current exception is set to $v$ and the current return value (\ref{return}) becomes undefined. \rationale{The current exception and the current return value must never be simultaneously defined, as they represent mutually exclusive options for exiting the current function. } +\LMHash{} Let $f$ be the immediately enclosing function. +\LMHash{} If $f$ is synchronous (\ref{functions}), control is transferred to the nearest dynamically enclosing exception handler. \commentary{ If $f$ is marked \SYNC* then a dynamically enclosing exception handler encloses the call to \code{moveNext()} that initiated the evaluation of the throw expression. } +\LMHash{} If $f$ is asynchronous then if there is a dynamically enclosing exception handler $h$ (\ref{try}) introduced by the current activation, control is transferred to $h$, otherwise $f$ terminates. \rationale{ The rules for where a thrown exception will be handled must necessarily differ between the synchronous and asynchronous cases. Asynchronous functions cannot transfer control to an exception handler defined outside themselves. Asynchronous generators post exceptions to their stream. Other asynchronous functions report exceptions via their future. } +\LMHash{} If the object being thrown is an instance of class \code{Error} or a subclass thereof, its \code{stackTrace} getter will return the stack trace current at the point where the the object was first thrown. +\LMHash{} The static type of a throw expression is $\bot$. \subsection{ Function Expressions} -\label{functionExpressions} +\LMLabel{functionExpressions} +\LMHash{} A {\em function literal} is an object that encapsulates an executable unit of code. \begin{grammar} @@ -2759,6 +3055,7 @@ \subsection{ Function Expressions} . \end{grammar} +\LMHash{} The class of a function literal implements the built-in class \code{Function}. %Invoking the getter \code{runtimeType} on a function literal returns the \code{Type} object that is the value of the expression \code{Function}. % not necessarily @@ -2766,6 +3063,7 @@ \subsection{ Function Expressions} %Q{Can anyone implement it? Then we should define things via call} +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k} = d_k]) => e$ @@ -2773,11 +3071,13 @@ \subsection{ Function Expressions} $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow T_0$, where $T_0$ is the static type of $e$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k} = d_k])$ \ASYNC{} $=> e$ is $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow Future$, where $T_0$ is the static type of $e$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\}) => e$ @@ -2785,34 +3085,40 @@ \subsection{ Function Expressions} $(T_1 \ldots, T_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\}) \rightarrow T_0$, where $T_0$ is the static type of $e$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})$ \ASYNC{} $=> e$ is $(T_1 \ldots, T_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\}) \rightarrow Future$, where $T_0$ is the static type of $e$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k}= d_k])\{s\}$ is $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow \DYNAMIC{}$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k}= d_k])$ $ \ASYNC{}$ $\{s\}$ is $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow Future$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k}= d_k])$ $ \ASYNC*{}$ $\{s\}$ is $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow Stream$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k}= d_k])$ $ \SYNC*{}$ $\{s\}$ is $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow Iterable$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, [T_{n+1}$ $x_{n+1} = d_1, \ldots, T_{n+k}$ $x_{n+k}= d_k])\{s\}$ @@ -2820,30 +3126,35 @@ \subsection{ Function Expressions} is $(T_1 \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \rightarrow \DYNAMIC{}$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})$ $\ASYNC{}$ $\{s\}$ is $(T_1 \ldots, T_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\}) \rightarrow Future{}$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})$ $\ASYNC*{}$ $\{s\}$ is $(T_1 \ldots, T_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\}) \rightarrow Stream{}$. +\LMHash{} The static type of a function literal of the form $(T_1$ $a_1, \ldots, T_n$ $a_n, \{T_{n+1}$ $x_{n+1} : d_1, \ldots, T_{n+k}$ $x_{n+k} : d_k\})$ $\SYNC*{}$ $\{s\}$ is $(T_1 \ldots, T_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\}) \rightarrow Iterable{}$. +\LMHash{} In all of the above cases, whenever $T_i, 1 \le i \le n+k$, is not specified, it is considered to have been specified as \DYNAMIC{}. \subsection{ This} -\label{this} +\LMLabel{this} +\LMHash{} The reserved word \THIS{} denotes the target of the current instance member invocation. \begin{grammar} @@ -2852,23 +3163,27 @@ \subsection{ This} . \end{grammar} +\LMHash{} The static type of \THIS{} is the interface of the immediately enclosing class. \commentary{ We do not support self-types at this point. } +\LMHash{} It is a compile-time error if \THIS{} appears, implicitly or explicitly, in a top-level function or variable initializer, in a factory constructor, or in a static method or variable initializer, or in the initializer of an instance variable. \subsection{ Instance Creation} -\label{instanceCreation} +\LMLabel{instanceCreation} +\LMHash{} Instance creation expressions invoke constructors to produce instances. %It is a compile-time error if any of the type arguments to a constructor of a generic type invoked by a new expression or a constant object expression do not denote types in the enclosing lexical scope. %It is a compile-time error if a constructor of a non-generic type invoked by a new expression or a constant object expression is passed any type arguments. It is a compile-time error if a constructor of a generic type with $n$ type parameters invoked by a new expression or a constant object expression is passed $m$ type arguments where $m \ne n$, or if any of its type arguments is misconstructed (\ref{parameterizedTypes}). +\LMHash{} It is a static type warning if the type $T$ in an instance creation expression of one of the forms @@ -2880,6 +3195,7 @@ \subsection{ Instance Creation} \CONST{} $T(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ is malformed (\ref{dynamicTypeSystem}) or malbounded (\ref{parameterizedTypes}). +\LMHash{} It is a compile-time error if the type $T$ in an instance creation expression of one of the forms \NEW{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$, @@ -2895,8 +3211,9 @@ \subsection{ Instance Creation} \subsubsection{ New} -\label{new} +\LMLabel{new} +\LMHash{} The {\em new expression} invokes a constructor (\ref{constructors}). \begin{grammar} @@ -2905,6 +3222,7 @@ \subsubsection{ New} . \end{grammar} +\LMHash{} Let $e$ be a new expression of the form \NEW{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ or the form @@ -2917,12 +3235,14 @@ \subsubsection{ New} %not a class accessible in the current scope, optionally followed by type arguments. +\LMHash{} If $T$ is a class or parameterized type accessible in the current scope then: \begin{itemize} \item If $e$ is of the form \NEW{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ it is a static warning if $T.id$ is not the name of a constructor declared by the type $T$. If $e$ is of the form \NEW{} $T(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ it is a static warning if the type $T$ does not declare a constructor with the same name as the declaration of $T$. \end{itemize} +\LMHash{} If $T$ is a parameterized type (\ref{parameterizedTypes}) $S$, let $R = S$. %It is a %compile-time CHANGED @@ -2931,46 +3251,60 @@ \subsubsection{ New} If $T$ is not a parameterized type, let $R = T$. Furthermore, if $e$ is of the form \NEW{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ then let $q$ be the constructor $T.id$, otherwise let $q$ be the constructor $T$. +\LMHash{} If $R$ is a generic with $l = m$ type parameters then \begin{itemize} \item If $T$ is not a parameterized type, then for $ i \in 1 .. l$, let $V_i = \DYNAMIC{}$. \item If $T$ is a parameterized type then let $V_i = U_i$ for $ i \in 1 .. m$. \end{itemize} +\LMHash{} If $R$ is a generic with $l \ne m$ type parameters then for $ i \in 1 .. l$, let $V_i = \DYNAMIC{}$. In any other case, let $V_i = U_i$ for $ i \in 1 .. m$. +\LMHash{} Evaluation of $e$ proceeds as follows: +\LMHash{} First, the argument list $(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ is evaluated. +\LMHash{} If $T$ is a deferred type with prefix $p$, then if $p$ has not been successfully loaded, a dynamic error occurs. +\LMHash{} Then, if $q$ is a non-factory constructor of an abstract class then an \code{AbstractClassInstantiationError} is thrown. +\LMHash{} If $T$ is malformed or if $T$ is a type variable a dynamic error occurs. In checked mode, if $T$ or any of its superclasses is malbounded a dynamic error occurs. Otherwise, if $q$ is not defined or not accessible, a \code{NoSuchMethodError} is thrown. If $q$ has less than $n$ positional parameters or more than $n$ required parameters, or if $q$ lacks any of the keyword parameters $\{ x_{n+1}, \ldots, x_{n+k}\}$ a \code{NoSuchMethodError} is thrown. +\LMHash{} Otherwise, if $q$ is a generative constructor (\ref{generativeConstructors}), then: \commentary{Note that it this point we are assured that the number of actual type arguments match the number of formal type parameters.} +\LMHash{} A fresh instance (\ref{generativeConstructors}), $i$, of class $R$ is allocated. For each instance variable $f$ of $i$, if the variable declaration of $f$ has an initializer expression $e_f$, then $e_f$ is evaluated to an object $o_f$ and $f$ is bound to $o_f$. Otherwise $f$ is bound to \NULL{}. \commentary{ Observe that \THIS{} is not in scope in $e_f$. Hence, the initialization cannot depend on other properties of the object being instantiated. } +\LMHash{} Next, $q$ is executed with \THIS{} bound to $i$, the type parameters (if any) of $R$ bound to the actual type arguments $V_1, \ldots, V_l$ and the formal parameter bindings that resulted from the evaluation of the argument list. The result of the evaluation of $e$ is $i$. +\LMHash{} Otherwise, $q$ is a factory constructor (\ref{factories}). Then: +\LMHash{} If $q$ is a redirecting factory constructor of the form $T(p_1, \ldots, p_{n+k}) = c;$ or of the form $T.id(p_1, \ldots, p_{n+k}) = c;$ then the result of the evaluation of $e$ is equivalent to evaluating the expression $[V_1, \ldots, V_m/T_1, \ldots, T_m]($\code{\NEW{} $c(a_1, \ldots, a_n, x_{n+1}: a_{n+1}, \ldots, x_{n+k}: a_{n+k}))$}. If evaluation of $q$ causes $q$ to be re-evaluated cyclically, a runtime error occurs. +\LMHash{} Otherwise, the body of $q$ is executed with respect to the bindings that resulted from the evaluation of the argument list and the type parameters (if any) of $q$ bound to the actual type arguments $V_1, \ldots, V_l$ resulting in an object $i$. The result of the evaluation of $e$ is $i$. +\LMHash{} It is a static warning if $q$ is a constructor of an abstract class and $q$ is not a factory constructor. \commentary{The above gives precise meaning to the idea that instantiating an abstract class leads to a warning. @@ -2980,6 +3314,7 @@ \subsubsection{ New} \rationale{In particular, a factory constructor can be declared in an abstract class and used safely, as it will either produce a valid instance or lead to a warning inside its own declaration. } +\LMHash{} The static type of an instance creation expression of either the form \NEW{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ @@ -2994,8 +3329,9 @@ \subsubsection{ New} \subsubsection{ Const} -\label{const} +\LMLabel{const} +\LMHash{} A {\em constant object expression} invokes a constant constructor (\ref{constantConstructors}). \begin{grammar} @@ -3004,6 +3340,7 @@ \subsubsection{ Const} . \end{grammar} +\LMHash{} Let $e$ be a constant object expression of the form \CONST{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ @@ -3012,18 +3349,23 @@ \subsubsection{ Const} \commentary{In particular, $T$ may not be a type variable.} +\LMHash{} If $T$ is a parameterized type, it is a compile-time error if $T$ includes a type variable among its type arguments. +\LMHash{} If $e$ is of the form \CONST{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ it is a compile-time error if $T.id$ is not the name of a constant constructor declared by the type $T$. If $e$ is of the form \CONST{} $T(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ it is a compile-time error if the type $T$ does not declare a constant constructor with the same name as the declaration of $T$. +\LMHash{} In all of the above cases, it is a compile-time error if $a_i, i\in 1 .. n + k$, is not a compile-time constant expression. %If $T$ is a parameterized type (\ref{parameterizedTypes}) $S$, let $R = S$. It is a compile-time error if $T$ is is malformed. If $T$ is not a parameterized type, let $R = T$. %Finally, % If $T$ is a generic with $l$ retype parameters, then for all $ i \in 1 .. l$, let $V_i = \DYNAMIC{}$. +\LMHash{} Evaluation of $e$ proceeds as follows: +\LMHash{} First, if $e$ is of the form \CONST{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ @@ -3032,6 +3374,7 @@ \subsubsection{ Const} \NEW{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. +\LMHash{} Otherwise, $e$ must be of the form \CONST{} $T(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$, @@ -3040,6 +3383,7 @@ \subsubsection{ Const} \NEW{} $T(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. +\LMHash{} Then: \begin{itemize} \item If during execution of the program, a constant object expression has already evaluated to an instance $j$ of class $R$ with type arguments $V_i, 1 \le i \le m$, then: @@ -3053,6 +3397,7 @@ \subsubsection{ Const} In other words, constant objects are canonicalized. In order to determine if an object is actually new, one has to compute it; then it can be compared to any cached instances. If an equivalent object exists in the cache, we throw away the newly created object and use the cached one. Objects are equivalent if they have identical fields and identical type arguments. Since the constructor cannot induce any side effects, the execution of the constructor is unobservable. The constructor need only be executed once per call site, at compile-time. } +\LMHash{} The static type of a constant object expression of either the form \CONST{} $T.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ @@ -3063,6 +3408,7 @@ \subsubsection{ Const} is $T$. It is a static warning if the static type of $a_i, 1 \le i \le n+ k$ may not be assigned to the type of the corresponding formal parameter of the constructor $T.id$ (respectively $T$). +\LMHash{} It is a compile-time error if evaluation of a constant object results in an uncaught exception being thrown. \commentary{ @@ -3094,14 +3440,17 @@ \subsubsection{ Const} } +\LMHash{} Given an instance creation expression of the form \CONST{} $q(a_1, \ldots , a_n)$ it is a static warning if $q$ is a constructor of an abstract class (\ref{abstractInstanceMembers}) but $q$ is not a factory constructor. \subsection{ Spawning an Isolate} -\label{spawningAnIsolate} +\LMLabel{spawningAnIsolate} +\LMHash{} Spawning an isolate is accomplished via what is syntactically an ordinary library call, invoking one of the functions \code{spawnUri()} or \code{spawnFunction()}defined in the \code{dart:isolate} library. However, such calls have the semantic effect of creating a new isolate with its own memory and thread of control. +\LMHash{} An isolate's memory is finite, as is the space available to its thread's call stack. It is possible for a running isolate to exhaust its memory or stack, resulting in a run-time error that cannot be effectively caught, which will force the isolate to be suspended. \commentary{ @@ -3111,12 +3460,15 @@ \subsection{ Spawning an Isolate} \subsection{ Function Invocation} -\label{functionInvocation} +\LMLabel{functionInvocation} +\LMHash{} Function invocation occurs in the following cases: when a function expression (\ref{functionExpressions}) is invoked (\ref{functionExpressionInvocation}), when a method (\ref{methodInvocation}), getter (\ref{topLevelGetterInvocation}, \ref{propertyExtraction}) or setter (\ref{assignment}) is invoked or when a constructor is invoked (either via instance creation (\ref{instanceCreation}), constructor redirection (\ref{redirectingConstructors}) or super initialization). The various kinds of function invocation differ as to how the function to be invoked, $f$, is determined, as well as whether \THIS{} (\ref{this}) is bound. Once $f$ has been determined, the formal parameters of $f$ are bound to corresponding actual arguments. When the body of $f$ is executed it will be executed with the aforementioned bindings. +\LMHash{} If $f$ is marked \ASYNC{} (\ref{functions}), then a fresh instance (\ref{generativeConstructors}) $o$ implementing the built-in class \code{Future} is associated with the invocation and immediately returned to the caller. The body of $f$ is scheduled for execution at some future time. The future $o$ will complete when $f$ terminates. The value used to complete $o$ is the current return value (\ref{return}), if it is defined, and the current exception (\ref{throw}) otherwise. +\LMHash{} If $f$ is marked \ASYNC* (\ref{functions}), then a fresh instance $s$ implementing the built-in class \code{Stream} is associated with the invocation and immediately returned. When $s$ is listened to, execution of the body of $f$ will begin. When $f$ terminates: \begin{itemize} \item If the current return value is defined then, if $s$ has been canceled then its cancellation future is completed with \NULL{} (\ref{null}). @@ -3132,16 +3484,20 @@ \subsection{ Function Invocation} When an asynchronous generator's stream has been canceled, cleanup will occur in the \FINALLY{} clauses (\ref{try}) inside the generator. We choose to direct any exceptions that occur at this time to the cancellation future rather than have them be lost. } +\LMHash{} If $f$ is asynchronous then, when $f$ terminates, any open stream subscriptions associated with any asynchronous for loops (\ref{asynchronousFor-in}) or yield-each statements (\ref{yieldEach}) executing within $f$ are canceled. \rationale{Such streams may be left open by for loops that were escaped when an exception was thrown within them for example. } +\LMHash{} If $f$ is marked \SYNC* (\ref{functions}), then a fresh instance $i$ implementing the built-in class \code{Iterable} is associated with the invocation and immediately returned. When iteration over the iterable is started, by getting an iterator $j$ from the iterable and calling \code{moveNext()} on it, execution of the body of $f$ will begin. When $f$ terminates, $j$ is positioned after its last element, so that its current value is \NULL{} and the current call to \code{moveNext()} on $j$ returns false, as will all further calls. +\LMHash{} If $f$ is synchronous and is not a generator (\ref{functions}) then execution of the body of $f$ begins immediately. When $f$ terminates the current return value is returned to the caller. +\LMHash{} Execution of $f$ terminates when the first of the following occurs: \begin{itemize} \item An exception is thrown and not caught within the current function activation. @@ -3153,8 +3509,9 @@ \subsection{ Function Invocation} \subsubsection{ Actual Argument List Evaluation} -\label{actualArguments} +\LMLabel{actualArguments} +\LMHash{} Function invocation involves evaluation of the list of actual arguments to the function and binding of the results to the function's formal parameters. \begin{grammar} @@ -3173,12 +3530,14 @@ \subsubsection{ Actual Argument List Evaluation} . \end{grammar} +\LMHash{} Evaluation of an actual argument list of the form $(a_1, \ldots, a_m, q_1: a_{m+1}, \ldots, q_l: a_{m+l})$ proceeds as follows: +\LMHash{} The arguments $a_1, \ldots, a_{m+l}$ are evaluated in the order they appear in the program, yielding objects $o_1, \ldots, o_{m+l}$. \commentary{Simply stated, an argument list consisting of $m$ positional arguments and $l$ named arguments is evaluated from left to right. @@ -3186,10 +3545,12 @@ \subsubsection{ Actual Argument List Evaluation} \subsubsection{ Binding Actuals to Formals} -\label{bindingActualsToFormals} +\LMLabel{bindingActualsToFormals} +\LMHash{} Let $f$ be a function with $h$ required parameters, let $p_1 \ldots p_n$ be the positional parameters of $f$ and let $p_{h+1}, \ldots, p_{h+k}$ be the optional parameters declared by $f$. +\LMHash{} An evaluated actual argument list $o_1 \ldots o_{m+l}$ derived from an actual argument list of the form $(a_1, \ldots, a_m, q_1: a_{m+1}, \ldots, q_l: a_{m+l})$ is bound to the formal parameters of $f$ as follows: \commentary{ @@ -3201,25 +3562,31 @@ \subsubsection{ Binding Actuals to Formals} } +\LMHash{} If $m < h$, or $m > n$, a \cd{NoSuchMethodError} is thrown. Furthermore, each $q_i, 1 \le i \le l$, must have a corresponding named parameter in the set $\{p_{n+1}, \ldots, p_{n +k}\}$ or a \cd{NoSuchMethodError} is thrown. Then $p_i$ is bound to $o_i, i \in 1.. m$, and $q_j$ is bound to $o_{m+j}, j \in 1.. l$. All remaining formal parameters of $f$ are bound to their default values. \commentary{All of these remaining parameters are necessarily optional and thus have default values.} +\LMHash{} In checked mode, it is a dynamic type error if $o_i$ is not \NULL{} and the actual type (\ref{actualTypeOfADeclaration}) of $p_i$ is not a supertype of the type of $o_i, i \in 1.. m$. In checked mode, it is a dynamic type error if $o_{m+j}$ is not \NULL{} and the actual type (\ref{actualTypeOfADeclaration}) of $q_j$ is not a supertype of the type of $o_{m+j}, j \in 1.. l$. +\LMHash{} It is a compile-time error if $q_i = q_j$ for any $i \ne j$. +\LMHash{} Let $T_i$ be the static type of $a_i$, let $S_i$ be the type of $p_i, i \in 1 .. h+k$ and let $S_q$ be the type of the named parameter $q$ of $f$. It is a static warning if $T_j$ may not be assigned to $S_j, j \in 1..m$. It is a static warning if $m < h$ or if $m > n$. Furthermore, each $q_i, 1 \le i \le l$, must have a corresponding named parameter in the set $\{p_{n+1}, \ldots, p_{n +k}\}$ or a static warning occurs. It is a static warning if $T_{m+j}$ may not be assigned to $S_{q_j}, j \in 1 .. l$. \subsubsection{ Unqualified Invocation} -\label{unqualifiedInvocation} +\LMLabel{unqualifiedInvocation} +\LMHash{} An unqualified function invocation $i$ has the form $id(a_1, \ldots, a_n, x_{n+1}: a_{n+1}, \ldots, x_{n+k}: a_{n+k})$, where $id$ is an identifier. +\LMHash{} If there exists a lexically visible declaration named $id$, let $f_{id}$ be the innermost such declaration. Then: \begin{itemize} \item @@ -3235,8 +3602,10 @@ \subsubsection{ Unqualified Invocation} %Unqualified access to static methods of superclasses is inconsistent with the idea that static methods are not inherited. It is not particularly necessary and may be restricted in future versions. %} +\LMHash{} Otherwise, if $i$ occurs inside a top level or static function (be it function, method, getter, or setter) or variable initializer, evaluation of $i$ causes a \cd{NoSuchMethodError} to be thrown. +\LMHash{} If $i$ does not occur inside a top level or static function, $i$ is equivalent to $\THIS{}.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. % Should also say: @@ -3247,8 +3616,9 @@ \subsubsection{ Unqualified Invocation} \subsubsection{ Function Expression Invocation} -\label{functionExpressionInvocation} +\LMLabel{functionExpressionInvocation} +\LMHash{} A function expression invocation $i$ has the form $e_f(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$, @@ -3259,6 +3629,7 @@ \subsubsection{ Function Expression Invocation} \code{$a.b(x)$} is parsed as a method invocation of method \code{$b()$} on object \code{$a$}, not as an invocation of getter \code{$b$} on \code{$a$} followed by a function call \code{$(a.b)(x)$}. If a method or getter \code{$b$} exists, the two will be equivalent. However, if \code{$b$} is not defined on \code{$a$}, the resulting invocation of \code{noSuchMethod()} would differ. The \code{Invocation} passed to \code{noSuchMethod()} would describe a call to a method \code{$b$} with argument \code{$x$} in the former case, and a call to a getter \code{$b$} (with no arguments) in the latter. } +\LMHash{} Otherwise: A function expression invocation $e_f(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ is equivalent to $e_f.call(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. @@ -3267,6 +3638,7 @@ \subsubsection{ Function Expression Invocation} The implication of this definition, and the other definitions involving the method \code{call()}, is that user defined types can be used as function values provided they define a \CALL{} method. The method \CALL{} is special in this regard. The signature of the \CALL{} method determines the signature used when using the object via the built-in invocation syntax. } +\LMHash{} It is a static warning if the static type $F$ of $e_f$ may not be assigned to a function type. If $F$ is not a function type, the static type of $i$ is \DYNAMIC{}. Otherwise the static type of $i$ is the declared return type of $F$. %\item Let $T_i$ be the static type of $a_i, i \in 1 .. n+k$. It is a static warning if $F$ is not a supertype of $(T_1, \ldots, T_n, [T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}]) \to \bot$. @@ -3275,10 +3647,12 @@ \subsubsection{ Function Expression Invocation} \subsection{ Lookup} \subsubsection{Method Lookup} -\label{methodLookup} +\LMLabel{methodLookup} +\LMHash{} The result of a lookup of a method $m$ in object $o$ with respect to library $L$ is the result of a lookup of method $m$ in class $C$ with respect to library $L$, where $C$ is the class of $o$. +\LMHash{} The result of a lookup of method $m$ in class $C$ with respect to library $L$ is: If $C$ declares a concrete instance method named $m$ that is accessible to $L$, then that method is the result of the lookup. Otherwise, if $C$ has a superclass $S$, then the result of the lookup is the result of looking up $m$ in $S$ with respect to $L$. Otherwise, we say that the method lookup has failed. @@ -3288,10 +3662,12 @@ \subsubsection{Method Lookup} \subsubsection{ Getter and Setter Lookup} -\label{getterAndSetterLookup} +\LMLabel{getterAndSetterLookup} +\LMHash{} The result of a lookup of a getter (respectively setter) $m$ in object $o$ with respect to library $L$ is the result of looking up getter (respectively setter) $m$ in class $C$ with respect to $L$, where $C$ is the class of $o$. +\LMHash{} The result of a lookup of a getter (respectively setter) $m$ in class $C$ with respect to library $L$ is: If $C$ declares a concrete instance getter (respectively setter) named $m$ that is accessible to $L$, then that getter (respectively setter) is the result of the lookup. Otherwise, if $C$ has a superclass $S$, then the result of the lookup is the result of looking up getter (respectively setter) $m$ in $S$ with respect to $L$. Otherwise, we say that the lookup has failed. @@ -3301,52 +3677,64 @@ \subsubsection{ Getter and Setter Lookup} \subsection{ Top level Getter Invocation} -\label{topLevelGetterInvocation} +\LMLabel{topLevelGetterInvocation} +\LMHash{} Evaluation of a top-level getter invocation $i$ of the form $m$, where $m$ is an identifier, proceeds as follows: +\LMHash{} The getter function $m$ is invoked. The value of $i$ is the result returned by the call to the getter function. \commentary{ Note that the invocation is always defined. Per the rules for identifier references, an identifier will not be treated as a top-level getter invocation unless the getter $i$ is defined. } +\LMHash{} The static type of $i$ is the declared return type of $m$. \subsection{ Method Invocation} -\label{methodInvocation} +\LMLabel{methodInvocation} +\LMHash{} Method invocation can take several forms as specified below. \subsubsection{Ordinary Invocation} -\label{ordinaryInvocation} +\LMLabel{ordinaryInvocation} +\LMHash{} An ordinary method invocation $i$ has the form $o.m(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. +\LMHash{} Evaluation of an ordinary method invocation $i$ of the form $o.m(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ proceeds as follows: +\LMHash{} First, the expression $o$ is evaluated to a value $v_o$. Next, the argument list $(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ is evaluated yielding actual argument objects $o_1, \ldots , o_{n+k}$. Let $f$ be the result of looking up (\ref{methodLookup}) method $m$ in $v_o$ with respect to the current library $L$. +\LMHash{} Let $p_1 \ldots p_h$ be the required parameters of $f$, let $p_1 \ldots p_m$ be the positional parameters of $f$ and let $p_{h+1}, \ldots, p_{h+l}$ be the optional parameters declared by $f$. \commentary{ We have an argument list consisting of $n$ positional arguments and $k$ named arguments. We have a function with $h$ required parameters and $l$ optional parameters. The number of positional arguments must be at least as large as the number of required parameters, and no larger than the number of positional parameters. All named arguments must have a corresponding named parameter. } +\LMHash{} If $n < h$, or $n > m$, the method lookup has failed. Furthermore, each $x_i, n+1 \le i \le n+k$, must have a corresponding named parameter in the set $\{p_{m+1}, \ldots, p_{h+l}\}$ or the method lookup also fails. If $v_o$ is an instance of \code{Type} but $o$ is not a constant type literal, then if $m$ is a method that forwards (\ref{functionDeclarations}) to a static method, method lookup fails. Otherwise method lookup has succeeded. +\LMHash{} If the method lookup succeeded, the body of $f$ is executed with respect to the bindings that resulted from the evaluation of the argument list, and with \THIS{} bound to $v_o$. The value of $i$ is the value returned after $f$ is executed. +\LMHash{} If the method lookup has failed, then let $g$ be the result of looking up getter (\ref{getterAndSetterLookup}) $m$ in $v_o$ with respect to $L$. f $v_o$ is an instance of \code{Type} but $o$ is not a constant type literal, then if $g$ is a getter that forwards to a static getter, getter lookup fails. If the getter lookup succeeded, let $v_g$ be the value of the getter invocation $o.m$. Then the value of $i$ is the result of invoking the static method \code{Function.apply()} with arguments $v.g, [o_1, \ldots , o_n], \{x_{n+1}: o_{n+1}, \ldots , x_{n+k}: o_{n+k}\}$. +\LMHash{} If getter lookup has also failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that : \begin{itemize} \item \code{im.isMethod} evaluates to \code{\TRUE{}}. @@ -3355,6 +3743,7 @@ \subsubsection{Ordinary Invocation} \item \code{im.namedArguments} evaluates to an immutable map with the same keys and values as \code{\{$x_{n+1}: o_{n+1}, \ldots, x_{n+k} : o_{n+k}$\}}. \end{itemize} +\LMHash{} Then the method \code{noSuchMethod()} is looked up in $v_o$ and invoked with argument $im$, and the result of this invocation is the result of evaluating $i$. However, if the implementation found cannot be invoked with a single positional argument, the implementation of \code{noSuchMethod()} in class \code{Object} is invoked on $v_o$ with argument $im'$, where $im'$ is an instance of \code{Invocation} such that : \begin{itemize} \item \code{im.isMethod} evaluates to \code{\TRUE{}}. @@ -3378,6 +3767,7 @@ \subsubsection{Ordinary Invocation} \commentary{Notice that the wording carefully avoids re-evaluating the receiver $o$ and the arguments $a_i$. } +\LMHash{} Let $T$ be the static type of $o$. It is a static type warning if $T$ does not have an accessible (\ref{privacy}) instance member named $m$ unless either: \begin{itemize} \item @@ -3385,14 +3775,17 @@ \subsubsection{Ordinary Invocation} \item $T$ is \code{Type}, $e$ is a constant type literal and the class corresponding to $e$ has a static getter named $m$. \end{itemize} +\LMHash{} If $T.m$ exists, it is a static type warning if the type $F$ of $T.m$ may not be assigned to a function type. If $T.m$ does not exist, or if $F$ is not a function type, the static type of $i$ is \DYNAMIC{}; otherwise the static type of $i$ is the declared return type of $F$. +\LMHash{} It is a compile-time error to invoke any of the methods of class \cd{Object} on a prefix object (\ref{imports}) or on a constant type literal that is immediately followed by the token `.'. \subsubsection{Cascaded Invocations} -\label{cascadedInvocations} +\LMLabel{cascadedInvocations} +\LMHash{} A {\em cascaded method invocation} has the form {\em e..suffix} where $e$ is an expression and {\em suffix} is a sequence of operator, method, getter or setter invocations. @@ -3406,27 +3799,35 @@ \subsubsection{Cascaded Invocations} . \end{grammar} +\LMHash{} A cascaded method invocation expression of the form {\em e..suffix} is equivalent to the expression \code{(t)\{t.{\em suffix}; \RETURN{} t;\}($e$)}. \subsubsection{Super Invocation} -\label{superInvocation} +\LMLabel{superInvocation} +\LMHash{} A super method invocation $i$ has the form $\SUPER{}.m(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. +\LMHash{} Evaluation of $i$ proceeds as follows: +\LMHash{} First, the argument list $(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$ is evaluated yielding actual argument objects $o_1, \ldots , o_{n+k}$. Let $S$ be the superclass of the immediately enclosing class, and let $f$ be the result of looking up method (\ref{ordinaryInvocation}) $m$ in $S$ with respect to the current library $L$. Let $p_1 \ldots p_h$ be the required parameters of $f$, let $p_1 \ldots p_m$ be the positional parameters of $f$ and let $p_{h+1}, \ldots, p_{h+l}$ be the optional parameters declared by $f$. +\LMHash{} If $n < h$, or $n > m$, the method lookup has failed. Furthermore, each $x_i, n+1 \le i \le n+k$, must have a corresponding named parameter in the set $\{p_{m+1}, \ldots, p_{h+l}\}$ or the method lookup also fails. Otherwise method lookup has succeeded. +\LMHash{} If the method lookup succeeded, the body of $f$ is executed with respect to the bindings that resulted from the evaluation of the argument list, and with \THIS{} bound to the current value of \THIS{}. The value of $i$ is the value returned after $f$ is executed. +\LMHash{} If the method lookup has failed, then let $g$ be the result of looking up getter (\ref{getterAndSetterLookup}) $m$ in $S$ with respect to $L$. If the getter lookup succeeded, let $v_g$ be the value of the getter invocation $\SUPER{}.m$. Then the value of $i$ is the result of invoking the static method \code{Function.apply()} with arguments $v.g, [o_1, \ldots , o_n], \{x_{n+1}: o_{n+1}, \ldots , x_{n+k}: o_{n+k}\}$. +\LMHash{} If getter lookup has also failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that : \begin{itemize} \item \code{im.isMethod} evaluates to \code{\TRUE{}}. @@ -3445,8 +3846,10 @@ \subsubsection{Super Invocation} and the result of this latter invocation is the result of evaluating $i$. +\LMHash{} It is a compile-time error if a super method invocation occurs in a top-level function or variable initializer, in an instance variable initializer or initializer list, in class \code{Object}, in a factory constructor or in a static method or variable initializer. +\LMHash{} It is a static type warning if $S$ does not have an accessible (\ref{privacy}) instance member named $m$ unless $S$ or a superinterface of $S$ is annotated with an annotation denoting a constant identical to the constant \code{@proxy} defined in \code{dart:core}. If $S.m$ exists, it is a static type warning if the type $F$ of $S.m$ may not be assigned to a function type. If $S.m$ does not exist, or if $F$ is not a function type, the static type of $i$ is \DYNAMIC{}; otherwise the static type of $i$ is the declared return type of $F$. % The following is not needed because it is specified in 'Binding Actuals to Formals" %Let $T_i$ be the static type of $a_i, i \in 1 .. n+k$. It is a static warning if $F$ is not a supertype of $(T_1, \ldots, t_n, \{T_{n+1}$ $x_{n+1}, \ldots, T_{n+k}$ $x_{n+k}\}) \to \bot$. @@ -3455,9 +3858,9 @@ \subsubsection{Super Invocation} \subsubsection{Sending Messages} +\LMLabel{sendingMessages} -\label{sendingMessages} - +\LMHash{} Messages are the sole means of communication among isolates. Messages are sent by invoking specific methods in the Dart libraries; there is no specific syntax for sending a message. \commentary{In other words, the methods supporting sending messages embody primitives of Dart that are not accessible to ordinary code, much like the methods that spawn isolates. @@ -3466,8 +3869,9 @@ \subsubsection{Sending Messages} \subsection{ Property Extraction} -\label{propertyExtraction} +\LMLabel{propertyExtraction} +\LMHash{} {\em Property extraction} allows for a member of an object to be concisely extracted from the object. A property extraction can be either: \begin{enumerate} @@ -3475,12 +3879,16 @@ \subsection{ Property Extraction} \item A {\em getter invocation} which returns the result of invoking of a getter method. \end{enumerate} +\LMHash{} Evaluation of a property extraction $i$ of the form $e.m$ proceeds as follows: +\LMHash{} First, the expression $e$ is evaluated to an object $o$. Let $f$ be the result of looking up (\ref{methodLookup}) method (\ref{instanceMethods}) $m$ in $o$ with respect to the current library $L$. If $o$ is an instance of \code{Type} but $e$ is not a constant type literal, then if $m$ is a method that forwards (\ref{functionDeclarations}) to a static method, method lookup fails. If method lookup succeeds and $f$ is a concrete method then $i$ evaluates to the closurization of $o.m$. +\LMHash{} Otherwise, $i$ is a getter invocation, and the getter function (\ref{getters}) $m$ is looked up (\ref{getterAndSetterLookup}) in $o$ with respect to $L$. If $o$ is an instance of \code{Type} but $e$ is not a constant type literal, then if $m$ is a getter that forwards to a static getter, getter lookup fails. Otherwise, the body of $m$ is executed with \THIS{} bound to $o$. The value of $i$ is the result returned by the call to the getter function. +\LMHash{} If the getter lookup has failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that : \begin{itemize} \item \code{im.isGetter} evaluates to \code{\TRUE{}}. @@ -3498,12 +3906,14 @@ \subsection{ Property Extraction} and the result of this latter invocation is the result of evaluating $i$. +\LMHash{} It is a compile-time error if $m$ is a member of class \cd{Object} and $e$ is either a prefix object (\ref{imports}) or a constant type literal. \commentary { This precludes \code{int.toString} but not \code{(int).toString} because in the latter case, $e$ is a parenthesized expression. } +\LMHash{} Let $T$ be the static type of $e$. It is a static type warning if $T$ does not have a method or getter named $m$ unless either: \begin{itemize} \item @@ -3511,6 +3921,7 @@ \subsection{ Property Extraction} \item $T$ is \code{Type}, $e$ is a constant type literal and the class corresponding to $e$ has a static method or getter named $m$. \end{itemize} +\LMHash{} If $i$ is a getter invocation, the static type of $i$ is: \begin{itemize} \item The declared return type of $T.m$, if $T.m$ exists. @@ -3518,14 +3929,19 @@ \subsection{ Property Extraction} \item The type \DYNAMIC{} otherwise. \end{itemize} +\LMHash{} If $i$ is a closurization, its static type is as described in section \ref{closurization}. +\LMHash{} Evaluation of a property extraction $i$ of the form $\SUPER.m$ proceeds as follows: +\LMHash{} Let $S$ be the superclass of the immediately enclosing class. Let $f$ be the result of looking up method $m$ in $S$ with respect to the current library $L$. If $f$ is a concrete method then $i$ evaluates to the closurization of $\SUPER.m$ with respect to superclass $S$(\ref{closurization}). +\LMHash{} Otherwise, $i$ is a getter invocation and the getter function $m$ is looked up in $S$ with respect to $L$, and its body is executed with \THIS{} bound to the current value of \THIS{}. The value of $i$ is the result returned by the call to the getter function. +\LMHash{} If the getter lookup has failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that : \begin{itemize} \item \code{im.isGetter} evaluates to \code{\TRUE{}}. @@ -3543,12 +3959,14 @@ \subsection{ Property Extraction} and the result of this latter invocation is the result of evaluating $i$. +\LMHash{} It is a static type warning if $S$ does not have a method or getter named $m$. If $i$ is a getter invocation, the static type of $i$ is the declared return type of $S.m$, if $S.m$ exists and \DYNAMIC{} otherwise. If $i$ is a closurization, its static type is as described in section \ref{closurization}. \subsubsection{Closurization} -\label{closurization} +\LMLabel{closurization} +\LMHash{} The {\em closurization of $o.m$} is defined to be equivalent to: \begin{itemize} @@ -3598,6 +4016,7 @@ \subsubsection{Closurization} +\LMHash{} The closurization of $\SUPER{}.m$ with respect to superclass $S$ is defined to be equivalent to: \begin{itemize} @@ -3622,6 +4041,7 @@ \subsubsection{Closurization} if $m$ has required parameters $r_1, \ldots, r_n$, and optional positional parameters $p_1, \ldots, p_k$ with defaults $d_1, \ldots, d_k$. \end{itemize} +\LMHash{} Except that: \begin{enumerate} \item iff \code{identical($o_1, o_2$)} then \cd{$o_1.m$ == $o_2.m$}. @@ -3631,8 +4051,9 @@ \subsubsection{Closurization} \subsection{ Assignment} -\label{assignment} +\LMLabel{assignment} +\LMHash{} An assignment changes the value associated with a mutable variable or property. \begin{grammar} @@ -3641,6 +4062,7 @@ \subsection{ Assignment} . \end{grammar} +\LMHash{} Evaluation of an assignment $a$ of the form $v$ \code{=} $e$ proceeds as follows: @@ -3652,27 +4074,38 @@ \subsection{ Assignment} %Otherwise, +\LMHash{} Let $d$ be the innermost declaration whose name is $v$ or $v=$, if it exists. +\LMHash{} If $d$ is the declaration of a local variable, the expression $e$ is evaluated to an object $o$. Then, the variable $v$ is bound to $o$ unless $v$ is \FINAL{} or \CONST{}, in which case a dynamic error occurs. If no error occurs, the value of the assignment expression is $o$. +\LMHash{} If $d$ is the declaration of a library variable, top level getter or top level setter, the expression $e$ is evaluated to an object $o$. Then the setter $v=$ is invoked with its formal parameter bound to $o$. The value of the assignment expression is $o$. +\LMHash{} Otherwise, if $d$ is the declaration of a static variable, static getter or static setter in class $C$, then the assignment is equivalent to the assignment \code{$C.v$ = $e$}. +\LMHash{} Otherwise, If $a$ occurs inside a top level or static function (be it function, method, getter, or setter) or variable initializer, evaluation of $a$ causes $e$ to be evaluated, after which a \code{NoSuchMethodError} is thrown. +\LMHash{} Otherwise, the assignment is equivalent to the assignment \code{ \THIS{}.$v$ = $e$}. +\LMHash{} In checked mode, it is a dynamic type error if $o$ is not \NULL{} and the interface of the class of $o$ is not a subtype of the actual type (\ref{actualTypeOfADeclaration}) of $v$. +\LMHash{} It is a static type warning if the static type of $e$ may not be assigned to the static type of $v$. The static type of the expression $v$ \code{=} $e$ is the static type of $e$. +\LMHash{} Evaluation of an assignment of the form $e_1.v$ \code{=} $e_2$ proceeds as follows: +\LMHash{} The expression $e_1$ is evaluated to an object $o_1$. Then, the expression $e_2$ is evaluated to an object $o_2$. Then, the setter $v=$ is looked up (\ref{getterAndSetterLookup}) in $o_1$ with respect to the current library. If $o_1$ is an instance of \code{Type} but $e_1$ is not a constant type literal, then if $v=$ is a setter that forwards (\ref{functionDeclarations}) to a static setter, setter lookup fails. Otherwise, the body of $v=$ is executed with its formal parameter bound to $o_2$ and \THIS{} bound to $o_1$. +\LMHash{} If the setter lookup has failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that : \begin{itemize} \item \code{im.isSetter} evaluates to \code{\TRUE{}}. @@ -3681,6 +4114,7 @@ \subsection{ Assignment} \item \code{im.namedArguments} evaluates to the value of \code{\CONST{} \{\}}. \end{itemize} +\LMHash{} Then the method \code{noSuchMethod()} is looked up in $o_1$ and invoked with argument $im$. However, if the implementation found cannot be invoked with a single positional argument, the implementation of \code{noSuchMethod()} in class \code{Object} is invoked on $o_1$ with argument $im'$, where $im'$ is an instance of \code{Invocation} such that : \begin{itemize} @@ -3690,10 +4124,13 @@ \subsection{ Assignment} \item \code{im.namedArguments} evaluates to the value of \code{\CONST{} \{\}}. \end{itemize} +\LMHash{} The value of the assignment expression is $o_2$ irrespective of whether setter lookup has failed or succeeded. +\LMHash{} In checked mode, it is a dynamic type error if $o_2$ is not \NULL{} and the interface of the class of $o_2$ is not a subtype of the actual type of $e_1.v$. +\LMHash{} Let $T$ be the static type of $e_1$. It is a static type warning if $T$ does not have an accessible instance setter named $v=$ unless either: \begin{itemize} \item $T$ or a superinterface of $T$ is annotated with an annotation denoting a constant identical to the constant \code{@proxy} defined in \code{dart:core}. Or @@ -3702,21 +4139,26 @@ \subsection{ Assignment} +\LMHash{} It is a static type warning if the static type of $e_2$ may not be assigned to the static type of the formal parameter of the setter $v=$. The static type of the expression $e_1.v$ \code{=} $e_2$ is the static type of $e_2$. +\LMHash{} Evaluation of an assignment of the form $e_1[e_2]$ \code{=} $e_3$ is equivalent to the evaluation of the expression \code{(a, i, e)\{a.[]=(i, e); \RETURN{} e; \} ($e_1, e_2, e_3$)}. The static type of the expression $e_1[e_2]$ \code{=} $e_3$ is the static type of $e_3$. % Should we add: It is a dynamic error if $e_1$ evaluates to an constant list or map. +\LMHash{} It is a static warning if an assignment of the form $v = e$ occurs inside a top level or static function (be it function, method, getter, or setter) or variable initializer and there is neither a local variable declaration with name $v$ nor setter declaration with name $v=$ in the lexical scope enclosing the assignment. +\LMHash{} It is a compile-time error to invoke any of the setters of class \cd{Object} on a prefix object (\ref{imports}) or on a constant type literal that is immediately followed by the token `.'. \subsubsection{Compound Assignment} -\label{compoundAssignment} +\LMLabel{compoundAssignment} +\LMHash{} A compound assignment of the form $v$ $op\code{=} e$ is equivalent to $v \code{=} v$ $op$ $e$. A compound assignment of the form $C.v$ $op \code{=} e$ is equivalent to $C.v \code{=} C.v$ $op$ $e$. A compound assignment of the form $e_1.v$ $op = e_2$ is equivalent to \code{((x) $=>$ x.v = x.v $op$ $e_2$)($e_1$)} where $x$ is a variable that is not used in $e_2$. A compound assignment of the form $e_1[e_2]$ $op\code{=} e_3$ is equivalent to \code{((a, i) $=>$ a[i] = a[i] $op$ $e_3$)($e_1, e_2$)} where $a$ and $i$ are a variables that are not used in $e_3$. @@ -3738,8 +4180,9 @@ \subsubsection{Compound Assignment} \subsection{ Conditional} -\label{conditional} +\LMLabel{conditional} +\LMHash{} A {\em conditional expression} evaluates one of two expressions based on a boolean condition. \begin{grammar} @@ -3748,10 +4191,13 @@ \subsection{ Conditional} . % the first branches could top level expressions, it seems, but certainly NOT the second \end{grammar} +\LMHash{} Evaluation of a conditional expression $c$ of the form $e_1 ? e_2 : e_3$ proceeds as follows: +\LMHash{} First, $e_1$ is evaluated to an object $o_1$. Then, $o_1$ is subjected to boolean conversion (\ref{booleanConversion}) producing an object $r$. If $r$ is \TRUE, then the value of $c$ is the result of evaluating the expression $e_2$. Otherwise the value of $c$ is the result of evaluating the expression $e_3$. +\LMHash{} If all of the following hold: \begin{itemize} \item $e_1$ shows that a variable $v$ has type $T$. @@ -3762,12 +4208,14 @@ \subsection{ Conditional} then the type of $v$ is known to be $T$ in $e_2$. +\LMHash{} It is a static type warning if the static type of $e_1$ may not be assigned to \code{bool}. The static type of $c$ is the least upper bound (\ref{leastUpperBounds}) of the static type of $e_2$ and the static type of $e_3$. \subsection{ Logical Boolean Expressions} -\label{logicalBooleanExpressions} +\LMLabel{logicalBooleanExpressions} +\LMHash{} The logical boolean expressions combine boolean objects using the boolean conjunction and disjunction operators. \begin{grammar} @@ -3782,12 +4230,16 @@ \subsection{ Logical Boolean Expressions} . \end{grammar} +\LMHash{} A {\em logical boolean expression} is either an equality expression (\ref{equality}), or an invocation of a logical boolean operator on an expression $e_1$ with argument $e_2$. +\LMHash{} Evaluation of a logical boolean expression $b$ of the form $e_1 || e_2$ causes the evaluation of $e_1$ which is then subjected to boolean conversion, yielding an object $o_1$; if $o_1$ is \TRUE, the result of evaluating $b$ is \TRUE, otherwise $e_2$ is evaluated to an object $o_2$, which is then subjected to boolean conversion (\ref{booleanConversion}) producing an object $r$, which is the value of $b$. +\LMHash{} Evaluation of a logical boolean expression $b$ of the form $e_1 \&\& e_2$ causes the evaluation of $e_1$ which is then subjected to boolean conversion, yielding an object $o_1$; if $o_1$ is not \TRUE, the result of evaluating $b$ is \FALSE, otherwise $e_2$ is evaluated to an object $o_2$, which is then subjected to boolean conversion producing an object $r$, which is the value of $b$. +\LMHash{} A logical boolean expression $b$ of the form $e_1 \&\& e_2$ shows that a variable $v$ has type $T$ if all of the following conditions hold: \begin{itemize} @@ -3796,6 +4248,7 @@ \subsection{ Logical Boolean Expressions} \item The variable $v$ is not mutated in $e_2$ or within a closure. \end{itemize} +\LMHash{} Furthermore, if all of the following hold: \begin{itemize} \item $e_1$ shows that $v$ has type $T$. @@ -3804,12 +4257,14 @@ \subsection{ Logical Boolean Expressions} \end{itemize} then the type of $v$ is known to be $T$ in $e_2$. +\LMHash{} It is a static warning if the static type of $e_1$ may not be assigned to \cd{bool} or if the static type of $e_2$ may not be assigned to \cd{bool}. The static type of a logical boolean expression is \code{bool}. \subsection{ Equality} - \label{equality} + \LMLabel{equality} +\LMHash{} Equality expressions test objects for equality. \begin{grammar} @@ -3822,9 +4277,11 @@ \subsection{ Logical Boolean Expressions} . \end{grammar} +\LMHash{} An {\em equality expression} is either a relational expression (\ref{relationalExpressions}), or an invocation of an equality operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. +\LMHash{} Evaluation of an equality expression $ee$ of the form \code{$e_1$ == $e_2$} proceeds as follows: \begin{itemize} \item The expression $e_1$ is evaluated to an object $o_1$. @@ -3834,6 +4291,7 @@ \subsection{ Logical Boolean Expressions} \end{itemize} +\LMHash{} Evaluation of an equality expression $ee$ of the form \code{\SUPER{} == $e$} proceeds as follows: \begin{itemize} \item The expression $e$ is evaluated to an object $o$. @@ -3848,6 +4306,7 @@ \subsection{ Logical Boolean Expressions} Another implication is that there is never a need to use \code{identical()} to test against \NULL{}, nor should anyone ever worry about whether to write \NULL{} == $e$ or $e$ == \NULL{}. } +\LMHash{} An equality expression of the form \code{$e_1$ != $e_2$} is equivalent to the expression \code{!($e_1$ == $e_2$)}. An equality expression of the form \code{\SUPER{} != $e$} is equivalent to the expression \code{!(\SUPER{} == $e$)}. @@ -3855,12 +4314,14 @@ \subsection{ Logical Boolean Expressions} %The expression $e_1$ is evaluated to an object $o_1$; then the expression $e_2$ is evaluated to an object $o_2$. Next, if $o_1$ and $o_2$ are the same object, then $ee$ evaluates to \TRUE{}, otherwise $ee$ evaluates to \FALSE{}. +\LMHash{} The static type of an equality expression is \code{bool}. \subsection{ Relational Expressions} -\label{relationalExpressions} +\LMLabel{relationalExpressions} +\LMHash{} Relational expressions invoke the relational operators on objects. \begin{grammar} @@ -3876,13 +4337,16 @@ \subsection{ Relational Expressions} . \end{grammar} +\LMHash{} A {\em relational expression} is either a bitwise expression (\ref{bitwiseExpressions}), or an invocation of a relational operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. +\LMHash{} A relational expression of the form $e_1$ $op$ $e_2$ is equivalent to the method invocation \code{$e_1$.$op$($e_2$)}. A relational expression of the form \SUPER{} $op$ $e_2$ is equivalent to the method invocation \code{\SUPER{}.$op$($e_2$)}. \subsection{ Bitwise Expressions} -\label{bitwiseExpressions} +\LMLabel{bitwiseExpressions} +\LMHash{} Bitwise expressions invoke the bitwise operators on objects. \begin{grammar} @@ -3904,8 +4368,10 @@ \subsection{ Bitwise Expressions} . \end{grammar} +\LMHash{} A {\em bitwise expression} is either a shift expression (\ref{shift}), or an invocation of a bitwise operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. +\LMHash{} A bitwise expression of the form $e_1$ $op$ $e_2$ is equivalent to the method invocation $e_1.op(e_2)$. A bitwise expression of the form \code{\SUPER{} $op$ $e_2$} is equivalent to the method invocation \code{\SUPER{}.op($e_2$)}. @@ -3915,8 +4381,9 @@ \subsection{ Bitwise Expressions} \subsection{ Shift} -\label{shift} +\LMLabel{shift} +\LMHash{} Shift expressions invoke the shift operators on objects. \begin{grammar} @@ -3929,8 +4396,10 @@ \subsection{ Shift} . \end{grammar} +\LMHash{} A {\em shift expression} is either an additive expression (\ref{additiveExpressions}), or an invocation of a shift operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. +\LMHash{} A shift expression of the form $e_1$ $op$ $e_2$ is equivalent to the method invocation \code{$e_1$.$op$($e_2$)}. A shift expression of the form \SUPER{} $op$ $e_2$ is equivalent to the method invocation \code{\SUPER{}.$op$($e_2$)}. \commentary{ @@ -3943,8 +4412,9 @@ \subsection{ Shift} } \subsection{ Additive Expressions} -\label{additiveExpressions} +\LMLabel{additiveExpressions} +\LMHash{} Additive expressions invoke the addition operators on objects. \begin{grammar} @@ -3957,16 +4427,20 @@ \subsection{ Shift} . \end{grammar} +\LMHash{} An {\em additive expression} is either a multiplicative expression (\ref{multiplicativeExpressions}), or an invocation of an additive operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. +\LMHash{} An additive expression of the form $e_1$ $op$ $e_2$ is equivalent to the method invocation \code{$e_1$.$op$($e_2$)}. An additive expression of the form \SUPER{} $op$ $e_2$ is equivalent to the method invocation \code{\SUPER{}.$op$($e_2$)}. +\LMHash{} The static type of an additive expression is usually determined by the signature given in the declaration of the operator used. However, invocations of the operators \cd{+} and \cd{-} of class \cd{int} are treated specially by the typechecker. The static type of an expression $e_1 + e_2$ where $e_1$ has static type \cd{int} is \cd{int} if the static type of $e_2$ is \cd{int}, and \cd{double} if the static type of $e_2$ is \cd{double}. The static type of an expression $e_1 - e_2$ where $e_1$ has static type \cd{int} is \cd{int} if the static type of $e_2$ is \cd{int}, and \cd{double} if the static type of $e_2$ is \cd{double}. \subsection{ Multiplicative Expressions} -\label{multiplicativeExpressions} +\LMLabel{multiplicativeExpressions} +\LMHash{} Multiplicative expressions invoke the multiplication operators on objects. \begin{grammar} @@ -3982,15 +4456,19 @@ \subsection{ Multiplicative Expressions} \end{grammar} +\LMHash{} A {\em multiplicative expression} is either a unary expression (\ref{unaryExpressions}), or an invocation of a multiplicative operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. +\LMHash{} A multiplicative expression of the form $e_1$ $op$ $e_2$ is equivalent to the method invocation \code{$e_1$.$op$($e_2$)}. A multiplicative expression of the form \SUPER{} $op$ $e_2$ is equivalent to the method invocation \code{\SUPER{}.$op$($e_2$)}. +\LMHash{} The static type of an multiplicative expression is usually determined by the signature given in the declaration of the operator used. However, invocations of the operators \cd{*}, \cd{\%} and \cd{\~{}/} of class \cd{int} are treated specially by the typechecker. The static type of an expression $e_1 * e_2$ where $e_1$ has static type \cd{int} is \cd{int} if the static type of $e_2$ is \cd{int}, and \cd{double} if the static type of $e_2$ is \cd{double}. The static type of an expression $e_1 \% e_2$ where $e_1$ has static type \cd{int} is \cd{int} if the static type of $e_2$ is \cd{int}, and \cd{double} if the static type of $e_2$ is \cd{double}. The static type of an expression \cd{$e_1$ \~{}/ $e_2$} where $e_1$ has static type \cd{int} is \cd{int} if the static type of $e_2$ is \cd{int}. \subsection{ Unary Expressions} -\label{unaryExpressions} +\LMLabel{unaryExpressions} +\LMHash{} Unary expressions invoke unary operators on objects. \begin{grammar} @@ -4019,19 +4497,24 @@ \subsection{ Unary Expressions} \end{grammar} +\LMHash{} A {\em unary expression} is either a postfix expression (\ref{postfixExpressions}), an await expression (\ref{awaitExpressions}) or an invocation of a prefix operator on an expression or an invocation of a unary operator on either \SUPER{} or an expression $e$. +\LMHash{} The expression $!e$ is equivalent to the expression $e?$ $ \FALSE{} :\TRUE{}$. +\LMHash{} Evaluation of an expression of the form \code{++$e$} is equivalent to \code{$e$ += 1}. Evaluation of an expression of the form \code{-{}-$e$} is equivalent to \code{$e$ -= 1}. %The expression $-e$ is equivalent to the method invocation \code{$e$.-()}. The expression \code{-\SUPER{}} is equivalent to the method invocation \code{\SUPER{}.-()}. +\LMHash{} An expression of the form \code{$op$ $e$} is equivalent to the method invocation \code{$e.op()$}. An expression of the form \code{$op$ \SUPER{}} is equivalent to the method invocation (\ref{superInvocation}) \code{\SUPER{}.$op()$}. \subsection{ Await Expressions} -\label{awaitExpressions} +\LMLabel{awaitExpressions} +\LMHash{} An {\em await expression} allows code to yield control until an asynchronous operation (\ref{functions}) completes. \begin{grammar} @@ -4039,11 +4522,14 @@ \subsection{ Await Expressions} \AWAIT{} unaryExpression \end{grammar} +\LMHash{} Evaluation of an await expression $a$ of the form \AWAIT{} $e$ proceeds as follows: First, the expression $e$ is evaluated. Next: +\LMHash{} If $e$ raises an exception $x$, then an instance $f$ of class \code{Future} is allocated and later completed with $x$. Otherwise, if $e$ evaluates to an object $o$ that is not an instance of \code{Future}, then let $f$ be the result of calling \code{Future.value()} with $o$ as its argument; otherwise let $f$ be the result of evaluating $e$. +\LMHash{} Next, execution of the function $m$ immediately enclosing $a$ is suspended until after $f$ completes. The stream associated with the innermost enclosing asynchronous for loop (\ref{asynchronousFor-in}), if any, is paused. At some time after $f$ is completed, control returns to the current invocation. The stream associated with the innermost enclosing asynchronous for loop (\ref{asynchronousFor-in}), if any, is resumed. If $f$ has completed with an exception $x$, $a$ raises $x$. If $f$ completes with a value $v$, $a$ evaluates to $v$. %Otherwise, the value of $a$ is the value of $e$. If evaluation of $e$ raises an exception $x$, $a$ raises $x$. @@ -4060,6 +4546,7 @@ \subsection{ Await Expressions} It is not a static warning if the type of $e$ is not a subtype of \code{Future}. Tools may choose to give a hint in such cases. } +\LMHash{} Let $flatten(T) = flatten(S)$ if $T = Future$, and $T$ otherwise. The static type of $a$ is $flatten(T)$ where $T$ is the static type of $e$. \rationale{ @@ -4070,8 +4557,9 @@ \subsection{ Await Expressions} \subsection{ Postfix Expressions} -\label{postfixExpressions} +\LMLabel{postfixExpressions} +\LMHash{} Postfix expressions invoke the postfix operators on objects. \begin{grammar} @@ -4093,45 +4581,55 @@ \subsection{ Postfix Expressions} \end{grammar} +\LMHash{} A {\em postfix expression} is either a primary expression, a function, method or getter invocation, or an invocation of a postfix operator on an expression $e$. +\LMHash{} A postfix expression of the form \code{$v$++}, where $v$ is an identifier, is equivalent to \code{()\{var r = $v$; $v$ = r + 1; return r\}()}. \rationale{The above ensures that if $v$ is a field, the getter gets called exactly once. Likewise in the cases below. } +\LMHash{} A postfix expression of the form \code{$C.v$ ++} is equivalent to \code{()\{var r = $C.v$; $C.v$ = r + 1; return r\}()}. +\LMHash{} A postfix expression of the form \code{$e_1.v$++} is equivalent to \code{(x)\{var r = x.v; x.v = r + 1; \RETURN{} r\}($e_1$)}. +\LMHash{} A postfix expression of the form \code{$e_1[e_2]$++}, is equivalent to \code{(a, i)\{var r = a[i]; a[i] = r + 1; return r\}($e_1$, $e_2$)}. +\LMHash{} A postfix expression of the form \code{$v$-{}-}, where $v$ is an identifier, is equivalent to \code{()\{var r = $v$; $v$ = r - 1; return r\}()}. +\LMHash{} A postfix expression of the form \code{$C.v$-{}-} is equivalent to \code{()\{var r = $C.v$; $C.v$ = r - 1; return r\}()}. +\LMHash{} A postfix expression of the form \code{$e_1.v$-{}-} is equivalent to \code{(x)\{var r = x.v; x.v = r - 1; \RETURN{} r\}($e_1$)}. +\LMHash{} A postfix expression of the form \code{$e_1[e_2]$-{}-}, is equivalent to \code{(a, i)\{var r = a[i]; a[i] = r - 1; return r\}($e_1$, $e_2$)}. \subsection{ Assignable Expressions} -\label{assignableExpressions} +\LMLabel{assignableExpressions} +\LMHash{} Assignable expressions are expressions that can appear on the left hand side of an assignment. This section describes how to evaluate these expressions when they do not constitute the complete left hand side of an assignment. @@ -4154,6 +4652,7 @@ \subsection{ Assignable Expressions} \end{grammar} +\LMHash{} An {\em assignable expression} is either: \begin{itemize} \item An identifier. @@ -4162,21 +4661,27 @@ \subsection{ Assignable Expressions} \end{itemize} +\LMHash{} An assignable expression of the form $id$ is evaluated as an identifier expression (\ref{identifierReference}). %An assignable expression of the form $e.id(a_1, \ldots, a_n)$ is evaluated as a method invocation (\ref{methodInvocation}). +\LMHash{} An assignable expression of the form $e.id$ is evaluated as a property extraction (\ref{propertyExtraction}). +\LMHash{} An assignable expression of the form \code{$e_1$[$e_2$]} is evaluated as a method invocation of the operator method \code{[]} on $e_1$ with argument $e_2$. +\LMHash{} An assignable expression of the form \code{\SUPER{}.id} is evaluated as a property extraction. +\LMHash{} An assignable expression of the form \code{\SUPER{}[$e_2$]} is equivalent to the method invocation \code{\SUPER{}.[]($e_2$)}. \subsection{ Identifier Reference} -\label{identifierReference} +\LMLabel{identifierReference} +\LMHash{} An {\em identifier expression} consists of a single identifier; it provides access to an object via an unqualified name. \begin{grammar} @@ -4235,21 +4740,25 @@ \subsection{ Identifier Reference} . \end{grammar} +\LMHash{} A built-in identifier is one of the identifiers produced by the production {\em BUILT\_IN\_IDENTIFIER}. It is a compile-time error if a built-in identifier is used as the declared name of a prefix, class, type parameter or type alias. It is a compile-time error to use a built-in identifier other than \DYNAMIC{} as a type annotation or type parameter. \rationale{ Built-in identifiers are identifiers that are used as keywords in Dart, but are not reserved words in Javascript. To minimize incompatibilities when porting Javascript code to Dart, we do not make these into reserved words. A built-in identifier may not be used to name a class or type. In other words, they are treated as reserved words when used as types. This eliminates many confusing situations without causing compatibility problems. After all, a Javascript program has no type declarations or annotations so no clash can occur. Furthermore, types should begin with an uppercase letter (see the appendix) and so no clash should occur in any Dart user program anyway. } +\LMHash{} It is a compile-time error if any of the identifiers \ASYNC, \AWAIT{} or \YIELD{} is used as an identifier in a function body marked with either \ASYNC{}, \ASYNC* or \SYNC*. \rationale{ For compatibility reasons, new constructs cannot rely upon new reserved words or even built-in identifiers. However, the constructs above are only usable in contexts that require special markers introduced concurrently with these constructs, so no old code could use them. Hence the restriction, which treats these names as reserved words in a limited context. } +\LMHash{} Evaluation of an identifier expression $e$ of the form $id$ proceeds as follows: +\LMHash{} Let $d$ be the innermost declaration in the enclosing lexical scope whose name is $id$ or $id=$. If no such declaration exists in the lexical scope, let $d$ be the declaration of the inherited member named $id$ if it exists. %If no such member exists, let $d$ be the declaration of the static member name $id$ declared in a superclass of the current class, if it exists. @@ -4276,6 +4785,7 @@ \subsection{ Identifier Reference} % This implies that referring to an undefined static getter by simple name is an error, whereas doing so by qualified name is only a warning. Same with assignments. Revise? \end{itemize} +\LMHash{} The static type of $e$ is determined as follows: \begin{itemize} @@ -4294,11 +4804,13 @@ \subsection{ Identifier Reference} This prevents situations where one uses uncorrelated setters and getters. The intent is to prevent errors when a getter in a surrounding scope is used accidentally. } +\LMHash{} It is a static warning if an identifier expression $id$ occurs inside a top level or static function (be it function, method, getter, or setter) or variable initializer and there is no declaration $d$ with name $id$ in the lexical scope enclosing the expression. \subsection{ Type Test} -\label{typeTest} +\LMLabel{typeTest} +\LMHash{} The {\em is-expression} tests if an object is a member of a type. \begin{grammar} @@ -4312,8 +4824,10 @@ \subsection{ Type Test} . \end{grammar} +\LMHash{} Evaluation of the is-expression \code{$e$ \IS{} $T$} proceeds as follows: +\LMHash{} The expression $e$ is evaluated to a value $v$. Then, if $T$ is a malformed or deferred type (\ref{staticTypes}), a dynamic error occurs. Otherwise, if the interface of the class of $v$ is a subtype of $T$, the is-expression evaluates to \TRUE. Otherwise it evaluates to \FALSE. \commentary{It follows that \code{$e$ \IS{} Object} is always true. This makes sense in a language where everything is an object. @@ -4321,11 +4835,13 @@ \subsection{ Type Test} Also note that \code{\NULL{} \IS{} $T$} is false unless $T = \code{Object}$, $T = \code{\DYNAMIC{}}$ or $T = \code{Null}$. The former two are useless, as is anything of the form \code{$e$ \IS{} Object} or \code{$e$ \IS{} \DYNAMIC{}}. Users should test for a null value directly rather than via type tests. } +\LMHash{} The is-expression \code{$e$ \IS{}! $T$} is equivalent to \code{!($e$ \IS{} $T$)}. % Add flow dependent types +\LMHash{} Let $v$ be a local variable or a formal parameter. An is-expression of the form \code{$v$ \IS{} $T$} shows that $v$ has type $T$ iff $T$ is more specific than the type $S$ of the expression $v$ and both $T \ne \DYNAMIC{}$ and $S \ne \DYNAMIC{}$. \rationale{ @@ -4338,12 +4854,14 @@ \subsection{ Type Test} We do not want to refine the type of a variable of type \DYNAMIC{}, as this could lead to more warnings rather than less. The opposite requirement, that $T \ne \DYNAMIC{}$ is a safeguard lest $S$ ever be $\bot$. } +\LMHash{} The static type of an is-expression is \code{bool}. \subsection{ Type Cast} -\label{typeCast} +\LMLabel{typeCast} +\LMHash{} The {\em cast expression} ensures that an object is a member of a type. \begin{grammar} @@ -4357,16 +4875,19 @@ \subsection{ Type Cast} . \end{grammar} +\LMHash{} Evaluation of the cast expression \code{$e$ \AS{} $T$} proceeds as follows: +\LMHash{} The expression $e$ is evaluated to a value $v$. Then, if $T$ is a malformed or deferred type (\ref{staticTypes}), a dynamic error occurs. Otherwise, if the interface of the class of $v$ is a subtype of $T$, the cast expression evaluates to $v$. Otherwise, if $v$ is \NULL{}, the cast expression evaluates to $v$. In all other cases, a \code{CastError} is thrown. +\LMHash{} The static type of a cast expression \code{$e$ \AS{} $T$} is $T$. \section{Statements} -\label{statements} +\LMLabel{statements} \begin{grammar} {\bf statements:} @@ -4399,21 +4920,26 @@ \section{Statements} \end{grammar} \subsection{Blocks} - \label{blocks} + \LMLabel{blocks} +\LMHash{} A {\em block statement} supports sequencing of code. +\LMHash{} Execution of a block statement $\{s_1, \ldots, s_n\}$ proceeds as follows: +\LMHash{} For $i \in 1 .. n, s_i$ is executed. +\LMHash{} A block statement introduces a new scope, which is nested in the lexically enclosing scope in which the block statement appears. \subsection{Expression Statements} - \label{expressionStatements} + \LMLabel{expressionStatements} +\LMHash{} An {\em expression statement} consists of an expression other than a non-constant map literal (\ref{maps}) that has no explicit type arguments. \rationale{ @@ -4426,14 +4952,17 @@ \section{Statements} . \end{grammar} +\LMHash{} Execution of an expression statement \code{$e$;} proceeds by evaluating $e$. +\LMHash{} It is a compile-time error if a non-constant map literal that has no explicit type arguments appears in a place where a statement is expected. \subsection{Local Variable Declaration} -\label{localVariableDeclaration} +\LMLabel{localVariableDeclaration} +\LMHash{} A {\em variable declaration statement }declares a new local variable. \begin{grammar} @@ -4442,10 +4971,13 @@ \subsection{Local Variable Declaration} . \end{grammar} +\LMHash{} Executing a variable declaration statement of one of the forms \VAR{} $v = e;$, $T$ $v = e; $, \CONST{} $v = e;$, \CONST{} $T$ $v = e;$, \FINAL{} $v = e;$ or \FINAL{} $T$ $v = e;$ proceeds as follows: +\LMHash{} The expression $e$ is evaluated to an object $o$. Then, the variable $v$ is set to $o$. +\LMHash{} A variable declaration statement of the form \VAR{} $v;$ is equivalent to \VAR{} $v = \NULL{};$. A variable declaration statement of the form $T$ $v;$ is equivalent to $T$ $v = \NULL{};$. \commentary{ @@ -4470,9 +5002,9 @@ \subsection{Local Variable Declaration} \subsection{Local Function Declaration} +\LMLabel{localFunctionDeclaration} -\label{localFunctionDeclaration} - +\LMHash{} A function declaration statement declares a new local function (\ref{functionDeclarations}). \begin{grammar} @@ -4481,6 +5013,7 @@ \subsection{Local Function Declaration} . \end{grammar} +\LMHash{} A function declaration statement of one of the forms $id$ $signature$ $\{ statements \}$ or $T$ $id$ $signature$ $\{ statements \}$ causes a new function named $id$ to be added to the innermost enclosing scope. It is a compile-time error to reference a local function before its declaration. @@ -4524,8 +5057,9 @@ \subsection{Local Function Declaration} % elaborate on function identity and equality, runtime type. Likewsie in function expressions (closures) and declarations \subsection{If} -\label{if} +\LMLabel{if} +\LMHash{} The {\em if statement} allows for conditional execution of statements. \begin{grammar} @@ -4536,6 +5070,7 @@ \subsection{If} Execution of an if statement of the form \code {\IF{} (}$b$\code{)}$s_1$ \code{\ELSE{} } $s_2$ proceeds as follows: +\LMHash{} First, the expression $b$ is evaluated to an object $o$. Then, $o$ is subjected to boolean conversion (\ref{booleanConversion}), producing an object $r$. If $r$ is \TRUE{}, then the statement $\{s_1\}$ is executed, otherwise statement $\{s_2\}$ is executed. @@ -4559,8 +5094,10 @@ \subsection{If} Under reasonable scope rules such code is problematic. If we assume that \code{v} is declared in the scope of the method \code{main()}, then when \code{somePredicate} is false, \code{v} will be uninitialized when accessed. The cleanest approach would be to require a block following the test, rather than an arbitrary statement. However, this goes against long standing custom, undermining Dart's goal of familiarity. Instead, we choose to insert a block, introducing a scope, around the statement following the predicate (and similarly for \ELSE{} and loops). This will cause both a warning and a runtime error in the case above. Of course, if there is a declaration of \code{v} in the surrounding scope, programmers might still be surprised. We expect tools to highlight cases of shadowing to help avoid such situations. } +\LMHash{} It is a static type warning if the type of the expression $b$ may not be assigned to \code{bool}. +\LMHash{} If: \begin{itemize} \item $b$ shows that a variable $v$ has type $T$. @@ -4569,6 +5106,7 @@ \subsection{If} \end{itemize} then the type of $v$ is known to be $T$ in $s_1$. +\LMHash{} An if statement of the form \code {\IF{} (}$b$\code{)}$s_1$ is equivalent to the if statement \code {\IF{} (}$b$\code{)}$s_1$ \code{\ELSE{} \{\}}. @@ -4576,8 +5114,9 @@ \subsection{If} \subsection{For} -\label{for} +\LMLabel{for} +\LMHash{} The {\em for statement} supports iteration. \begin{grammar} @@ -4595,16 +5134,20 @@ \subsection{For} . \end{grammar} +\LMHash{} The for statement has three forms - the traditional for loop and two forms of the for-in statement - synchronous and asynchronous. \subsubsection{For Loop} -\label{forLoop} +\LMLabel{forLoop} +\LMHash{} Execution of a for statement of the form \code{ \FOR{} (\VAR{} $v = e_0$ ; $c$; $e$) $s$} proceeds as follows: +\LMHash{} If $c$ is empty then let $c^\prime$ be \TRUE{} otherwise let $c^\prime$ be $c$. +\LMHash{} First the variable declaration statement \VAR{} $v = e_0$ is executed. Then: \begin{enumerate} \item @@ -4630,6 +5173,7 @@ \subsubsection{For Loop} Instead, each iteration has its own distinct variable. The first iteration uses the variable created by the initial declaration. The expression executed at the end of each iteration uses a fresh variable $v^{\prime\prime}$, bound to the value of the current iteration variable, and then modifies $v^{\prime\prime}$ as required for the next iteration. } +\LMHash{} It is a static warning if the static type of $c$ may not be assigned to \cd{bool}. %A for statement of the form \code{ \FOR{} ($d$ ; $c$; $e$) $s$} is equivalent to the the following code: @@ -4645,8 +5189,9 @@ \subsubsection{For Loop} %If $c$ is empty, it is interpreted as \TRUE{}. \subsubsection{For-in} -\label{for-in} +\LMLabel{for-in} +\LMHash{} A for statement of the form \code{ \FOR{} ($finalConstVarOrType?$ id \IN{} $e$) $s$} is equivalent to the following code: \begin{dartCode} @@ -4663,30 +5208,37 @@ \subsubsection{For-in} } \subsubsection{Asynchronous For-in} -\label{asynchronousFor-in} +\LMLabel{asynchronousFor-in} +\LMHash{} A for-in statement may be asynchronous. The asynchronous form is designed to iterate over streams. An asynchronous for loop is distinguished by the keyword \AWAIT{} immediately preceding the keyword \FOR. +\LMHash{} Execution of a for-in statement of the form \code{\AWAIT{} \FOR{} (finalConstVarOrType? id \IN{} $e$) $s$} proceeds as follows: +\LMHash{} The expression $e$ is evaluated to an object $o$. It is a dynamic error if $o$ is not an instance of a class that implements \code{Stream}. Otherwise, the expression \code{\AWAIT{} $v_f$} (\ref{awaitExpressions}) is evaluated, where $v_f$ is a fresh variable whose value is a fresh instance (\ref{generativeConstructors}) $f$ implementing the built-in class \code{Future}. +\LMHash{} The stream $o$ is listened to, and on each data event in $o$ the statement $s$ is executed with \code{id} bound to the value of the current element of the stream. If $s$ raises an exception, or if $o$ raises an exception, then $f$ is completed with that exception. Otherwise, when all events in the stream $o$ have been processed, $f$ is completed with \NULL{} (\ref{null}). +\LMHash{} Let $u$ be the stream associated with the immediately enclosing asynchronous for loop or generator function (\ref{functions}), if any. If another event $e_u$ of $u$ occurs before execution of $s$ is complete, handling of $e_u$ must wait until $s$ is complete. \rationale{ The future $f$ and the corresponding \AWAIT{} expression ensure that execution suspends as an asynchronous for loop begins and resumes after the \FOR{} statement when it ends. They also ensure that the stream of any enclosing asynchronous \FOR{} loop is paused for the duration of this loop. } +\LMHash{} It is a compile-time error if an asynchronous for-in statement appears inside a synchronous function (\ref{functions}). It is a compile-time error if a traditional for loop (\ref{forLoop}) is prefixed by the \AWAIT{} keyword. \rationale{An asynchronous loop would make no sense within a synchronous function, for the same reasons that an await expression makes no sense in a synchronous function.} \subsection{While} -\label{while} +\LMLabel{while} +\LMHash{} The while statement supports conditional iteration, where the condition is evaluated prior to the loop. \begin{grammar} @@ -4695,16 +5247,20 @@ \subsection{While} . \end{grammar} +\LMHash{} Execution of a while statement of the form \code{\WHILE{} ($e$) $s$;} proceeds as follows: +\LMHash{} The expression $e$ is evaluated to an object $o$. Then, $o$ is subjected to boolean conversion (\ref{booleanConversion}), producing an object $r$. If $r$ is \TRUE{}, then the statement $\{s\}$ is executed and then the while statement is re-executed recursively. If $r$ is \FALSE{}, execution of the while statement is complete. +\LMHash{} It is a static type warning if the static type of $e$ may not be assigned to \code{bool}. \subsection{Do} -\label{do} +\LMLabel{do} +\LMHash{} The do statement supports conditional iteration, where the condition is evaluated after the loop. \begin{grammar} @@ -4714,15 +5270,19 @@ \subsection{Do} \end{grammar} +\LMHash{} Execution of a do statement of the form \code{\DO{} $s$ \WHILE{} ($e$);} proceeds as follows: +\LMHash{} The statement $\{s\}$ is executed. Then, the expression $e$ is evaluated to an object $o$. Then, $o$ is subjected to boolean conversion (\ref{booleanConversion}), producing an object $r$. If $r$ is \FALSE{}, execution of the do statement is complete. If $r$ is \TRUE{}, then the do statement is re-executed recursively. +\LMHash{} It is a static type warning if the static type of $e$ may not be assigned to \code{bool}. \subsection{Switch} -\label{switch} +\LMLabel{switch} +\LMHash{} The {\em switch statement} supports dispatching control among a large number of cases. \begin{grammar} @@ -4740,6 +5300,7 @@ \subsection{Switch} . \end{grammar} +\LMHash{} Given a switch statement of the form \begin{dartCode} @@ -4771,6 +5332,7 @@ \subsection{Switch} \commentary{In other words, all the expressions in the cases evaluate to constants of the exact same user defined class or are of certain known types. Note that the values of the expressions are known at compile-time, and are independent of any static type annotations. } +\LMHash{} It is a compile-time error if the class $C$ has an implementation of the operator $==$ other than the one inherited from \code{Object} unless the value of the expression is a string, an integer, literal symbol or the result of invoking a constant constructor of class \cd{Symbol}. \rationale{ @@ -4782,6 +5344,7 @@ \subsection{Switch} The \SWITCH{} statement should only be used in very limited situations (e.g., interpreters or scanners). } +\LMHash{} Execution of a switch statement of the form \begin{dartCode} @@ -4805,14 +5368,18 @@ \subsection{Switch} proceeds as follows: +\LMHash{} The statement \code{\VAR{} id = $e$;} is evaluated, where \code{id} is a variable whose name is distinct from any other variable in the program. In checked mode, it is a run time error if the value of $e$ is not an instance of the same class as the constants $e_1 \ldots e_n$. \commentary{Note that if there are no case clauses ($n = 0$), the type of $e$ does not matter.} +\LMHash{} Next, the case clause \CASE{} $e_{1}: s_{1}$ is executed if it exists. If \CASE{} $e_{1}: s_{1}$ does not exist, then if there is a \DEFAULT{} clause it is executed by executing $s_{n+1}$. +\LMHash{} A case clause introduces a new scope, nested in the lexically surrounding scope. The scope of a case clause ends immediately after the case clause's statement list. +\LMHash{} Execution of a \CASE{} clause \CASE{} $e_{k}: s_{k}$ of a switch statement \begin{dartCode} @@ -4826,11 +5393,13 @@ \subsection{Switch} proceeds as follows: +\LMHash{} The expression \code{$e_k$ == id} is evaluated to an object $o$ which is then subjected to boolean conversion yielding a value $v$. If $v$ is not \TRUE{} the following case, \CASE{} $e_{k+1}: s_{k+1}$ is executed if it exists. If \CASE{} $e_{k+1}: s_{k+1}$ does not exist, then the \DEFAULT{} clause is executed by executing $s_{n+1}$. If $v$ is \TRUE{}, let $h$ be the smallest number such that $h \ge k$ and $s_h$ is non-empty. If no such $h$ exists, let $h = n + 1$. The sequence of statements $s_h$ is then executed. If execution reaches the point after $s_h$ then a runtime error occurs, unless $h = n+1$. +\LMHash{} Execution of a \CASE{} clause \CASE{} $e_{k}: s_{k}$ of a switch statement \begin{dartCode} @@ -4843,6 +5412,7 @@ \subsection{Switch} proceeds as follows: +\LMHash{} The expression \code{$e_k$ == id} is evaluated to an object $o$ which is then subjected to boolean conversion yielding a value $v$. If $v$ is not \TRUE{} the following case, \CASE{} $e_{k+1}: s_{k+1}$ is executed if it exists. If $v$ is \TRUE{}, let $h$ be the smallest integer such that $h \ge k$ and $s_h$ is non-empty. The sequence of statements $s_h$ is executed if it exists. @@ -4853,6 +5423,7 @@ \subsection{Switch} In other words, there is no implicit fall-through between cases. The last case in a switch (default or otherwise) can `fall-through' to the end of the statement. } +\LMHash{} It is a static warning if the type of $e$ may not be assigned to the type of $e_k$. It is a static warning if the last statement of the statement sequence $s_k$ is not a \BREAK{}, \CONTINUE{}, \RETURN{} or \THROW{} statement. \rationale{ @@ -4871,6 +5442,7 @@ \subsection{Switch} Very elaborate code in a case clause is probably bad style in any case, and such code can always be refactored. } +\LMHash{} It is a static warning if all of the following conditions hold: \begin{itemize} \item The switch statement does not have a default clause. @@ -4884,9 +5456,10 @@ \subsection{Switch} \subsection{ Rethrow} -\label{rethrow} +\LMLabel{rethrow} +\LMHash{} The {\em rethrow statement} is used to re-raise an exception. \begin{grammar} @@ -4895,33 +5468,40 @@ \subsection{ Rethrow} . \end{grammar} +\LMHash{} Execution of a \code{\RETHROW{}} statement proceeds as follows: +\LMHash{} Let $f$ be the immediately enclosing function, and let \code{\ON{} $T$ \CATCH{} ($p_1$, $p_2$)} be the immediately enclosing catch clause (\ref{try}). \rationale{ A \RETHROW{} statement always appears inside a \CATCH{} clause, and any \CATCH{} clause is semantically equivalent to some \CATCH{} clause of the form \code{\ON{} $T$ \CATCH{} (p1, p2)}. So we can assume that the \RETHROW{} is enclosed in a \CATCH{} clause of that form. } +\LMHash{} The current exception (\ref{throw}) is set to $p_1$, the current return value (\ref{return}) becomes undefined, and the active stack trace (\ref{try}) is set to $p_2$. +\LMHash{} If $f$ is marked \ASYNC{} or \ASYNC* (\ref{functions}) and there is a dynamically enclosing exception handler (\ref{try}) $h$ introduced by the current activation, control is transferred to $h$, otherwise $f$ terminates. \rationale{ In the case of an asynchronous function, the dynamically enclosing exception handler is only relevant within the function. If an exception is not caught within the function, the exception value is channelled through a future or stream rather than propagating via exception handlers. } +\LMHash{} Otherwise, control is transferred to the innermost enclosing exception handler. \commentary{The change in control may result in multiple functions terminating if these functions do not catch the exception via a \CATCH{} or \FINALLY{} clause, both of which introduce a dynamically enclosing exception handler.} +\LMHash{} It is a compile-time error if a \code{\RETHROW{}} statement is not enclosed within an \ON-\CATCH{} clause. \subsection{ Try} -\label{try} +\LMLabel{try} +\LMHash{} The try statement supports the definition of exception handling code in a structured way. \begin{grammar} @@ -4942,6 +5522,7 @@ \subsection{ Try} . \end{grammar} +\LMHash{} A try statement consists of a block statement, followed by at least one of: \begin{enumerate} \item @@ -4954,23 +5535,28 @@ \subsection{ Try} The syntax is designed to be upward compatible with existing Javascript programs. The \ON{} clause can be omitted, leaving what looks like a Javascript catch clause. } +\LMHash{} An \ON{}-\CATCH{} clause of the form \code{\ON{} $T$ \CATCH{} ($p_1, p_2$) $s$} {\em matches} an object $o$ if the type of $o$ is a subtype of $T$. If $T$ is a malformed or deferred type (\ref{staticTypes}), then performing a match causes a run time error. \commentary { It is of course a static warning if $T$ is a deferred or malformed type. } +\LMHash{} An \ON{}-\CATCH{} clause of the form \code{\ON{} $T$ \CATCH{} ($p_1, p_2$) $s$} introduces a new scope $CS$ in which final local variables specified by $p_1$ and $p_2$ are defined. The statement $s$ is enclosed within $CS$. The static type of $p_1$ is $T$ and the static type of $p_2$ is \code{StackTrace}. +\LMHash{} An \ON{}-\CATCH{} clause of the form \code{\ON{} $T$ \CATCH{} ($p_1$) $s$} is equivalent to an \ON{}-\CATCH{} clause \code{\ON{} $T$ \CATCH{} ($p_1, p_2$) $s$} where $p_2$ is an identifier that does not occur anywhere else in the program. +\LMHash{} An \ON{}-\CATCH{} clause of the form \code{\CATCH{} ($p$) $s$} is equivalent to an \ON{}-\CATCH{} clause \code{\ON{} \DYNAMIC{} \CATCH{} ($p$) $s$}. An \ON{}-\CATCH{} clause of the form \code{\CATCH{} ($p_1, p_2$) $s$} is equivalent to an \ON{}-\CATCH{} clause \code{\ON{} \DYNAMIC{} \CATCH{} ($p_1, p_2$) $s$}. %If an explicit type is associated with of $p_2$, it is a static warning if that type is not \code{Object} or \DYNAMIC{}. +\LMHash{} The {\em active stack trace} is an object whose \code{toString()} method produces a string that is a record of exactly those function activations within the current isolate that had not completed execution at the point where the current exception (\ref{throw}) was thrown. %\begin{enumerate} %\item Started execution after the currently executing function. @@ -5001,19 +5587,24 @@ \subsection{ Try} % A position can be represented via a Token. If we make that part of the core reflection facility, we can state this here. +\LMHash{} A try statement \TRY{} $s_1$ $on-catch_1 \ldots on-catch_n$ \FINALLY{} $s_f$ defines an exception handler $h$ that executes as follows: +\LMHash{} The \ON{}-\CATCH{} clauses are examined in order, starting with $catch_1$, until either an \ON{}-\CATCH{} clause that matches the current exception (\ref{throw}) is found, or the list of \ON{}-\CATCH{} clauses has been exhausted. If an \ON{}-\CATCH{} clause $on-catch_k$ is found, then $p_{k1}$ is bound to the current exception, $p_{k2}$, if declared, is bound to the active stack trace, and then $catch_k$ is executed. If no \ON{}-\CATCH{} clause is found, the \FINALLY{} clause is executed. Then, execution resumes at the end of the try statement. +\LMHash{} A finally clause \FINALLY{} $s$ defines an exception handler $h$ that executes as follows: +\LMHash{} Let $r$ be the current return value (\ref{return}). Then the current return value becomes undefined. Any open streams associated with any asynchronous for loops (\ref{asynchronousFor-in}) and yield-each (\ref{yieldEach}) statements executing within the dynamic scope of $h$ are canceled. \rationale{ Streams left open by for loops that were escaped for whatever reason would be canceled at function termination, but it is best to cancel them as soon as possible. } +\LMHash{} Then the \FINALLY{} clause is executed. Let $m$ be the immediately enclosing function. If $r$ is defined then the current return value is set to $r$ and then: \begin{itemize} \item @@ -5024,15 +5615,20 @@ \subsection{ Try} Otherwise, execution resumes at the end of the try statement. +\LMHash{} Execution of an \ON{}-\CATCH{} clause \code{\ON{} $T$ \CATCH{} ($p_1$, $p_2$)} $s$ of a try statement $t$ proceeds as follows: The statement $s$ is executed in the dynamic scope of the exception handler defined by the finally clause of $t$. Then, the current exception and active stack trace both become undefined. +\LMHash{} Execution of a \FINALLY{} clause \FINALLY{} $s$ of a try statement proceeds as follows: +\LMHash{} Let $x$ be the current exception and let $t$ be the active stack trace. Then the current exception and the active stack trace both become undefined. The statement $s$ is executed. Then, if $x$ is defined, it is rethrown as if by a rethrow statement (\ref{rethrow}) enclosed in a \CATCH{} clause of the form \code{\CATCH{} ($v_x$, $v_t$)} where $v_x$ and $v_t$ are fresh variables bound to $x$ and $t$ respectively. +\LMHash{} Execution of a try statement of the form \code{\TRY{} $s_1$ $on-catch_1 \ldots on-catch_n$ \FINALLY{} $s_f$;} proceeds as follows: +\LMHash{} The statement $s_1$ is executed in the dynamic scope of the exception handler defined by the try statement. Then, the \FINALLY{} clause is executed. \commentary{ @@ -5047,12 +5643,14 @@ \subsection{ Try} If no exception was raised, the \FINALLY{} clause is also executed. Execution of the \FINALLY{} clause could also raise an exception, which will cause transfer of control to the next enclosing handler. } +\LMHash{} A try statement of the form \code{\TRY{} $s_1$ $on-catch_1 \ldots on-catch_n$;} is equivalent to the statement \code{\TRY{} $s_1$ $on-catch_1 \ldots on-catch_n$ \FINALLY{} $\{\}$}. \subsection{ Return} -\label{return} +\LMLabel{return} +\LMHash{} The {\em return statement} returns a result to the caller of a synchronous function, completes the future associated with an asynchronous function or terminates the stream or iterable associated with a generator (\ref{functions}). @@ -5066,10 +5664,13 @@ \subsection{ Return} Due to \FINALLY{} clauses, the precise behavior of \RETURN{} is a little more involved. Whether the value a return statement is supposed to return is actually returned depends on the behavior of any \FINALLY{} clauses in effect when executing the return. A \FINALLY{} clause may choose to return another value, or throw an exception, or even redirect control flow leading to other returns or throws. All a return statement really does is set a value that is intended to be returned when the function terminates. } +\LMHash{} The {\em current return value} is a unique value specific to a given function activation. It is undefined unless explicitly set in this specification. +\LMHash{} Executing a return statement \code{\RETURN{} $e$;} proceeds as follows: +\LMHash{} First the expression $e$ is evaluated, producing an object $o$. Next: \begin{itemize} \item @@ -5085,28 +5686,34 @@ \subsection{ Return} The enclosing function cannot be marked as generator (i.e, \ASYNC* or \SYNC*), since generators are not allowed to contain a statement of the form \code{\RETURN{} $e$;} as discussed below. } +\LMHash{} Let $T$ be the static type of $e$ and let $f$ be the immediately enclosing function. +\LMHash{} It is a static type warning if the body of $f$ is marked \ASYNC{} and the type \code{Future$<$flatten(T)$>$} (\ref{awaitExpressions}) may not be assigned to the declared return type of $f$. Otherwise, it is a static type warning if $T$ may not be assigned to the declared return type of $f$. +\LMHash{} Let $S$ be the runtime type of $o$. In checked mode: \begin{itemize} \item If the body of $f$ is marked \ASYNC{} (\ref{functions}) it is a dynamic type error if $o$ is not \NULL{} (\ref{null}) and \code{Future$<$S$>$} is not a subtype of the actual return type (\ref{actualTypeOfADeclaration}) of $f$. \item Otherwise, it is a dynamic type error if $o$ is not \NULL{} and the runtime type of $o$ is not a subtype of the actual return type of $f$. \end{itemize} +\LMHash{} It is a compile-time error if a return statement of the form \code{\RETURN{} $e$;} appears in a generative constructor (\ref{generativeConstructors}). \rationale{ It is quite easy to forget to add the factory prefix for a constructor, accidentally converting a factory into a generative constructor. The static checker may detect a type mismatch in some, but not all, of these cases. The rule above helps catch such errors, which can otherwise be very hard to recognize. There is no real downside to it, as returning a value from a generative constructor is meaningless. } +\LMHash{} It is a compile-time error if a return statement of the form \code{\RETURN{} $e$;} appears in a generator function. \rationale{ In the case of a generator function, the value returned by the function is the iterable or stream associated with it, and individual elements are added to that iterable using yield statements, and so returning a value makes no sense. } +\LMHash{} Let $f$ be the function immediately enclosing a return statement of the form \RETURN{}; It is a static warning $f$ is neither a generator nor a generative constructor and either: \begin{itemize} \item $f$ is synchronous and the return type of $f$ may not be assigned to \VOID{} (\ref{typeVoid}) or, @@ -5120,8 +5727,10 @@ \subsection{ Return} \rationale{ An asynchronous non-generator always returns a future of some sort. If no expression is given, the future will be completed with \NULL{} and this motivates the requirement above.} \commentary{Leaving the return type of a function marked \ASYNC{} blank will be interpreted as \DYNAMIC{} as always, and cause no type error. Using \code{Future} or \code{Future$<$Object$>$} is acceptable as well, but any other type will cause a warning, since \NULL{} has no subtypes.} +\LMHash{} A return statement with no expression, \code{\RETURN;} is executed as follows: +\LMHash{} If the immediately enclosing function $f$ is a generator, then: \begin{itemize} \item @@ -5132,6 +5741,7 @@ \subsection{ Return} Otherwise, execution of the current method terminates. \end{itemize} +\LMHash{} Otherwise the return statement is executed by executing the statement \code{\RETURN{} \NULL{};} if it occurs inside a method, getter, setter or factory; otherwise, the return statement necessarily occurs inside a generative constructor, in which case it is executed by executing \code{\RETURN{} \THIS{};}. \commentary{Despite the fact that \code{\RETURN{};} is executed as if by a \code{\RETURN{} $e$;}, it is important to understand that it is not a static warning to include a statement of the form \code{\RETURN{};} @@ -5146,14 +5756,16 @@ \subsection{ Return} The question then becomes, what value should a return statement return when no return expression is given. In a generative constructor, it is obviously the object being constructed (\THIS{}). A void function is not expected to participate in an expression, which is why it is marked \VOID{} in the first place. Hence, this situation is a mistake which should be detected as soon as possible. The static rules help here, but if the code is executed, using \NULL{} leads to fast failure, which is desirable in this case. The same rationale applies for function bodies that do not contain a return statement at all. } +\LMHash{} It is a static warning if a function contains both one or more explicit return statements of the form \code{\RETURN;} and one or more return statements of the form \code{\RETURN{} $e$;}. \subsection{ Labels} -\label{labels} +\LMLabel{labels} +\LMHash{} A {\em label} is an identifier followed by a colon. A {\em labeled statement} is a statement prefixed by a label $L$. A {\em labeled case clause} is a case clause within a switch statement (\ref{switch}) prefixed by a label $L$. \rationale{The sole role of labels is to provide targets for the break (\ref{break}) and continue (\ref{continue}) statements.} @@ -5166,8 +5778,10 @@ \subsection{ Labels} . \end{grammar} +\LMHash{} The semantics of a labeled statement $L: s$ are identical to those of the statement $s$. The namespace of labels is distinct from the one used for types, functions and variables. +\LMHash{} The scope of a label that labels a statement $s$ is $s$. The scope of a label that labels a case clause of a switch statement $s$ is $s$. \rationale{Labels should be avoided by programmers at all costs. The motivation for including labels in the language is primarily making Dart a better target for code generation. @@ -5175,8 +5789,9 @@ \subsection{ Labels} \subsection{ Break} -\label{break} +\LMLabel{break} +\LMHash{} The {\em break statement} consists of the reserved word \BREAK{} and an optional label (\ref{labels}). \begin{grammar} @@ -5185,15 +5800,18 @@ \subsection{ Break} . \end{grammar} +\LMHash{} Let $s_b$ be a \BREAK{} statement. If $s_b$ is of the form \code{\BREAK{} $L$;}, then let $s_E$ be the the innermost labeled statement with label $L$ enclosing $s_b$. If $s_b$ is of the form \code{\BREAK{};}, then let $s_E$ be the the innermost \DO{} (\ref{do}), \FOR{} (\ref{for}), \SWITCH{} (\ref{switch}) or \WHILE{} (\ref{while}) statement enclosing $s_b$. It is a compile-time error if no such statement $s_E$ exists within the innermost function in which $s_b$ occurs. Furthermore, let $s_1, \ldots, s_n$ be those \TRY{} statements that are both enclosed in $s_E$ and that enclose $s_b$, and that have a \FINALLY{} clause. Lastly, let $f_j$ be the \FINALLY{} clause of $s_j, 1 \le j \le n$. Executing $s_b$ first executes $f_1, \ldots, f_n$ in innermost-clause-first order and then terminates $s_E$. +\LMHash{} If $s_E$ is an asynchronous for loop (\ref{asynchronousFor-in}), its associated stream subscription is canceled. Furthermore, let $a_k$ be the set of asynchronous for loops and yield-each statements (\ref{yieldEach}) enclosing $s_b$ that are enclosed in $s_E , 1 \le k \le m$. The stream subscriptions associated with $a_j$ are canceled, $1 \le j \le m$. \subsection{ Continue} -\label{continue} +\LMLabel{continue} +\LMHash{} The {\em continue statement} consists of the reserved word \CONTINUE{} and an optional label (\ref{labels}). \begin{grammar} @@ -5202,20 +5820,23 @@ \subsection{ Continue} . \end{grammar} +\LMHash{} Let $s_c$ be a \CONTINUE{} statement. If $s_c$ is of the form \code{\CONTINUE{} $L$;}, then let $s_E$ be the the innermost labeled \DO{} (\ref{do}), \FOR{} (\ref{for}) or \WHILE{} (\ref{while}) statement or case clause with label $L$ enclosing $s_c$. If $s_c$ is of the form \code{\CONTINUE{};} then let $s_E$ be the the innermost \DO{} (\ref{do}), \FOR{} (\ref{for}) or \WHILE{} (\ref{while}) statement enclosing $s_c$. It is a compile-time error if no such statement or case clause $s_E$ exists within the innermost function in which $s_c$ occurs. Furthermore, let $s_1, \ldots, s_n$ be those \TRY{} statements that are both enclosed in $s_E$ and that enclose $s_c$, and that have a \FINALLY{} clause. Lastly, let $f_j$ be the \FINALLY{} clause of $s_j, 1 \le j \le n$. Executing $s_c$ first executes $f_1, \ldots, f_n$ in innermost-clause-first order. Then, if $s_E$ is a case clause, control is transferred to the case clause. Otherwise, $s_E$ is necessarily a loop and execution resumes after the last statement in the loop body. \commentary{ In a while loop, that would be the boolean expression before the body. In a do loop, it would be the boolean expression after the body. In a for loop, it would be the increment clause. In other words, execution continues to the next iteration of the loop. } +\LMHash{} If $s_E$ is an asynchronous for loop (\ref{asynchronousFor-in}), let $a_k$ be the set of asynchronous for loops and yield-each statements (\ref{yieldEach}) enclosing $s_c$ that are enclosed in $s_E , 1 \le k \le m$. The stream subscriptions associated with $a_j$ are canceled, $1 \le j \le m$. \subsection{ Yield and Yield-Each} - \label{yieldAndYieldEach} + \LMLabel{yieldAndYieldEach} \subsubsection{ Yield} - \label{yield} + \LMLabel{yield} +\LMHash{} The {\em yield statement} adds an element to the result of a generator function (\ref{functions}). \begin{grammar} @@ -5224,18 +5845,23 @@ \subsection{ Continue} . \end{grammar} +\LMHash{} Execution of a statement $s$ of the form \code{\YIELD{} $e$;} proceeds as follows: +\LMHash{} First, the expression $e$ is evaluated to an object $o$. If the enclosing function $m$ is marked \ASYNC* (\ref{functions}) and the stream $u$ associated with $m$ has been paused, then execution of $m$ is suspended until $u$ is resumed or canceled. +\LMHash{} Next, $o$ is added to the iterable or stream associated with the immediately enclosing function. +\LMHash{} If the enclosing function $m$ is marked \ASYNC* and the stream $u$ associated with $m$ has been canceled, then let $c$ be the \FINALLY{} clause (\ref{try}) of the innermost enclosing try-finally statement, if any. If $c$ is defined, let $h$ be the handler induced by $c$. If $h$ is defined, control is transferred to $h$. If $h$ is undefined, the immediately enclosing function terminates. \rationale{ The stream associated with an asynchronous generator could be canceled by any code with a reference to that stream at any point where the generator was passivated. Such a cancellation constitutes an irretrievable error for the generator. At this point, the only plausible action for the generator is to clean up after itself via its \FINALLY{} clauses. } +\LMHash{} If the enclosing function $m$ is marked \SYNC* (\ref{functions}) then: \begin{itemize} \item @@ -5244,8 +5870,10 @@ \subsection{ Continue} The current call to \code{moveNext()} returns \TRUE. \end{itemize} +\LMHash{} It is a compile-time error if a yield statement appears in a function that is not a generator function. +\LMHash{} Let $T$ be the static type of $e$ and let $f$ be the immediately enclosing function. It is a static type warning if either: \begin{itemize} \item @@ -5256,8 +5884,9 @@ \subsection{ Continue} \subsubsection{ Yield-Each} - \label{yieldEach} + \LMLabel{yieldEach} +\LMHash{} The {\em yield-each statement} adds a series of values to the result of a generator function (\ref{functions}). \begin{grammar} @@ -5266,8 +5895,10 @@ \subsection{ Continue} . \end{grammar} +\LMHash{} Execution of a statement s of the form \code{\YIELD* $e$;} proceeds as follows: +\LMHash{} First, the expression $e$ is evaluated to an object $o$. If the immediately enclosing function $m$ is synchronous, then it is a dynamic error if the class of $o$ does not implement \code{Iterable}. If $m$ asynchronous, then it is a dynamic error if the class of $o$ does not implement \code{Stream}. Next, for each element $x$ of $o$: \begin{itemize} \item @@ -5278,6 +5909,7 @@ \subsection{ Continue} If $m$ is marked \ASYNC* and the stream $u$ associated with $m$ has been canceled, then let $c$ be the \FINALLY{} clause (\ref{try}) of the innermost enclosing try-finally statement, if any. If $c$ is defined, let $h$ be the handler induced by $c$. If $h$ is defined, control is transferred to $h$. If $h$ is undefined, the immediately enclosing function terminates. \end{itemize} +\LMHash{} If the enclosing function is marked \SYNC* (\ref{functions}) then: \begin{itemize} \item @@ -5286,14 +5918,17 @@ \subsection{ Continue} The current call to \code{moveNext()} returns \TRUE. \end{itemize} +\LMHash{} It is a compile-time error if a yield-each statement appears in a function that is not a generator function. +\LMHash{} Let $T$ be the static type of $e$ and let $f$ be the immediately enclosing function. It is a static type warning if $T$ may not be assigned to the declared return type of $f$. \subsection{ Assert} -\label{assert} +\LMLabel{assert} +\LMHash{} An {\em assert statement} is used to disrupt normal execution if a given boolean condition does not hold. \begin{grammar} @@ -5302,14 +5937,17 @@ \subsection{ Assert} . \end{grammar} +\LMHash{} The assert statement has no effect in production mode. In checked mode, execution of an assert statement \code{\ASSERT{}($e$);} proceeds as follows: +\LMHash{} The conditional expression $e$ is evaluated to an object $o$. If the class of $o$ is a subtype of \code{Function} then let $r$ be the result of invoking $o$ with no arguments. Otherwise, let $r$ be $o$. It is a dynamic type error if $o$ is not of type \code{bool} or of type \code{Function}, or if $r$ is not of type \code{bool}. If $r$ is \FALSE{}, we say that the assertion failed. If $r$ is \TRUE{}, we say that the assertion succeeded. If the assertion succeeded, execution of the assert statement is complete. If the assertion failed, an \code{AssertionError} is thrown. %\Q{Might be cleaner to define it as \code{if (!$e$) \{\THROW{} \NEW{} AssertionError();\}} (in checked mode only). %What about an error message as part of the assert?} +\LMHash{} It is a static type warning if the type of $e$ may not be assigned to either \code{bool} or $() \rightarrow$ \code{bool}. \rationale{Why is this a statement, not a built in function call? Because it is handled magically so it has no effect and no overhead in production mode. Also, in the absence of final methods. one could not prevent it being overridden (though there is no real harm in that). It cannot be viewed as a function call that is being optimized away because the argument might have side effects. @@ -5339,10 +5977,12 @@ \subsection{ Assert} %\rationale{therefore, we opt for the second option. Alternately, one could insist that assert be a reserved word, which may have an undesirable effect with respect to compatibility of Javascript code ported to Dart.} \section{Libraries and Scripts} -\label{librariesAndScripts} +\LMLabel{librariesAndScripts} +\LMHash{} A Dart program consists of one or more libraries, and may be built out of one or more {\em compilation units}. A compilation unit may be a library or a part (\ref{parts}). +\LMHash{} A library consists of (a possibly empty) set of imports, a set of exports, and a set of top-level declarations. A top-level declaration is either a class (\ref{classes}), a type alias declaration (\ref{typedef}), a function (\ref{functions}) or a variable declaration (\ref{variables}). The members of a library $L$ are those top level declarations given within $L$. \begin{grammar} @@ -5393,12 +6033,14 @@ \section{Libraries and Scripts} libraryExport \end{grammar} +\LMHash{} Libraries may be {\em explicitly named} or {\em implicitly named}. An explicitly named library begins with the word \LIBRARY{} (possibly prefaced with any applicable metadata annotations), followed by a qualified identifier that gives the name of the library. \commentary{ Technically, each dot and identifier is a separate token and so spaces between them are acceptable. However, the actual library name is the concatenation of the simple identifiers and dots and contains no spaces. } +\LMHash{} An implicitly named library has the empty string as its name. \rationale{ @@ -5409,19 +6051,23 @@ \section{Libraries and Scripts} Libraries intended for widespread use should avoid name collisions. Dart's \code{pub} package management system provides a mechanism for doing so. Each pub package is guaranteed a unique name, effectively enforcing a global namespace. } +\LMHash{} A library may optionally begin with a {\em script tag}. Script tags are intended for use with scripts (\ref{scripts}). A script tag can be used to identify the interpreter of the script to whatever computing environment the script is embedded in. The script tag must appear before any whitespace or comments. A script tag begins with the characters \#! and ends at the end of the line. Any characters that follow \#! in the script tag are ignored by the Dart implementation. +\LMHash{} Libraries are units of privacy. A private declaration declared within a library $L$ can only be accessed by code within $L$. Any attempt to access a private member declaration from outside $L$ will cause a method, getter or setter lookup failure. \commentary{Since top level privates are not imported, using the top level privates of another library is never possible. } +\LMHash{} The {\em public namespace} of library $L$ is the mapping that maps the simple name of each public top-level member $m$ of $L$ to $m$. The scope of a library $L$ consists of the names introduced by all top-level declarations declared in $L$, and the names added by $L$'s imports (\ref{imports}). \subsection{Imports} -\label{imports} +\LMLabel{imports} +\LMHash{} An {\em import} specifies a library to be used in the scope of another library. \begin{grammar} {\bf libraryImport:} @@ -5442,12 +6088,16 @@ \subsection{Imports} \end{grammar} +\LMHash{} An import specifies a URI $x$ where the declaration of an imported library is to be found. +\LMHash{} Imports may be {\em deferred} or {\em immediate}. A deferred import is distinguished by the appearance of the built-in identifier \DEFERRED{} after the URI. Any import that is not deferred is immediate. +\LMHash{} It is a compile-time error if the specified URI of an immediate import does not refer to a library declaration. The interpretation of URIs is described in section \ref{uris} below. +\LMHash{} It is a static warning if the specified URI of a deferred import does not refer to a library declaration. \rationale{ @@ -5455,14 +6105,19 @@ \subsection{Imports} } +\LMHash{} The {\em current library} is the library currently being compiled. The import modifies the namespace of the current library in a manner that is determined by the imported library and by the optional elements of the import. +\LMHash{} An immediate import directive $I$ may optionally include a prefix clause of the form \AS{} \code{Id} used to prefix names imported by $I$. A deferred import must include a prefix clause or a compile time error occurs. It is a compile-time error if a prefix used in a deferred import is used in another import clause. +\LMHash{} An import directive $I$ may optionally include a namespace combinator clauses used to restrict the set of names imported by $I$. Currently, two namespace combinators are supported: \HIDE{} and \SHOW{}. +\LMHash{} Let $I$ be an import directive that refers to a URI via the string $s_1$. Evaluation of $I$ proceeds as follows: +\LMHash{} If $I$ is a deferred import, no evaluation takes place. Instead, an mapping the name of the prefix, $p$ to a {\em deferred prefix object} is added to the scope of $L$. The deferred prefix object has the following methods: @@ -5474,8 +6129,10 @@ \subsection{Imports} \item For every type $T$ named $id$ in $L$, a corresponding getter named $id$ with return type \code{Type}. Calling the method results in a runtime error. \end{itemize} +\LMHash{} After a call succeeds, the name $p$ is mapped to a non-deferred prefix object as described below. In addition, the prefix object also supports the \code{loadLibrary} method, and so it is possible to call \code{loadLibrary} again. If a call fails, nothing happens, and one again has the option to call \code{loadLibrary} again. Whether a repeated call to \code{loadLibrary} succeeds will vary as described below. +\LMHash{} The effect of a repeated call to \code{$p$.loadLibrary} is as follows: \begin{itemize} \item @@ -5497,6 +6154,7 @@ \subsection{Imports} We do not specify what value the future returned resolves to. } +\LMHash{} If $I$ is an immediate import then, first \begin{itemize} @@ -5507,6 +6165,7 @@ \subsection{Imports} \end{itemize} +\LMHash{} Let $NS_0$ be the exported namespace (\ref{exports}) of $B$. Then, for each combinator clause $C_i, i \in 1..n$ in $I$: \begin{itemize} \item If $C_i$ is of the form @@ -5526,6 +6185,7 @@ \subsection{Imports} where $hide(l, n)$ takes a list of identfiers $l$ and a namespace $n$, and produces a namespace that is identical to $n$ except that for each name $k$ in $l$, $k$ and $k=$ are undefined. \end{itemize} +\LMHash{} Next, if $I$ includes a prefix clause of the form \AS{} $p$, let $NS = NS_n \cup \{p: prefixObject(NS_n)\}$ where $prefixObject(NS_n)$ is a {\em prefix object} for the namespace $NS_n$, which is an object that has the following members: \begin{itemize} @@ -5535,12 +6195,14 @@ \subsection{Imports} \item For every type $T$ named $id$ in $NS_n$, a corresponding getter named $id$ with return type \code{Type}, that, when invoked, returns the type object for $T$. \end{itemize} +\LMHash{} Otherwise, let $NS = NS_n$. It is a compile-time error if the current library declares a top-level member named $p$. % This is problematic, because it implies that p.T would be available even in a scope that declared p. We really need to think of p as a single object with properties p.T etc., except it isn't really that % either. After all, p isn't actually available as a stand alone name. +\LMHash{} Then, for each entry mapping key $k$ to declaration $d$ in $NS$, $d$ is made available in the top level scope of $L$ under the name $k$ unless either: \begin{itemize} \item @@ -5550,6 +6212,7 @@ \subsection{Imports} \rationale{The greatly increases the chance that a member can be added to a library without breaking its importers.} +\LMHash{} A {\em system library} is a library that is part of the Dart implementation. Any other library is a {\em non-system library}. If a name $N$ is referenced by a library $L$ and $N$ would be introduced into the top level scope of $L$ by imports of two libraries, $L_1$ and $L_2$, and the exported namespace of $L_1$ binds $N$ to a declaration originating in a system library: @@ -5565,6 +6228,7 @@ \subsection{Imports} It is recommended that tools that deploy Dart code produce output in which all imports use show clauses to ensure that additions to the namespace of a library never impact deployed code. } +\LMHash{} If a name $N$ is referenced by a library $L$ and $N$ is introduced into the top level scope of $L$ by more than one import, and not all the imports denote the same declaration, then: \begin{itemize} \item A static warning occurs. @@ -5573,6 +6237,7 @@ \subsection{Imports} \end{itemize} +\LMHash{} We say that the namespace $NS$ {\em has been imported into} $L$. \commentary{ @@ -5589,6 +6254,7 @@ \subsection{Imports} %On a related note, the provenance of the conflicting elements is not considered. An element that is imported via distinct paths may conflict with itself. This avoids variants of the well known "diamond" problem. } +\LMHash{} It is a static warning to import two different libraries with the same name. \commentary{ @@ -5600,6 +6266,7 @@ \subsection{Imports} This prevents situations where removing a name from a library would cause breakage of a client library. } +\LMHash{} The dart core library \code{dart:core} is implicitly imported into every dart library other than itself via an import clause of the form \code{\IMPORT{} `dart:core';} @@ -5615,8 +6282,9 @@ \subsection{Imports} } \subsection{Exports} -\label{exports} +\LMLabel{exports} +\LMHash{} A library $L$ exports a namespace (\ref{scoping}), meaning that the declarations in the namespace are made available to other libraries if they choose to import $L$ (\ref{imports}). The namespace that $L$ exports is known as its {\em exported namespace}. \begin{grammar} @@ -5625,14 +6293,19 @@ \subsection{Exports} . \end{grammar} +\LMHash{} An export specifies a URI $x$ where the declaration of an exported library is to be found. It is a compile-time error if the specified URI does not refer to a library declaration. +\LMHash{} We say that a name {\em is exported by a library} (or equivalently, that a library {\em exports a name}) if the name is in the library's exported namespace. We say that a declaration {\em is exported by a library} (or equivalently, that a library {\em exports a declaration}) if the declaration is in the library's exported namespace. +\LMHash{} A library always exports all names and all declarations in its public namespace. In addition, a library may choose to re-export additional libraries via {\em export directives}, often referred to simply as {\em exports}. +\LMHash{} Let $E$ be an export directive that refers to a URI via the string $s_1$. Evaluation of $E$ proceeds as follows: +\LMHash{} First, \begin{itemize} @@ -5642,6 +6315,7 @@ \subsection{Exports} \end{itemize} +\LMHash{} Let $NS_0$ be the exported namespace of $B$. Then, for each combinator clause $C_i, i \in 1..n$ in $E$: \begin{itemize} \item If $C_i$ is of the form \code{\SHOW{} $id_1, \ldots, id_k$} then let @@ -5652,9 +6326,11 @@ \subsection{Exports} then let $NS_i = \HIDE{}([id_1, \ldots, id_k], NS_{i-1}$). \end{itemize} +\LMHash{} For each entry mapping key $k$ to declaration $d$ in $NS_n$ an entry mapping $k$ to $d$ is added to the exported namespace of $L$ unless a top-level declaration with the name $k$ exists in $L$. +\LMHash{} If a name $N$ is referenced by a library $L$ and $N$ would be introduced into the exported namespace of $L$ by exports of two libraries, $L_1$ and $L_2$, and the exported namespace of $L_1$ binds $N$ to a declaration originating in a system library: %an export of a system library and an export of a non-system library: \begin{itemize} @@ -5666,17 +6342,21 @@ \subsection{Exports} See the discussion in section \ref{imports} for the reasoning behind this rule. } +\LMHash{} We say that $L$ {\em re-exports library } $B$, and also that $L$ {\em re-exports namespace } $NS_n$. When no confusion can arise, we may simply state that $L$ {\em re-exports }$B$, or that $L$ {\em re-exports }$NS_n$. +\LMHash{} It is a compile-time error if a name $N$ is re-exported by a library $L$ and $N$ is introduced into the export namespace of $L$ by more than one export, unless all exports refer to same declaration for the name $N$. It is a static warning to export two different libraries with the same name. \subsection{Parts} -\label{parts} +\LMLabel{parts} +\LMHash{} A library may be divided into {\em parts}, each of which can be stored in a separate location. A library identifies its parts by listing them via \PART{} directives. +\LMHash{} A {\em part directive} specifies a URI where a Dart compilation unit that should be incorporated into the current library may be found. \begin{grammar} @@ -5692,22 +6372,27 @@ \subsection{Parts} . \end{grammar} +\LMHash{} A {\em part header} begins with \PART{} \OF{} followed by the name of the library the part belongs to. A part declaration consists of a part header followed by a sequence of top-level declarations. +\LMHash{} Compiling a part directive of the form \code{\PART{} $s$;} causes the Dart system to attempt to compile the contents of the URI that is the value of $s$. The top-level declarations at that URI are then compiled by the Dart compiler in the scope of the current library. It is a compile-time error if the contents of the URI are not a valid part declaration. It is a static warning if the referenced part declaration $p$ names a library other than the current library as the library to which $p$ belongs. \subsection{Scripts} -\label{scripts} +\LMLabel{scripts} +\LMHash{} A {\em script} is a library whose exported namespace (\ref{exports}) includes a top-level function \code{main}. A script $S$ may be executed as follows: +\LMHash{} First, $S$ is compiled as a library as specified above. Then, the top-level function \code{main} that is in the exported namespace of $S$ is invoked. If \code{main} has no positional parameters, it is invoked with no arguments. Otherwise if \code{main} has exactly one positional parameter, it is invoked with a single actual argument whose runtime type implements \code{List$<$String$>$}. Otherwise \code{main} is invoked with the following two actual arguments: \begin{enumerate} \item An object whose runtime type implements \code{List$<$String$>$}. \item The initial message of the current isolate $i$ as determined by the invocation of \code{Isolate.spawnUri} that spawned $i$. \end{enumerate} +\LMHash{} It is a run time error if $S$ does not declare or import a top-level function \code{main}. It is a static warning if \code{main} has more than two required parameters. \commentary { @@ -5723,8 +6408,9 @@ \subsection{Scripts} } \subsection{URIs} -\label{uris} +\LMLabel{uris} +\LMHash{} URIs are specified by means of string literals: \begin{grammar} @@ -5733,16 +6419,20 @@ \subsection{URIs} . \end{grammar} +\LMHash{} It is a compile-time error if the string literal $x$ that describes a URI is not a compile-time constant, or if $x$ involves string interpolation. +\LMHash{} This specification does not discuss the interpretation of URIs, with the following exceptions. \rationale{ The interpretation of URIs is mostly left to the surrounding computing environment. For example, if Dart is running in a web browser, that browser will likely interpret some URIs. While it might seem attractive to specify, say, that URIs are interpreted with respect to a standard such as IETF RFC 3986, in practice this will usually depend on the browser and cannot be relied upon. } +\LMHash{} A URI of the form \code{dart:$s$} is interpreted as a reference to a system library (\ref{imports}) $s$. +\LMHash{} A URI of the form \code{package:$s$} is interpreted as a URI of the form \code{packages/s} relative to an implementation specified location. \commentary{ @@ -5753,22 +6443,25 @@ \subsection{URIs} The intent is that, during development, Dart programmers can rely on a package manager to find elements of their program. Such package managers may provide a directory structure starting at a local directory \code{packages} where they place the required dart code (or links thereto). } +\LMHash{} Otherwise, any relative URI is interpreted as relative to the the location of the current library. All further interpretation of URIs is implementation dependent. \commentary{This means it is dependent on the embedder.} \section{Types} -\label{types} +\LMLabel{types} +\LMHash{} Dart supports optional typing based on interface types. \rationale{The type system is unsound, due to the covariance of generic types. This is a deliberate choice (and undoubtedly controversial). Experience has shown that sound type rules for generics fly in the face of programmer intuition. It is easy for tools to provide a sound type analysis if they choose, which may be useful for tasks like refactoring. } \subsection{Static Types} -\label{staticTypes} +\LMLabel{staticTypes} +\LMHash{} Static type annotations are used in variable declarations (\ref{variables}) (including formal parameters (\ref{formalParameters})), in the return types of functions (\ref{functions}) and in the bounds of type variables. Static type annotations are used during static checking and when running programs in checked mode. They have no effect whatsoever in production mode. \begin{grammar} @@ -5789,6 +6482,7 @@ \subsection{Static Types} . \end{grammar} +\LMHash{} A Dart implementation must provide a static checker that detects and reports exactly those situations this specification identifies as static warnings and only those situations. However: \begin{itemize} \item Running the static checker on a program $P$ is not required for compiling and running $P$. @@ -5800,6 +6494,7 @@ \subsection{Static Types} %\Q{Should we do something with respect to non-nullable types?} +\LMHash{} A type $T$ is {\em malformed} iff: \begin{itemize} \item $T$ has the form $id$ or the form $prefix.id$, and in the enclosing lexical scope, the name $id$ (respectively $prefix.id$) does not denote a type. @@ -5812,29 +6507,35 @@ \subsection{Static Types} % \end{itemize} \end{itemize} +\LMHash{} Any use of a malformed type gives rise to a static warning. A malformed type is then interpreted as \DYNAMIC{} by the static type checker and the runtime unless explicitly specified otherwise. \rationale{ This ensures that the developer is spared a series of cascading warnings as the malformed type interacts with other types. } +\LMHash{} A type $T$ is {\em deferred} iff it is of the form $p.T$ where $p$ is a deferred prefix. It is a static warning to use a deferred type in a type annotation, type test, type cast or as a type parameter. However, all other static warnings must be issued under the assumption that all deferred libraries have successfully been loaded. \subsubsection{Type Promotion} -\label{typePromotion} +\LMLabel{typePromotion} +\LMHash{} The static type system ascribes a static type to every expression. In some cases, the types of local variables and formal parameters may be promoted from their declared types based on control flow. +\LMHash{} We say that a variable $v$ is known to have type $T$ whenever we allow the type of $v$ to be promoted. The exact circumstances when type promotion is allowed are given in the relevant sections of the specification (\ref{logicalBooleanExpressions}, \ref{conditional} and \ref{if}). +\LMHash{} Type promotion for a variable $v$ is allowed only when we can deduce that such promotion is valid based on an analysis of certain boolean expressions. In such cases, we say that the boolean expression $b$ shows that $v$ has type $T$. As a rule, for all variables $v$ and types $T$, a boolean expression does not show that $v$ has type $T$. Those situations where an expression does show that a variable has a type are mentioned explicitly in the relevant sections of this specification (\ref{typeTest} and \ref{logicalBooleanExpressions}). \subsection{Dynamic Type System} -\label{dynamicTypeSystem} +\LMLabel{dynamicTypeSystem} +\LMHash{} A Dart implementation must support execution in both {\em production mode} and {\em checked mode}. Those dynamic checks specified as occurring specifically in checked mode must be performed iff the code is executed in checked mode. \commentary{ @@ -5848,6 +6549,7 @@ \subsection{Dynamic Type System} %It is a run-time type error to access an undeclared type outside . +\LMHash{} %It is a dynamic type error if a malformed type is used in a subtype test. In checked mode, it is a dynamic type error if a deferred, malformed or malbounded (\ref{parameterizedTypes}) type is used in a subtype test. @@ -5929,11 +6631,12 @@ \subsection{Dynamic Type System} \subsection{Type Declarations} -\label{typeDeclarations} +\LMLabel{typeDeclarations} \subsubsection{Typedef} -\label{typedef} +\LMLabel{typedef} +\LMHash{} A {\em type alias} declares a name for a type expression. @@ -5957,8 +6660,10 @@ \subsubsection{Typedef} \end{grammar} +\LMHash{} The effect of a type alias of the form \code{\TYPEDEF{} $T$ $id (T_1$ $p_1, \ldots, T_n$ $p_n, [T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $p_{n+k}])$} declared in a library $L$ is is to introduce the name $id$ into the scope of $L$, bound to the function type $(T_1, \ldots, T_n, [T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $p_{n+k}]) \rightarrow T$. The effect of a type alias of the form \code{\TYPEDEF{} $T$ $id (T_1$ $p_1, \ldots, T_n$ $p_n, \{T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $p_{n+k}\})$} declared in a library $L$ is is to introduce the name $id$ into the scope of $L$, bound to the function type $(T_1, \ldots, T_n, \{T_{n+1}$ $p_{n+1}, \ldots, T_{n+k}$ $p_{n+k}\}) \rightarrow T$. . In either case, iff no return type is specified, it is taken to be \DYNAMIC{}. Likewise, if a type annotation is omitted on a formal parameter, it is taken to be \DYNAMIC{}. +\LMHash{} It is a compile-time error if any default values are specified in the signature of a function type alias. %A typedef may only refer to itself via the bounds of its generic parameters. Any self reference in a typedef, either directly, or recursively via another typedef, is a compile time error. @@ -5967,8 +6672,9 @@ \subsubsection{Typedef} \subsection{Interface Types} -\label{interfaceTypes} +\LMLabel{interfaceTypes} +\LMHash{} The implicit interface of class $I$ is a direct supertype of the implicit interface of class $J$ iff: \begin{itemize} \item @@ -5991,6 +6697,7 @@ \subsection{Interface Types} %\Q{Can wacky stuff happen with interface injection, e.g., a direct superinterface becomes indirect? What about side effects - loading order can affect type relationships. %} +\LMHash{} A type $T$ is more specific than a type $S$, written $T << S$, if one of the following conditions is met: \begin{itemize} \item $T$ is $S$. @@ -6006,6 +6713,7 @@ \subsection{Interface Types} \item $T << U$ and $U << S$. \end{itemize} +\LMHash{} $<<$ is a partial order on types. $T$ is a subtype of $S$, written $T <: S$, iff $[\bot/\DYNAMIC{}]T << S$. @@ -6015,10 +6723,12 @@ \subsection{Interface Types} Although $<:$ is not a partial order on types, it does contain a partial order, namely $<<$. This means that, barring raw types, intuition about classical subtype rules does apply. } +\LMHash{} $S$ is a supertype of $T$, written $S :> T$, iff $T$ is a subtype of $S$. \commentary{The supertypes of an interface are its direct supertypes and their supertypes. } +\LMHash{} An interface type $T$ may be assigned to a type $S$, written $T \Longleftrightarrow S$, iff either $T <: S$ or $S <: T$. \rationale{This rule may surprise readers accustomed to conventional typechecking. The intent of the $\Longleftrightarrow$ relation is not to ensure that an assignment is correct. Instead, it aims to only flag assignments that are almost certain to be erroneous, without precluding assignments that may work. @@ -6027,8 +6737,9 @@ \subsection{Interface Types} } \subsection{Function Types} -\label{functionTypes} +\LMLabel{functionTypes} +\LMHash{} Function types come in two variants: \begin{enumerate} \item @@ -6047,6 +6758,7 @@ \subsection{Function Types} %\item$ \forall i \in 1 .. n, T_i \Longleftrightarrow S_i$. %\end{enumerate} +\LMHash{} %A function type $(T_1, \ldots T_n, [T_{n+1} \ldots, T_{n+k}]) \rightarrow T$ is a subtype of the % the line below revises the rule to be more liberal A function type $(T_1, \ldots T_{k}, [T_{k+1} \ldots, T_{n+m}]) \rightarrow T$ is a subtype of the @@ -6061,6 +6773,7 @@ \subsection{Function Types} \end{enumerate} +\LMHash{} A function type $(T_1, \ldots T_n, \{T_{x_1}$ $x_1, \ldots, T_{x_k}$ $x_k\}) \rightarrow T$ is a subtype of the function type $(S_1, \ldots, S_n, \{S_{y_1}$ $y_1, \ldots, S_{y_m}$ $y_m\}) \rightarrow S$, if all of the following conditions are met: \begin{enumerate} \item Either @@ -6083,6 +6796,7 @@ \subsection{Function Types} %The rules above need to be sanity checked, but the intent is that we view functions with rest parameters as having type $(T_1, ..., T_n, [\_{Tn+1}[] \_]) \rightarrow T$, where \_ is some magical identifier. Then the rules above may cover everything. % This is wrong - from the outside, the type takes an unbounded sequence of types, not a list. This can be modeled as $(T_1, \ldots, T_n, [T_{n+1}, \_ \ldots, T_{n+k} \_]) \rightarrow T$ for some finite $k$. +\LMHash{} In addition, the following subtype rules apply: @@ -6098,8 +6812,10 @@ \subsection{Function Types} The naive reader might conclude that, since it is not legal to declare a function with an empty optional parameter list, these rules are pointless. However, they induce useful relationships between function types that declare no optional parameters and those that do. } +\LMHash{} A function type $T$ may be assigned to a function type $S$, written $T \Longleftrightarrow S$, iff $T <: S$. +\LMHash{} % ensure that Object and dynamic may be assign dot a function type A function is always an instance of some class that implements the class \code{Function} and implements a \CALL{} method with the same signature as the function. All function types are subtypes of \code{Function}. If a type $I$ includes an instance method named \CALL{}, and the type of \CALL{} is the function type $F$, then $I$ is considered to be more specific than $F$. It is a static warning if a concrete class implements \cd{Function} and does not have a concrete method named \CALL{} unless that class declares its own implementation of \cd{noSuchMethod()}. @@ -6109,6 +6825,7 @@ \subsection{Function Types} %\commentary{Need to specify how a function values dynamic type is derived from its static signature.} +\LMHash{} A function type $(T_1, \ldots T_{k}, [T_{k+1} \ldots, T_{n+m}]) \rightarrow T$ is a more specific than the function type $(S_1, \ldots, S_{k+j}, [S_{k+j+1} \ldots, S_{n}]) \rightarrow S$, if all of the following conditions are met: \begin{enumerate} @@ -6121,6 +6838,7 @@ \subsection{Function Types} \end{enumerate} +\LMHash{} A function type $(T_1, \ldots T_n, \{T_{x_1}$ $x_1, \ldots, T_{x_k}$ $x_k\}) \rightarrow T$ is more specific than the function type $(S_1, \ldots, S_n, \{S_{y_1}$ $y_1, \ldots, S_{y_m}$ $y_m\}) \rightarrow S$, if all of the following conditions are met: \begin{enumerate} \item Either @@ -6134,19 +6852,23 @@ \subsection{Function Types} \item For all $y_i \in \{y_1, \ldots, y_m\}, y_i = x_j \Rightarrow T_j << S_i$ \end{enumerate} +\LMHash{} Furthermore, if $F$ is a function type, $F << \code{Function}$. \subsection{Type \DYNAMIC{}} -\label{typeDynamic} +\LMLabel{typeDynamic} +\LMHash{} The type \DYNAMIC{} denotes the unknown type. +\LMHash{} If no static type annotation has been provided the type system assumes the declaration has the unknown type. If a generic type is used but type arguments are not provided, then the type arguments default to the unknown type. \commentary{This means that given a generic declaration $G$, the type $G$ is equivalent to $G< \DYNAMIC{}, \ldots, \DYNAMIC{}>$. } +\LMHash{} Type \DYNAMIC{} has methods for every possible identifier and arity, with every possible combination of named parameters. These methods all have \DYNAMIC{} as their return type, and their formal parameters all have type \DYNAMIC{}. Type \DYNAMIC{} has properties for every possible identifier. These properties all have type \DYNAMIC{}. @@ -6169,6 +6891,7 @@ \subsection{Type \DYNAMIC{}} What of static checking? Surely we would want to flag (2) when users have explicitly asked for static typechecking? Yes, but the reality is that the Dart static checker is likely to be running in the background by default. Engineering teams typically desire a ``clean build'' free of warnings and so the checker is designed to be extremely charitable. Other tools can interpret the type information more aggressively and warn about violations of conventional (and sound) static type discipline. } +\LMHash{} The name \DYNAMIC{} denotes a \cd{Type} object even though \DYNAMIC{} is not a class. %\rationale { @@ -6176,8 +6899,9 @@ \subsection{Type \DYNAMIC{}} %} \subsection{Type Void} -\label{typeVoid} +\LMLabel{typeVoid} +\LMHash{} The special type \VOID{} may only be used as the return type of a function: it is a compile-time error to use \VOID{} in any other context. \commentary{ @@ -6212,15 +6936,18 @@ \subsection{Type Void} \subsection{Parameterized Types} -\label{parameterizedTypes} +\LMLabel{parameterizedTypes} +\LMHash{} A {\em parameterized type} is an invocation of a generic type declaration. +\LMHash{} Let $T$ be a parameterized type $G$. If $G$ is not a generic type, the type arguments $S_i$, $1 \le i \le n$ are discarded. If $G$ has $m \ne n$ type parameters, $T$ is treated as as a parameterized type with $m$ arguments, all of which are \DYNAMIC{}. \commentary{In short, any arity mismatch results in all type arguments being dropped, and replaced with the correct number of type arguments, all set to \DYNAMIC{}. Of course, a static warning will be issued. } +\LMHash{} Otherwise, let $T_i$ be the type parameters of $G$ and let $B_i$ be the bound of $T_i, i \in 1.. n$,. $T$ is {\em malbounded} iff either $S_i$ is malbounded or $S_i$ is not a subtype of $[S_1, \ldots, S_n/T_1, \ldots, T_n]B_i, i \in 1.. n$. @@ -6228,8 +6955,10 @@ \subsection{Parameterized Types} Note, that, in checked mode, it is a dynamic type error if a malbounded type is used in a type test as specified in \ref{dynamicTypeSystem}. } +\LMHash{} Any use of a malbounded type gives rise to a static warning. +\LMHash{} If $S$ is the static type of a member $m$ of $G$, then the static type of the member $m$ of $G$ is $[A_1, \ldots, A_n/T_1, \ldots, T_n]S$ where $T_1, \ldots, T_n$ are the formal type parameters of $G$. Let $B_i$, be the bounds of $T_i, 1 \le i \le n$. It is a static type warning if $A_i$ is not a subtype of $[A_1, \ldots, A_n/T_1, \ldots, T_n]B_i, i \in 1..n$. It is a static type warning if $G$ is not a generic type with exactly $n$ type parameters. @@ -6237,14 +6966,16 @@ \subsection{Parameterized Types} \subsubsection{Actual Type of Declaration} -\label{actualTypeOfADeclaration} +\LMLabel{actualTypeOfADeclaration} +\LMHash{} A type $T$ {\em depends on a type parameter} $U$ iff: \begin{itemize} \item $T$ is $U$. \item $T$ is a parameterized type, and one of the type arguments of $T$ depends on $U$. \end{itemize} +\LMHash{} Let $T$ be the declared type of a declaration $d$, as it appears in the program source. The {\em actual type} of $d$ is \begin{itemize} @@ -6253,20 +6984,24 @@ \subsubsection{Actual Type of Declaration} \end{itemize} \subsubsection{Least Upper Bounds} -\label{leastUpperBounds} +\LMLabel{leastUpperBounds} +\LMHash{} % does this diverge in some cases? Given two interfaces $I$ and $J$, let $S_I$ be the set of superinterfaces of $I$, let $S_J$ be the set of superinterfaces of $J$ and let $S = (I \cup S_I) \cap (J \cup S_J)$. Furthermore, we define $S_n = \{T | T \in S \wedge depth(T) =n\}$ for any finite $n$ %, and $k=max(depth(T_1), \ldots, depth(T_m)), T_i \in S, i \in 1..m$, where $depth(T)$ is the number of steps in the longest inheritance path from $T$ to \code{Object}. Let $q$ be the largest number such that $S_q$ has cardinality one. The least upper bound of $I$ and $J$ is the sole element of $S_q$. +\LMHash{} The least upper bound of \DYNAMIC{} and any type $T$ is \DYNAMIC{}. The least upper bound of \VOID{} and any type $T \ne \DYNAMIC{}$ is \VOID{}. Let $U$ be a type variable with upper bound $B$. The least upper bound of $U$ and a type $T$ is the least upper bound of $B$ and $T$. +\LMHash{} The least upper bound relation is symmetric and reflexive. % Function types +\LMHash{} The least upper bound of a function type and an interface type $T$ is the least upper bound of \cd{Function} and $T$. Let $F$ and $G$ be function types. If $F$ and $G$ differ in their number of required parameters, then the least upper bound of $F$ and $G$ is \cd{Function}. Otherwise: \begin{itemize} @@ -6309,16 +7044,18 @@ \subsubsection{Least Upper Bounds} \section{Reference} -\label{reference} +\LMLabel{reference} \subsection{Lexical Rules} -\label{lexicalRules} +\LMLabel{lexicalRules} +\LMHash{} Dart source text is represented as a sequence of Unicode code points. This sequence is first converted into a sequence of tokens according to the lexical rules given in this specification. At any point in the tokenization process, the longest possible token is recognized. \subsubsection{Reserved Words} -\label{reservedWords} +\LMLabel{reservedWords} +\LMHash{} A {\em reserved word} may not be used as an identifier; it is a compile-time error if a reserved word is used where an identifier is expected. \ASSERT{}, \BREAK{}, \CASE{}, \CATCH{}, \CLASS{}, \CONST{}, \CONTINUE{}, \DEFAULT{}, \DO{}, \ELSE{}, \ENUM{}, \EXTENDS{}, \FALSE{}, \FINAL{}, \FINALLY{}, \FOR{}, \IF{}, \IN{}, \IS{}, \NEW{}, \NULL{}, \RETHROW, \RETURN{}, \SUPER{}, \SWITCH{}, \THIS{}, \THROW{}, \TRUE{}, \TRY{}, \VAR{}, \VOID{}, \WHILE{}, \WITH{}. @@ -6342,8 +7079,9 @@ \subsubsection{Reserved Words} \end{grammar} \subsubsection{Comments} -\label{comments} +\LMLabel{comments} +\LMHash{} {\em Comments} are sections of program text that are used for documentation. \begin{grammar}{\bf SINGLE\_LINE\_COMMENT:} @@ -6355,16 +7093,22 @@ \subsubsection{Comments} . \end{grammar} +\LMHash{} Dart supports both single-line and multi-line comments. A {\em single line comment} begins with the token \code{//}. Everything between \code{//} and the end of line must be ignored by the Dart compiler unless the comment is a documentation comment. . +\LMHash{} A {\em multi-line comment} begins with the token \code{/*} and ends with the token \code{*/}. Everything between \code{/}* and \code{*}/ must be ignored by the Dart compiler unless the comment is a documentation comment. Comments may nest. +\LMHash{} {\em Documentation comments} are comments that begin with the tokens \code{///} or \code{/**}. Documentation comments are intended to be processed by a tool that produces human readable documentation. +\LMHash{} The scope of a documentation comment always excludes the imported namespace of the enclosing library. Only names declared in the enclosing library are considered in scope within a documentation comment. +\LMHash{} The scope of a documentation comment immediately preceding the declaration of a class $C$ is the instance scope of $C$, excluding any names introduced via the import namespace of the enclosing library. +\LMHash{} The scope of a documentation comment immediately preceding the declaration of a function $f$ is the scope in force at the very beginning of the body of $f$, excluding any names introduced via the import namespace of the enclosing library. @@ -6373,8 +7117,9 @@ \subsubsection{Comments} %\subsection{Grammar} \subsection{Operator Precedence} -\label{operatorPrecedence} +\LMLabel{operatorPrecedence} +\LMHash{} Operator precedence is given implicitly by the grammar. \commentary{The following non-normative table may be helpful @@ -6435,3 +7180,156 @@ \section*{Appendix: Naming Conventions} \end{document} + +[Text after \end{document} is ignored, hence we do not need "%"] +---------------------------------------------------------------------- + +* On Location Markers + +This is a description of location markers, giving some information +about the underlying motivation and rationale, the actual +implementation, and the relevant tool support. + +** What is a Location Marker? + +In order to support more fine-grained update propagation from this +language specification to artifacts that depend on it, location +markers have been added. The idea is that each logical unit (section, +subsection, etc) and each paragraph containing normative text should +be addressable using these markers, such that source code (compilers +and other tools, tests, etc.) can contain location markers, and the +corresponding location in the spec may be looked up using standard +document viewer search features. + +An SHA1 hash value of the text is associated with each location +marker, such that changes in the text will incur changes in this hash +value. Consequently, source code in tools/tests that depend on +specific parts of the spec may be flagged for revision by checking +whether these hash values have changed: If a given test T depends on +a paragraph with hash value V in the spec, and the search for V fails +in a new version of the spec, then that paragraph has changed and T +should be revisited and possible revised. + +As a result, the search for parts of source code and similar artifacts +in likely need of updates because of spec changes can be performed +mechanically, which should help ensure that the conformance of all +artifacts depending on this spec is maintained more easily, and hence +more consistently. Note that it makes no difference whether the need +for an update has arisen in a very recent version of the spec or it +has existed for a long time, because the hash value just remains +different as long as the text is different from what it was when the +location marker was harvested from the spec. + +** LaTeX Commands Supporting Location Markers + +Concretely, this is based on the commands \LMHash and \LMLabel. +\LMHash{V} is used to add the text V in the margin, intended to mark +a paragraph of normative text with the SHA1 hash value of the text, V. +\LMLabel{L} has the effect of \label{L}, and moreover it shows the +text sec:L in the margin. In order to indicate a dependency on a +section or subsection an \LMLabel location marker is used, and in +order to indicate a dependency on a specific paragraph, the hash value +of that paragraph is used. + +In this file, each normative paragraph has had the command \LMHash{} +added at the beginning, such that each of these paragraphs can be +decorated with their hash value. Similarly, all \section{}s, +\subsection{}s, \subsubsection{}s, and \paragraph{}s have had +their \label commands changed to \LMLabel, such that they are +decorated with logical names. + +** Rationale + +The design of location markers was proposed by Erik Ernst and +developed through discussions with several others, in particular Gilad +Bracha and Lars Bak. Some discussions along the way that gave rise to +the given design are outlined below. + +The basic idea is that a hash value based on the actual text will +serve well to identify a piece of text, because it will change +whenever the text changes, and it remains the same if the text is +moved to a different location; in other words, it characterizes the +text itself, independently of the rest of the document. Hence: + + - references to specific paragraphs in the spec are easy to create: + copy the marker and paste it into the source code (but see below + why this uses an extra indirection as far as possible) + + - such references would be robust in the sense that they depend on + the actual text alone, i.e., they would not be invalidated by + updates to section numbers, relocation of the paragraph, or + updates to text in different paragraphs; as Lars mentioned, we + should use a "stripped" version of the text, removing comments, + normalizing white space, etc., which would make the refs even more + robust in case of "inessential" changes + + - artifacts depending on a given part of the spec that was + changed could easily be pointed out: After an update to a + part of the spec, that artifact would hold a marker associated + with a hash value which does not any more occur in the spec, + maintainers of the artifact would then receive a notification + ("test1773 depends on a part of the spec that was updated"). + Nice tool support would show them the paragraph in the most recent + version of the spec as well as the old version that the artifact + used to depend on, and a comparison of the two would help + clarifying what needs fixing because of this change, if anything. + +However, there is a conflict in this scenario: Lars pointed out that +it is very inconvenient to have to create a lot of revision control +commits (e.g., new versions of tests), just because a large number of +artifacts depend on a specific hash value that changed, if that change +has no real impact on each of those artifacts. The obvious solution +to this problem would be to use symbolic names and keep the actual +hash values out of the primary artifacts. + +This approach has been used for \section{}s, \subsection{}s, etc., by +using their labels as location markers. For instance, dependency on +\subsubsection{New} would be marked as a dependency on 'sec:new', +which will (most likely) exist with the same label in the spec for a +long time. To detect a need for updates, the hash value associated +with \subsubsection{New} from the date of the latest check of this +kind to the dependent artifact should be compared with the current +hash value for the same \subsubsection{}: The artifact should be +revisited iff those hash values differ. As an easy approximation to +this scheme, the hash values for all location markers would be +computed for each spec update, and the location markers that have new +hash values should cause revisits to all artifacts depending on that +location marker. + +The symbolic location markers on larger units like \section{} +etc. enable location marking in a hierarchical fashion: Dependencies +on a \subsubsection{} or on a \section{} can be chosen according to +the actual needs with each dependent artifact. In general, fine +granularity helps avoiding false positives, where an update somewhere +in a large unit will flag too many dependent artifacts for revisits. +In contrast, coarse granularity enables other artifacts to declare the +actual dependencies when small units would be impractical because the +artifact depends on so many of them. But there is a problem at the +bottom of this hierarchy, namely with paragraphs. + +It would be very inconvenient to have to invent a logical name for +every paragraph. Similarly, using a simple paragraph numbering would +be unstable (add one new paragraph in the beginning of a section, and +all the rest have new numbers, creating a massive flood of false +update alerts, or, even worse, corrupting the declared dependencies in +artifacts because they point to the wrong paragraphs). + +Hence, paragraphs have no other label than their actual hash value. +Artifacts that depend on very specific elements in the spec may +declare so by using an actual hash value for a given paragraph, and in +return they pay in terms of potential updates to the marker when that +paragraph changes, even in cases where the actual change makes no +difference for that particular artifact. This choice of granularity +vs. stability is up to the creator of each artifact. + +** Maintenance of this document + +The invariant that each normative paragraph is associated with a line +containing the text \LMHash{} should be maintained. Extra occurrences +of \LMHash{} can be added if needed, e.g., in order to make +individual \item{}s in itemized lists addressable. Each \LM.. command +must occur on a separate line. \LMHash{} must occur immediately +before the associated paragraph, and \LMLabel must occur immediately +after the associated \section{}, \subsection{} etc. + +---------------------------------------------------------------------- diff --git a/tests/standalone/io/addlatexhash_test.dart b/tests/standalone/io/addlatexhash_test.dart new file mode 100644 index 000000000000..98f1ba52be52 --- /dev/null +++ b/tests/standalone/io/addlatexhash_test.dart @@ -0,0 +1,122 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// testing ../../../tools/addlatexhash.dart + +import 'dart:io'; +import 'package:path/path.dart' as path; +import '../../../tools/addlatexhash.dart'; + +final scriptDir = path.dirname(path.fromUri(Platform.script)); +final dartRootDir = path.dirname(path.dirname(path.dirname(scriptDir))); +final dartRootPath = dartRootDir.toString(); + +// Check that the given ProcessResult indicates success; if so +// return the standard output, otherwise report the failure +checkAction(result, errorMessage) { + if (result.exitCode != 0) { + print(result.stdout); + print(result.stderr); + throw errorMessage; + } + return result.stdout; +} + +oneTestCutMatch(line, re, expected) { + var result = cutMatch(line, new RegExp(re).firstMatch(line)); + if (result != expected) { + throw "cutMatch '$re' from '$line' yields '$result' != '$expected'"; + } +} + +void testCutMatch() { + oneTestCutMatch("test", "", "test"); + oneTestCutMatch("test", "e", "tst"); + oneTestCutMatch("test", "te", "st"); + oneTestCutMatch("test", "st", "te"); + oneTestCutMatch("test", "test", ""); +} + +oneTestSisp(sispFun, nameSuffix, line, expected) { + var result = sispFun(line); + if (result != expected) { + throw "sispIsDart$nameSuffix '$line' yields $result"; + } +} + +testSisp() { + oneTestSisp(sispIsDartBegin, "Begin", "\\begin{dartCode}\n", true); + oneTestSisp(sispIsDartBegin, "Begin", " \\begin{dartCode}\n", true); + oneTestSisp(sispIsDartBegin, "Begin", "whatever else ..", false); + oneTestSisp(sispIsDartEnd, "End", "\\end{dartCode}", true); + oneTestSisp(sispIsDartEnd, "End", " \\end{dartCode}\t \n", true); + oneTestSisp(sispIsDartEnd, "End", "whatever else ..", false); +} + +// Check that the LaTeX source transformation done by addlatexhash.dart +// does not affect the generated output, as seen via dvi2tty and diff. +// NB: Not part of normal testing (only local): latex and dvi2tty are +// not installed in the standard test environment. +testNoChange() { + // set up /tmp directory to hold output + final tmpDir = Directory.systemTemp.createTempSync("addlatexhash_test"); + final tmpDirPath = tmpDir.path; + + // file names/paths for original spec + const specName = "dartLangSpec"; + const specFileName = "$specName.tex"; + final specDirPath = path.join(dartRootDir, "docs", "language"); + final specPath = path.join(specDirPath, specFileName); + final tmpSpecPath = path.join(tmpDirPath, specFileName); + const specDviFileName = "$specName.dvi"; + final specDviPath = path.join(tmpDirPath, specDviFileName); + + // file names/paths for associated sty + const styFileName = "dart.sty"; + final styPath = path.join(specDirPath, styFileName); + final tmpStyPath = path.join(tmpDirPath, styFileName); + + // file names paths for output + const hashName = "dartLangSpec-hash"; + const hashFileName = "$hashName.tex"; + final hashPath = path.join(tmpDirPath, hashFileName); + final hashDviPath = path.join(tmpDirPath, "$hashName.dvi"); + + // actions to take + runLatex(fileName,workingDirectory) => + Process.runSync("latex", [fileName], workingDirectory: workingDirectory); + + runAddHash() => + Process.runSync("dart", + [path.join(dartRootPath, "tools", "addlatexhash.dart"), + tmpSpecPath, + hashPath]); + + runDvi2tty(dviFile) => + Process.runSync("dvi2tty", [dviFile], workingDirectory: tmpDir.path); + + chkDvi2tty(file, subject) => + checkAction(runDvi2tty(file), "dvitty on $subject failed"); + + // perform test + new File(styPath).copySync(tmpStyPath); + new File(specPath).copySync(tmpSpecPath); + for (var i = 0; i < 5; i++) { + checkAction(runLatex(specName, tmpDirPath), "LaTeX on spec failed"); + } + checkAction(runAddHash(),"addlatexhash.dart failed"); + for (var i = 0; i < 5; i++) { + checkAction(runLatex(hashFileName, tmpDirPath), "LaTeX on output failed"); + } + if (chkDvi2tty(specDviPath, "spec") != chkDvi2tty(hashDviPath, "output")) { + throw "dvi2tty spec != dvitty output"; + } +} + +main([args]) { + testCutMatch(); + testSisp(); + // latex and dvi2tty are not installed in the standard test environment + if (args.length > 0 && args[0] == "local") testNoChange(); +} diff --git a/tools/addlatexhash.dart b/tools/addlatexhash.dart new file mode 100644 index 000000000000..f79a0b32296c --- /dev/null +++ b/tools/addlatexhash.dart @@ -0,0 +1,204 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +// +// ---------------------------------------------------------------------- +// This is a very specialized tool which was created in order to support +// adding hash values used as location markers in the LaTeX source of the +// language specification. It is intended to take its input file as the +// first argument and the output file name as the second argument. From +// docs/language a typical usage would be as follows: +// +// dart ../../tools/addlatexhash.dart dartLangSpec.tex tmp.tex +// +// This will yield a normalized variant tmp.tex of the language +// specification with hash values filled in. For more details, please +// check the language specification source itself. +// +// NB: This utility assumes UN*X style line endings, \n, in the LaTeX +// source file receieved as input; it will not work with other styles. +// +// TODO: The current version does not fill in hash values, it only +// standardizes the LaTeX source by removing comments and normalizing +// white space. + +import 'dart:io'; +import 'dart:convert'; +import '../pkg/crypto/lib/crypto.dart'; + +// Normalization of the text, i.e., removal or normalization +// of elements that do not affect the output from latex + +final commentRE = new RegExp(r"[^\\]%.*"); // NB: . does not match \n +final whitespaceAllRE = new RegExp(r"^\s+$"); +final whitespaceRE = new RegExp(r"[ \t]{2,}"); + +// normalization steps + +cutMatch(line, match, {startOffset: 0, endOffset: 0, glue: ""}) { + if (match == null) return line; + var start = match.start + startOffset; + var end = match.end + endOffset; + var len = line.length; + if (start < 0) start = 0; + if (end > len) end = len; + return line.substring(0, start) + glue + line.substring(end); +} + +cutRegexp(line, re, {startOffset: 0, endOffset: 0, glue: ""}) { + return cutMatch(line, re.firstMatch(line), + startOffset: startOffset, + endOffset: endOffset, + glue: glue); +} + +cutFromMatch(line, match, {offset: 0, glue: ""}) { + if (match == null) return line; + return line.substring(0, match.start + offset) + glue; +} + +cutFromRegexp(line, re, {offset: 0, glue: ""}) { + return cutFromMatch(line, re.firstMatch(line), offset: offset, glue: glue); +} + +isWsOnly(line) => whitespaceAllRE.firstMatch(line) != null; +isCommentOnly(line) => line.startsWith("%"); + +justEol(line) { + return line.endsWith("\n") ? "\n" : ""; +} + +stripComment(line) { + // NB: it is tempting to remove everything from the '%' and out, + // including the final newline, if any, but this does not work. + // The problem is that TeX will do exactly this, but then it will + // add back a character that depends on its state (S, M, or N), + // and it is tricky to maintain a similar state that matches the + // state of TeX faithfully. Hence, we remove the content of + // comments but do not remove the comments themselves, we just + // leave the '%' at the end of the line and let TeX manage its + // states in a way that does not differ from the file from before + // stripComment + if (isCommentOnly(line)) return "%\n"; + return cutRegexp(line, commentRE, startOffset: 2); +} + +// Reduce a wsOnly line to its eol, remove leading ws +// entirely, and reduce multiple ws chars to one +normalizeWhitespace(line) { + var trimLine = line.trimLeft(); + if (trimLine.isEmpty) return justEol(line); + return trimLine.replaceAll(whitespaceRE, " "); +} + +// Reduce sequences of >1 wsOnly lines to 1, and sequences of >1 +// commentOnly lines to 1; moreover, treat commentOnly lines as +// wsOnly when occurring in wsOnly line blocks +multilineNormalize(lines) { + var afterBlankLines = false; // does 'line' succeed >0 empty lines? + var afterCommentLines = false; // .. succeed >0 commentOnly lines? + var newLines = new List(); + for (var line in lines) { + if (afterBlankLines && afterCommentLines) { + // can never happen + throw "Bug, please report to eernst@"; + } else if (afterBlankLines && !afterCommentLines) { + // at least one line before 'line' is wsOnly + if (!isWsOnly(line)) { + // blank line block ended + afterCommentLines = isCommentOnly(line); + // special case: it seems to be safe to remove commentOnly lines + // after wsOnly lines, so the TeX state must be predictably right; + // next line will then be afterCommentLines and be dropped, so + // we drop the entire comment block---which is very useful; we can + // also consider this comment line to be an empty line, such that + // subsequent empty lines can be considered to be in a block of + // empty lines; note that almost all variants of this will break.. + if (afterCommentLines) { + // _current_ 'line' a commentOnly here + afterBlankLines = true; + afterCommentLines = false; + // and do not add 'line' + } else { + // after blanks, but current 'line' is neither blank nor comment + afterBlankLines = false; + newLines.add(line); + } + } else { + // blank line block continues, do not add 'line' + } + } else if (!afterBlankLines && afterCommentLines) { + // at least one line before 'line' is commentOnly + if (!isCommentOnly(line)) { + // comment line block ended + afterBlankLines = isWsOnly(line); + afterCommentLines = false; + newLines.add(line); + } else { + // comment line block continues, do not add 'line' + } + } else { + assert(!afterBlankLines && !afterCommentLines); + // no wsOnly or commentOnly lines preceed 'line' + afterBlankLines = isWsOnly(line); + afterCommentLines = isCommentOnly(line); + if (!afterCommentLines) newLines.add(line); + // else skipping commentOnly line after nonWs, nonComment text + } + } + return newLines; +} + +// Selecting the elements in the pipeline + +normalize(line) => normalizeWhitespace(stripComment(line)); +sispNormalize(line) => stripComment(line); + +// Managing fragments with significant spacing + +final dartCodeBeginRE = new RegExp(r"^\s*\\begin\{dartCode\}"); +final dartCodeEndRE = new RegExp (r"^\s*\\end\{dartCode\}"); + +sispIs(line, targetRE) { + return targetRE.firstMatch(line) != null; +} + +sispIsDartBegin(line) => sispIs(line, dartCodeBeginRE); +sispIsDartEnd(line) => sispIs(line, dartCodeEndRE); + +// Transform input file into output file + +main ([args]) { + if (args.length != 2) { + print("Usage: addlatexhash.dart "); + throw "Received ${args.length} arguments, expected two"; + } + + var inputFile = new File(args[0]); + var outputFile = new File(args[1]); + assert(inputFile.existsSync()); + + var lines = inputFile.readAsLinesSync(); + // single-line normalization + var inDartCode = false; + var newLines = new List(); + + for (var line in lines) { + if (sispIsDartBegin(line)) { + inDartCode = true; + } else if (sispIsDartEnd(line)) { + inDartCode = false; + } + if (inDartCode) { + newLines.add(sispNormalize(line + "\n")); + } else { + newLines.add(normalize(line + "\n")); + } + } + + // multi-line normalization + newLines = multilineNormalize(newLines); + + // output result + outputFile.writeAsStringSync(newLines.join()); +} From 06d5279d5275ef7bb22fb531369771aab79729c3 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 14:10:15 +0000 Subject: [PATCH 45/91] dart2js: Add makeConstantList to new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//662053002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41192 260f80e4-7a28-3924-810f-c04153c831b5 --- .../js_backend/constant_emitter.dart | 21 +++++++----- .../implementation/js_emitter/model.dart | 3 +- .../js_emitter/new_emitter/model_emitter.dart | 32 ++++++++++++++----- .../js_emitter/old_emitter/emitter.dart | 9 +++++- .../js_emitter/program_builder.dart | 3 +- 5 files changed, 49 insertions(+), 19 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart index d829a387e007..015d6dfd45dc 100644 --- a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart @@ -8,8 +8,11 @@ class ConstantEmitter { ConstantReferenceEmitter _referenceEmitter; ConstantLiteralEmitter _literalEmitter; - ConstantEmitter(Compiler compiler, Namer namer) { - _literalEmitter = new ConstantLiteralEmitter(compiler, namer, this); + ConstantEmitter(Compiler compiler, + Namer namer, + jsAst.Template makeConstantListTemplate) { + _literalEmitter = new ConstantLiteralEmitter( + compiler, namer, makeConstantListTemplate, this); _referenceEmitter = new ConstantReferenceEmitter(compiler, namer, this); } @@ -157,9 +160,13 @@ class ConstantLiteralEmitter implements ConstantValueVisitor { final Compiler compiler; final Namer namer; + final jsAst.Template makeConstantListTemplate; final ConstantEmitter constantEmitter; - ConstantLiteralEmitter(this.compiler, this.namer, this.constantEmitter); + ConstantLiteralEmitter(this.compiler, + this.namer, + this.makeConstantListTemplate, + this.constantEmitter); jsAst.Expression generate(ConstantValue constant) { return _visit(constant); @@ -226,11 +233,9 @@ class ConstantLiteralEmitter implements ConstantValueVisitor { } jsAst.Expression visitList(ListConstantValue constant) { - jsAst.Expression value = new jsAst.Call( - new jsAst.PropertyAccess.field( - new jsAst.VariableUse(namer.isolateName), - namer.getMappedInstanceName('makeConstantList')), - [new jsAst.ArrayInitializer.from(_array(constant.entries))]); + List elements = _array(constant.entries); + jsAst.ArrayInitializer array = new jsAst.ArrayInitializer.from(elements); + jsAst.Expression value = makeConstantListTemplate.instantiate([array]); return maybeAddTypeArguments(constant.type, value); } diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 31af9406baa9..7bdf457242ce 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -9,10 +9,11 @@ import '../constants/values.dart' show ConstantValue; class Program { final List outputs; + final bool outputContainsConstantList; /// A map from load id to the list of outputs that need to be loaded. final Map> loadMap; - Program(this.outputs, this.loadMap); + Program(this.outputs, this.outputContainsConstantList, this.loadMap); } /** diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index 870d9d293ddc..a22a6570ecef 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -29,12 +29,13 @@ class ModelEmitter { ModelEmitter(Compiler compiler, Namer namer) : this.compiler = compiler, this.namer = namer, - constantEmitter = new ConstantEmitter(compiler, namer); + constantEmitter = + new ConstantEmitter(compiler, namer, makeConstantListTemplate); void emitProgram(Program program) { List outputs = program.outputs; MainOutput mainUnit = outputs.first; - js.Statement mainAst = emitMainUnit(mainUnit, program.loadMap); + js.Statement mainAst = emitMainUnit(program); String mainCode = js.prettyPrint(mainAst, compiler).getText(); compiler.outputProvider(mainUnit.outputFileName, 'js') ..add(buildGeneratedBy(compiler)) @@ -63,19 +64,20 @@ class ModelEmitter { return '// Generated by dart2js, the Dart to JavaScript compiler$suffix.\n'; } - js.Statement emitMainUnit(MainOutput unit, - Map> loadMap) { - js.Expression program = + js.Statement emitMainUnit(Program program) { + MainOutput unit = program.outputs.first; + js.Expression code = new js.ArrayInitializer.from(unit.libraries.map(emitLibrary)); return js.js.statement( boilerplate, - [emitDeferredInitializerGlobal(loadMap), + [emitDeferredInitializerGlobal(program.loadMap), emitHolders(unit.holders), - emitEmbeddedGlobals(loadMap), + program.outputContainsConstantList, + emitEmbeddedGlobals(program.loadMap), emitConstants(unit.constants), emitStaticNonFinalFields(unit.staticNonFinalFields), unit.main, - program]); + code]); } js.Block emitHolders(List holders) { @@ -101,6 +103,12 @@ class ModelEmitter { return new js.Block(statements); } + static js.Template get makeConstantListTemplate { + // TODO(floitsch): remove hard-coded name. + // TODO(floitsch): there is no harm in caching the template. + return js.js.uncachedExpressionTemplate('makeConstList(#)'); + } + js.Block emitEmbeddedGlobals(Map> loadMap) { List globals = []; @@ -318,6 +326,14 @@ final String boilerplate = r""" return eval(__s__ + "\n//# sourceURL=" + __name__ + ".js"); } + if (#) { // outputContainsConstantList + function makeConstList(list) { + list.immutable$list = 1; + list.fixed$length = 1; + return list; + } + } + setupProgram(); // Initialize globals. diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index cd7f93293aa4..17f3fb57c588 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -100,10 +100,11 @@ class OldEmitter implements Emitter { OldEmitter(Compiler compiler, Namer namer, this.generateSourceMap, this.task) : this.compiler = compiler, this.namer = namer, - constantEmitter = new ConstantEmitter(compiler, namer), cachedEmittedConstants = compiler.cacheStrategy.newSet(), cachedClassBuilders = compiler.cacheStrategy.newMap(), cachedElements = compiler.cacheStrategy.newSet() { + constantEmitter = + new ConstantEmitter(compiler, namer, makeConstantListTemplate); containerBuilder.emitter = this; classEmitter.emitter = this; nsmEmitter.emitter = this; @@ -992,6 +993,12 @@ class OldEmitter implements Emitter { } } + jsAst.Template get makeConstantListTemplate { + // TODO(floitsch): there is no harm in caching the template. + return jsAst.js.uncachedExpressionTemplate( + '${namer.isolateName}.$makeConstListProperty(#)'); + } + void emitMakeConstantList(CodeBuffer buffer) { buffer.write( jsAst.prettyPrint( diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index 1702ad6c2900..eb71c4fc4ddd 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -68,7 +68,8 @@ class ProgramBuilder { outputs[0] = mainOutput; outputs.setAll(1, deferredOutputs); - Program result = new Program(outputs, _buildLoadMap()); + Program result = + new Program(outputs, _task.outputContainsConstantList, _buildLoadMap()); // Resolve the superclass references after we've processed all the classes. _classes.forEach((ClassElement element, Class c) { From abbc33c9d514f407ffd21ecef43c503f7b0964c4 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 14:22:34 +0000 Subject: [PATCH 46/91] Add support for constructors and fields. R=kasperl@google.com Review URL: https://codereview.chromium.org//665473002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41193 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/model.dart | 11 +++- .../js_emitter/new_emitter/model_emitter.dart | 34 +++++++++++-- .../js_emitter/program_builder.dart | 50 +++++++++++++++++-- 3 files changed, 86 insertions(+), 9 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 7bdf457242ce..9d2e114258a5 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -120,7 +120,9 @@ class Class { final Holder holder; Class superclass; final List methods; - Class(this.name, this.holder, this.methods); + final List fields; + + Class(this.name, this.holder, this.methods, this.fields); void setSuperclass(Class superclass) { this.superclass = superclass; @@ -132,6 +134,13 @@ class Class { => (superclass == null) ? 0 : superclass.holder.index; } +class InstanceField { + final String name; + + // TODO(floitsch): support renamed fields. + InstanceField(this.name); +} + class Method { final String name; final js.Expression code; diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index a22a6570ecef..abdff13a03d9 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -221,9 +221,33 @@ class ModelEmitter { return new js.ArrayInitializer.from([staticArray, classArray]); } + js.Expression _generateConstructor(Class cls) { + List allFieldNames = []; + Class currentClass = cls; + while (currentClass != null) { + allFieldNames.addAll( + currentClass.fields.map((InstanceField field) => field.name)); + currentClass = currentClass.superclass; + } + String name = cls.name; + String parameters = allFieldNames.join(', '); + String assignments = allFieldNames + .map((String field) => "this.$field = $field;\n") + .join(); + String code = 'function $name($parameters) { $assignments }'; + js.Template template = js.js.uncachedExpressionTemplate(code); + return template.instantiate(const []); + } + + Iterable _generateGettersSetters(Class cls) { + return []; + } + js.Expression emitClass(Class cls) { List elements = [ js.string(cls.superclassName), - js.number(cls.superclassHolderIndex) ]; + js.number(cls.superclassHolderIndex), + _generateConstructor(cls) ]; + elements.addAll(_generateGettersSetters(cls)); elements.addAll(cls.methods.expand((e) => [ js.string(e.name), e.code ])); return unparse(compiler, new js.ArrayInitializer.from(elements)); } @@ -296,12 +320,12 @@ final String boilerplate = r""" function compileConstructor(name, descriptor) { descriptor = compile(name, descriptor); var prototype = determinePrototype(descriptor); - for (var i = 2; i < descriptor.length; i += 2) { + var constructor = descriptor[2]; + for (var i = 3; i < descriptor.length; i += 2) { prototype[descriptor[i]] = descriptor[i + 1]; } - var result = function() { }; // TODO(kasperl): Compile. - result.prototype = prototype; - return result; + constructor.prototype = prototype; + return constructor; } function determinePrototype(descriptor) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index eb71c4fc4ddd..51b9e31bab2c 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -13,6 +13,8 @@ import '../js_backend/js_backend.dart' show JavaScriptBackend, JavaScriptConstantCompiler; +import '../closure.dart' show ClosureFieldElement; + import 'js_emitter.dart' as emitterTask show CodeEmitterTask, Emitter, @@ -198,20 +200,33 @@ class ProgramBuilder { } Class _buildClass(ClassElement element) { + bool isInstantiated = + _compiler.codegenWorld.directlyInstantiatedClasses.contains(element); + List methods = []; + List fields = []; + void visitMember(ClassElement enclosing, Element member) { assert(invariant(element, member.isDeclaration)); + assert(invariant(element, element == enclosing)); + if (Elements.isNonAbstractInstanceMethod(member)) { js.Expression code = backend.generatedCode[member]; // TODO(kasperl): Figure out under which conditions code is null. if (code != null) methods.add(_buildMethod(member, code)); + } else if (member.isField && !member.isStatic) { + fields.add(_buildInstanceField(member, enclosing)); } } + ClassElement implementation = element.implementation; - implementation.forEachMember(visitMember, includeBackendMembers: true); + if (isInstantiated) { + implementation.forEachMember(visitMember, includeBackendMembers: true); + } String name = namer.getNameOfClass(element); - String holder = namer.globalObjectFor(element); - Class result = new Class(name, _registry.registerHolder(holder), methods); + String holderName = namer.globalObjectFor(element); + Holder holder = _registry.registerHolder(holderName); + Class result = new Class(name, holder, methods, fields); _classes[element] = result; return result; } @@ -238,6 +253,35 @@ class ProgramBuilder { }); } + bool _fieldNeedsGetter(VariableElement field) { + assert(field.isField); + if (_fieldAccessNeverThrows(field)) return false; + return backend.shouldRetainGetter(field) + || _compiler.codegenWorld.hasInvokedGetter(field, _compiler.world); + } + + bool _fieldNeedsSetter(VariableElement field) { + assert(field.isField); + if (_fieldAccessNeverThrows(field)) return false; + return (!field.isFinal && !field.isConst) + && (backend.shouldRetainSetter(field) + || _compiler.codegenWorld.hasInvokedSetter(field, _compiler.world)); + } + + // We never access a field in a closure (a captured variable) without knowing + // that it is there. Therefore we don't need to use a getter (that will throw + // if the getter method is missing), but can always access the field directly. + bool _fieldAccessNeverThrows(VariableElement field) { + return field is ClosureFieldElement; + } + + InstanceField _buildInstanceField(VariableElement field, + ClassElement holder) { + assert(invariant(field, field.isDeclaration)); + String name = namer.fieldPropertyName(field); + return new InstanceField(name); + } + Iterable _generateOneShotInterceptors() { emitterTask.InterceptorStubGenerator stubGenerator = new emitterTask.InterceptorStubGenerator(_compiler, namer, backend); From b596274177b40f26bbecbe8c87e8267e92839759 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 14:27:58 +0000 Subject: [PATCH 47/91] dart2js: Add support for getters and setters to the new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//658373003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41194 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/model.dart | 17 ++++++- .../js_emitter/new_emitter/model_emitter.dart | 49 +++++++++++++++++-- .../js_emitter/program_builder.dart | 29 ++++++++++- 3 files changed, 89 insertions(+), 6 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 9d2e114258a5..1bdd2c240845 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -137,8 +137,23 @@ class Class { class InstanceField { final String name; + /// 00: Does not need any getter. + /// 01: function() { return this.field; } + /// 10: function(receiver) { return receiver.field; } + /// 11: function(receiver) { return this.field; } + final int getterFlags; + + /// 00: Does not need any setter. + /// 01: function(value) { this.field = value; } + /// 10: function(receiver, value) { receiver.field = value; } + /// 11: function(receiver, value) { this.field = value; } + final int setterFlags; + // TODO(floitsch): support renamed fields. - InstanceField(this.name); + InstanceField(this.name, this.getterFlags, this.setterFlags); + + bool get needsGetter => getterFlags != 0; + bool get needsSetter => setterFlags != 0; } class Method { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index abdff13a03d9..64c07b2e8c32 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -239,16 +239,57 @@ class ModelEmitter { return template.instantiate(const []); } - Iterable _generateGettersSetters(Class cls) { - return []; + Method _generateGetter(InstanceField field) { + String getterTemplateFor(int flags) { + switch (flags) { + case 1: return "function() { return this[#]; }"; + case 2: return "function(receiver) { return receiver[#]; }"; + case 3: return "function(receiver) { return this[#]; }"; + } + return null; + } + + js.Expression fieldName = js.string(field.name); + js.Expression code = js.js(getterTemplateFor(field.getterFlags), fieldName); + String getterName = "${namer.getterPrefix}${field.name}"; + return new Method(getterName, code); + } + + Method _generateSetter(InstanceField field) { + String setterTemplateFor(int flags) { + switch (flags) { + case 1: return "function(val) { return this[#] = val; }"; + case 2: return "function(receiver, val) { return receiver[#] = val; }"; + case 3: return "function(receiver, val) { return this[#] = val; }"; + } + return null; + } + js.Expression fieldName = js.string(field.name); + js.Expression code = js.js(setterTemplateFor(field.setterFlags), fieldName); + String setterName = "${namer.setterPrefix}${field.name}"; + return new Method(setterName, code); + } + + Iterable _generateGettersSetters(Class cls) { + Iterable getters = cls.fields + .where((InstanceField field) => field.needsGetter) + .map(_generateGetter); + + Iterable setters = cls.fields + .where((InstanceField field) => field.needsSetter) + .map(_generateSetter); + + return [getters, setters].expand((x) => x); } js.Expression emitClass(Class cls) { List elements = [ js.string(cls.superclassName), js.number(cls.superclassHolderIndex), _generateConstructor(cls) ]; - elements.addAll(_generateGettersSetters(cls)); - elements.addAll(cls.methods.expand((e) => [ js.string(e.name), e.code ])); + Iterable methods = cls.methods; + Iterable gettersSetters = _generateGettersSetters(cls); + Iterable allMethods = [methods, gettersSetters].expand((x) => x); + elements.addAll(allMethods.expand((e) => [ js.string(e.name), e.code ])); return unparse(compiler, new js.ArrayInitializer.from(elements)); } diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index 51b9e31bab2c..b7199667d04d 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -279,7 +279,34 @@ class ProgramBuilder { ClassElement holder) { assert(invariant(field, field.isDeclaration)); String name = namer.fieldPropertyName(field); - return new InstanceField(name); + + int getterFlags = 0; + if (_fieldNeedsGetter(field)) { + bool isIntercepted = backend.fieldHasInterceptedGetter(field); + if (isIntercepted) { + getterFlags += 2; + if (backend.isInterceptorClass(holder)) { + getterFlags += 1; + } + } else { + getterFlags = 1; + } + } + + int setterFlags = 0; + if (_fieldNeedsSetter(field)) { + bool isIntercepted = backend.fieldHasInterceptedSetter(field); + if (isIntercepted) { + setterFlags += 2; + if (backend.isInterceptorClass(holder)) { + setterFlags += 1; + } + } else { + setterFlags = 1; + } + } + + return new InstanceField(name, getterFlags, setterFlags); } Iterable _generateOneShotInterceptors() { From d96099ad296223808acc076044befd58894ceac2 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 14:29:02 +0000 Subject: [PATCH 48/91] dart2js: Enable explicit getters and setters in new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//644433004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41195 260f80e4-7a28-3924-810f-c04153c831b5 --- .../compiler/implementation/elements/elements.dart | 6 +++--- .../compiler/implementation/js_emitter/program_builder.dart | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/elements/elements.dart b/sdk/lib/_internal/compiler/implementation/elements/elements.dart index bbab77bc2c34..9f6dcfc59295 100644 --- a/sdk/lib/_internal/compiler/implementation/elements/elements.dart +++ b/sdk/lib/_internal/compiler/implementation/elements/elements.dart @@ -508,15 +508,15 @@ class Elements { && (identical(element.kind, ElementKind.FUNCTION)); } - /// Also returns true for [ConstructorBodyElement]s. - static bool isNonAbstractInstanceMethod(Element element) { + /// Also returns true for [ConstructorBodyElement]s and getters/setters. + static bool isNonAbstractInstanceMember(Element element) { // The generative constructor body is not a function. We therefore treat // it specially. if (element.isGenerativeConstructorBody) return true; return !Elements.isUnresolved(element) && !element.isAbstract && element.isInstanceMember && - element.isFunction; + (element.isFunction || element.isAccessor); } static bool isNativeOrExtendsNative(ClassElement element) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index b7199667d04d..7332ce6e918d 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -210,7 +210,7 @@ class ProgramBuilder { assert(invariant(element, member.isDeclaration)); assert(invariant(element, element == enclosing)); - if (Elements.isNonAbstractInstanceMethod(member)) { + if (Elements.isNonAbstractInstanceMember(member)) { js.Expression code = backend.generatedCode[member]; // TODO(kasperl): Figure out under which conditions code is null. if (code != null) methods.add(_buildMethod(member, code)); From bf148e6e13d514ded5485b3b739715c6e2fb127b Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 14:39:57 +0000 Subject: [PATCH 49/91] dart2js: Support lazily initialized variables in the new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//667493004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41196 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/model.dart | 17 ++++- .../js_emitter/new_emitter/model_emitter.dart | 66 +++++++++++++++++-- .../js_emitter/program_builder.dart | 31 +++++++++ 3 files changed, 108 insertions(+), 6 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 1bdd2c240845..1c5cc414e5f7 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -38,6 +38,8 @@ abstract class Output { final List constants; // TODO(floitsch): should we move static fields into libraries or classes? final List staticNonFinalFields; + // TODO(floitsch): lazy fields should be in their library or even class. + final List staticLazilyInitializedFields; /// Output file name without extension. final String outputFileName; @@ -45,6 +47,7 @@ abstract class Output { Output(this.outputFileName, this.libraries, this.staticNonFinalFields, + this.staticLazilyInitializedFields, this.constants); } @@ -62,9 +65,14 @@ class MainOutput extends Output { this.main, List libraries, List staticNonFinalFields, + List staticLazilyInitializedFields, List constants, this.holders) - : super(outputFileName, libraries, staticNonFinalFields, constants); + : super(outputFileName, + libraries, + staticNonFinalFields, + staticLazilyInitializedFields, + constants); MainOutput get mainOutput => this; } @@ -83,8 +91,13 @@ class DeferredOutput extends Output { this.mainOutput, List libraries, List staticNonFinalFields, + List staticLazilyInitializedFields, List constants) - : super(outputFileName, libraries, staticNonFinalFields, constants); + : super(outputFileName, + libraries, + staticNonFinalFields, + staticLazilyInitializedFields, + constants); } class Constant { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index 64c07b2e8c32..55bc05a0ca4d 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -6,7 +6,11 @@ library dart2js.new_js_emitter.model_emitter; import '../../dart2jslib.dart' show Compiler; import '../../js/js.dart' as js; -import '../../js_backend/js_backend.dart' show Namer, ConstantEmitter; +import '../../js_backend/js_backend.dart' show + JavaScriptBackend, + Namer, + ConstantEmitter; + import '../../../js_lib/shared/embedded_names.dart' show DEFERRED_LIBRARY_URIS, DEFERRED_LIBRARY_HASHES, @@ -20,6 +24,8 @@ class ModelEmitter { final Namer namer; final ConstantEmitter constantEmitter; + JavaScriptBackend get backend => compiler.backend; + /// For deferred loading we communicate the initializers via this global var. static const String deferredInitializersGlobal = r"$__dart_deferred_initializers__"; @@ -66,12 +72,15 @@ class ModelEmitter { js.Statement emitMainUnit(Program program) { MainOutput unit = program.outputs.first; - js.Expression code = - new js.ArrayInitializer.from(unit.libraries.map(emitLibrary)); + List elements = unit.libraries.map(emitLibrary).toList(); + elements.add( + emitLazilyInitializedStatics(unit.staticLazilyInitializedFields)); + js.Expression code = new js.ArrayInitializer.from(elements); return js.js.statement( boilerplate, [emitDeferredInitializerGlobal(program.loadMap), emitHolders(unit.holders), + namer.elementAccess(backend.getCyclicThrowHelper()), program.outputContainsConstantList, emitEmbeddedGlobals(program.loadMap), emitConstants(unit.constants), @@ -209,6 +218,15 @@ class ModelEmitter { return new js.Block(statements.toList()); } + js.Expression emitLazilyInitializedStatics(List fields) { + Iterable fieldDescriptors = fields.expand((field) => + [ js.string(field.name), + js.string("${namer.getterPrefix}${field.name}"), + js.number(field.holder.index), + emitLazyInitializer(field) ]); + return new js.ArrayInitializer.from(fieldDescriptors); + } + js.Expression emitLibrary(Library library) { Iterable staticDescriptors = library.statics.expand((e) => [ js.string(e.name), js.number(e.holder.index), emitStaticMethod(e) ]); @@ -293,6 +311,11 @@ class ModelEmitter { return unparse(compiler, new js.ArrayInitializer.from(elements)); } + js.Expression emitLazyInitializer(StaticField field) { + assert(field.isLazy); + return unparse(compiler, field.code); + } + js.Expression emitStaticMethod(StaticMethod method) { return unparse(compiler, method.code); } @@ -309,9 +332,10 @@ final String boilerplate = r""" #; function setupProgram() { - for (var i = 0; i < program.length; i++) { + for (var i = 0; i < program.length - 1; i++) { setupLibrary(program[i]); } + setupLazyStatics(program[i]); } function setupLibrary(library) { @@ -328,6 +352,16 @@ final String boilerplate = r""" } } + function setupLazyStatics(statics) { + for (var i = 0; i < statics.length; i += 4) { + var name = statics[i]; + var getterName = statics[i + 1]; + var holderIndex = statics[i + 2]; + var initializer = statics[i + 3]; + setupLazyStatic(name, getterName, holders[holderIndex], initializer); + } + } + function setupStatic(name, holder, descriptor) { holder[name] = function() { var method = compile(name, descriptor); @@ -336,6 +370,30 @@ final String boilerplate = r""" }; } + function setupLazyStatic(name, getterName, holder, descriptor) { + holder[name] = null; + holder[getterName] = function() { + var initializer = compile(name, descriptor); + holder[getterName] = function() { #(name) }; // cyclicThrowHelper + var result; + var sentinelInProgress = descriptor; + try { + result = holder[name] = sentinelInProgress; + result = holder[name] = initializer(); + } finally { + // Use try-finally, not try-catch/throw as it destroys the stack trace. + if (result === sentinelInProgress) { + // The lazy static (holder[name]) might have been set to a different + // value. According to spec we still have to reset it to null, if the + // initialization failed. + holder[name] = null; + } + holder[getterName] = function() { return this[name]; }; + } + return result; + }; + } + function setupClass(name, holder, descriptor) { var resolve = function() { var constructor = compileConstructor(name, descriptor); diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index 7332ce6e918d..88f16026545b 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -106,6 +106,7 @@ class ProgramBuilder { namer.elementAccess(_compiler.mainFunction), _buildLibraries(fragment), _buildStaticNonFinalFields(fragment), + _buildStaticLazilyInitializedFields(fragment), _buildConstants(fragment), _registry.holders.toList(growable: false)); _outputs[fragment.outputUnit] = result; @@ -129,6 +130,7 @@ class ProgramBuilder { mainOutput, _buildLibraries(fragment), _buildStaticNonFinalFields(fragment), + _buildStaticLazilyInitializedFields(fragment), _buildConstants(fragment)); _outputs[fragment.outputUnit] = result; return result; @@ -164,6 +166,35 @@ class ProgramBuilder { isFinal, isLazy); } + List _buildStaticLazilyInitializedFields(Fragment fragment) { + // TODO(floitsch): lazy fields should just be in their respective + // libraries. + if (fragment != _registry.mainFragment) return const []; + + JavaScriptConstantCompiler handler = backend.constants; + List lazyFields = + handler.getLazilyInitializedFieldsForEmission(); + return Elements.sortedByPosition(lazyFields) + .map(_buildLazyField) + .where((field) => field != null) // Happens when the field was unused. + .toList(growable: false); + } + + StaticField _buildLazyField(Element element) { + JavaScriptConstantCompiler handler = backend.constants; + js.Expression code = backend.generatedCode[element]; + // The code is null if we ended up not needing the lazily + // initialized field after all because of constant folding + // before code generation. + if (code == null) return null; + + String name = namer.getNameOfGlobalField(element); + bool isFinal = element.isFinal; + bool isLazy = true; + return new StaticField(name, _registry.registerHolder(r'$'), code, + isFinal, isLazy); + } + List _buildLibraries(Fragment fragment) { List libraries = new List(fragment.length); int count = 0; From 1635b56077eee85d73b9de3f2c288a38c8d51e86 Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Mon, 20 Oct 2014 15:03:50 +0000 Subject: [PATCH 50/91] Fix for getAnalysisContext() There was a bug when there are two contexts in folders prefix/test and prefix/test2. R=brianwilkerson@google.com BUG= Review URL: https://codereview.chromium.org//668513002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41198 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analysis_server/lib/src/analysis_server.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart index f2e2da695d22..f622ebadc3f2 100644 --- a/pkg/analysis_server/lib/src/analysis_server.dart +++ b/pkg/analysis_server/lib/src/analysis_server.dart @@ -684,7 +684,7 @@ class AnalysisServer { AnalysisContext getAnalysisContext(String path) { // try to find a containing context for (Folder folder in folderMap.keys) { - if (path.startsWith(folder.path)) { + if (folder.contains(path)) { return folderMap[folder]; } } From 0a063b2fa16bec91e63fbee4808ca354bf5e50ca Mon Sep 17 00:00:00 2001 From: "ahe@google.com" Date: Mon, 20 Oct 2014 15:20:45 +0000 Subject: [PATCH 51/91] Apply updates to static methods. R=johnniwinther@google.com Review URL: https://codereview.chromium.org//659813002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41201 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/dart2js_incremental/lib/diff.dart | 15 ++- .../lib/library_updater.dart | 100 +++++++++++++++--- .../incremental_compilation_update_test.dart | 69 +++++++++++- 3 files changed, 163 insertions(+), 21 deletions(-) diff --git a/pkg/dart2js_incremental/lib/diff.dart b/pkg/dart2js_incremental/lib/diff.dart index e3fad3afd209..0cb659bf15ac 100644 --- a/pkg/dart2js_incremental/lib/diff.dart +++ b/pkg/dart2js_incremental/lib/diff.dart @@ -31,9 +31,16 @@ import 'package:compiler/implementation/scanner/scannerlib.dart' show class Difference { final DeclarationSite before; final DeclarationSite after; + + /// Records the position of first difference between [before] and [after]. If + /// either [before] or [after] are null, [token] is null. Token token; - Difference(this.before, this.after); + Difference(this.before, this.after) { + if (before == after) { + throw '[before] and [after] are the same.'; + } + } String toString() { if (before == null) return 'Added($after)'; @@ -48,8 +55,10 @@ List computeDifference( Map beforeMap = {}; before.forEachLocalMember((modelx.ElementX element) { DeclarationSite site = element.declarationSite; - assert(site != null); - beforeMap[element.name] = site; + assert(site != null || element.isSynthesized); + if (!element.isSynthesized) { + beforeMap[element.name] = site; + } }); List modifications = []; List potentiallyChanged = []; diff --git a/pkg/dart2js_incremental/lib/library_updater.dart b/pkg/dart2js_incremental/lib/library_updater.dart index d3eb2e87c984..04d1ba3a580b 100644 --- a/pkg/dart2js_incremental/lib/library_updater.dart +++ b/pkg/dart2js_incremental/lib/library_updater.dart @@ -19,10 +19,12 @@ import 'package:compiler/implementation/dart2jslib.dart' show import 'package:compiler/implementation/elements/elements.dart' show Element, FunctionElement, - LibraryElement; + LibraryElement, + ScopeContainerElement; import 'package:compiler/implementation/scanner/scannerlib.dart' show EOF_TOKEN, + PartialClassElement, PartialElement, PartialFunctionElement, Token; @@ -31,7 +33,9 @@ import 'package:compiler/implementation/source_file.dart' show StringSourceFile; import 'package:compiler/implementation/tree/tree.dart' show - FunctionExpression; + ClassNode, + FunctionExpression, + NodeList; import 'package:compiler/implementation/js/js.dart' show js; @@ -54,6 +58,11 @@ import 'diff.dart' show typedef void Logger(message); +typedef bool Reuser( + Token diffToken, + PartialElement before, + PartialElement after); + // TODO(ahe): Generalize this class. For now only works for Compiler.mainApp, // and only if that library has exactly one compilation unit. class LibraryUpdater { @@ -73,6 +82,8 @@ class LibraryUpdater { // [compiler]'s state correctly reflects the updated program. bool hasPendingUpdates = false; + bool onlySimpleUpdates = true; + final List updates = []; LibraryUpdater( @@ -126,35 +137,50 @@ class LibraryUpdater { LibraryElement newLibrary = dartPrivacyIsBroken.createLibrarySync( null, sourceScript, uri); logTime('New library synthesized.'); - List differences = computeDifference(library, newLibrary); + return canReuseScopeContainerElement(library, newLibrary); + } + + bool canReuseScopeContainerElement( + ScopeContainerElement element, + ScopeContainerElement newElement) { + List differences = computeDifference(element, newElement); logTime('Differences computed.'); for (Difference difference in differences) { logTime('Looking at difference: $difference'); if (difference.before == null || difference.after == null) { logVerbose('Scope changed in $difference'); // Scope changed, don't reuse library. + onlySimpleUpdates = false; return false; } Token diffToken = difference.token; if (diffToken == null) { logVerbose('No token stored in difference.'); + onlySimpleUpdates = false; return false; } if (difference.after is! PartialElement && difference.before is! PartialElement) { logVerbose('Not a PartialElement: $difference'); // Don't know how to recompile element. + onlySimpleUpdates = false; return false; } PartialElement before = difference.before; PartialElement after = difference.after; + Reuser reuser; + if (before is PartialFunctionElement && after is PartialFunctionElement) { - if (!canReuseFunction(diffToken, before, after)) { - return false; - } + reuser = canReuseFunction; + } else if (before is PartialClassElement && + after is PartialClassElement) { + reuser = canReuseClass; } else { - // Unhandled kind of element. + reuser = cannotReuse; + } + if (!reuser(diffToken, before, after)) { + onlySimpleUpdates = false; return false; } } @@ -174,27 +200,69 @@ class LibraryUpdater { FunctionExpression node = after.parseNode(compiler).asFunctionExpression(); if (node == null) { - print('Not a function expression.'); + logVerbose('Not a function expression.'); return false; } Token last = after.endToken; if (node.body != null) { last = node.body.getBeginToken(); } - Token token = after.beginToken; - while (token != last && token.kind != EOF_TOKEN) { - if (token == diffToken) { - logVerbose('Signature changed'); - return false; - } - token = token.next; + if (isTokenBetween(diffToken, after.beginToken, last)) { + logVerbose('Signature changed.'); + return false; } - print('Simple modification of ${after} detected'); + logVerbose('Simple modification of ${after} detected'); updates.add(new FunctionUpdate(compiler, before, after)); return true; } + bool canReuseClass( + Token diffToken, + PartialClassElement before, + PartialClassElement after) { + ClassNode node = after.parseNode(compiler).asClassNode(); + if (node == null) { + logVerbose('Not a ClassNode.'); + return false; + } + NodeList body = node.body; + if (body == null) { + logVerbose('Class has no body.'); + return false; + } + if (isTokenBetween(diffToken, node.beginToken, body.beginToken)) { + logVerbose('Class header changed.'); + return false; + } + logVerbose('Simple modification of ${after} detected'); + return canReuseScopeContainerElement(before, after); + } + + bool isTokenBetween(Token token, Token first, Token last) { + Token current = first; + while (current != last && current.kind != EOF_TOKEN) { + if (current == token) { + return true; + } + current = current.next; + } + return false; + } + + bool cannotReuse( + Token diffToken, + PartialElement before, + PartialElement after) { + logVerbose( + 'Unhandled change:' + ' ${before} (${before.runtimeType} -> ${after.runtimeType}).'); + return false; + } + List applyUpdates() { + if (!onlySimpleUpdates) { + throw new StateError("Can't compute update."); + } return updates.map((Update update) => update.apply()).toList(); } diff --git a/tests/try/web/incremental_compilation_update_test.dart b/tests/try/web/incremental_compilation_update_test.dart index 991fbbe8bcce..db2e40adbb87 100644 --- a/tests/try/web/incremental_compilation_update_test.dart +++ b/tests/try/web/incremental_compilation_update_test.dart @@ -95,8 +95,72 @@ main() { """, const ['b a', 'c a']), ], -]; + // Test modifying a static method works. + const [ + const ProgramResult( + """ +class C { + static m() { + print('v1'); + } +} +main() { + C.m(); +} +""", + const ['v1']), + const ProgramResult( + """ +class C { + static m() { + print('v2'); + } +} +main() { + C.m(); +} +""", + const ['v2']), + ], + + // Test modifying an instance method works. + const [ + const ProgramResult( + """ +class C { + m() { + print('v1'); + } +} +var instance; +main() { + if (instance == null) { + instance = new C(); + } + instance.m(); +} +""", + const ['v1']), + const ProgramResult( + """ +class C { + m() { + print('v2'); + } +} +var instance; +main() { + if (instance == null) { + instance = new C(); + } + instance.m(); +} +""", + // TODO(ahe): This test is failing, should print "v2". + const ['v1']), + ], +]; void main() { listener.start(); @@ -139,8 +203,9 @@ Future compileAndRun(List programs) { Uri uri = test.scriptUri.resolve('?v${version++}'); inputProvider.cachedSources[uri] = new Future.value(program.code); Future future = test.incrementalCompiler.compileUpdates( - {test.scriptUri: uri}); + {test.scriptUri: uri}, logVerbose: print, logTime: print); return future.then((String update) { + print({'update': update}); iframe.contentWindow.postMessage(['apply-update', update], '*'); return listener.expect( From 3feded1f474daca2d31ecf69e13c7e00db15c389 Mon Sep 17 00:00:00 2001 From: "iposva@google.com" Date: Mon, 20 Oct 2014 15:26:04 +0000 Subject: [PATCH 52/91] - Rename flags to reflect the generation impacted. R=koda@google.com Review URL: https://codereview.chromium.org//668473002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41202 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/benchmark_test.h | 4 ++-- runtime/vm/pages.cc | 18 ++++++++++-------- tests/standalone/io/code_collection_test.dart | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/runtime/vm/benchmark_test.h b/runtime/vm/benchmark_test.h index a74f09273934..18ea0a5bc925 100644 --- a/runtime/vm/benchmark_test.h +++ b/runtime/vm/benchmark_test.h @@ -17,7 +17,7 @@ namespace dart { DECLARE_FLAG(int, code_heap_size); -DECLARE_FLAG(int, heap_growth_space_ratio); +DECLARE_FLAG(int, old_gen_growth_space_ratio); // snapshot_buffer points to a snapshot if we link in a snapshot otherwise // it is initialized to NULL. @@ -32,7 +32,7 @@ extern const uint8_t* snapshot_buffer; static Benchmark kRegister##name(Dart_Benchmark##name, #name, kind); \ static void Dart_BenchmarkHelper##name(Benchmark* benchmark); \ void Dart_Benchmark##name(Benchmark* benchmark) { \ - FLAG_heap_growth_space_ratio = 100; \ + FLAG_old_gen_growth_space_ratio = 100; \ BenchmarkIsolateScope __isolate__(benchmark); \ StackZone __zone__(benchmark->isolate()); \ HandleScope __hs__(benchmark->isolate()); \ diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc index 2419c2806dc7..4954f8de3f83 100644 --- a/runtime/vm/pages.cc +++ b/runtime/vm/pages.cc @@ -15,12 +15,14 @@ namespace dart { -DEFINE_FLAG(int, heap_growth_space_ratio, 20, - "The desired maximum percentage of free space after GC"); -DEFINE_FLAG(int, heap_growth_time_ratio, 3, - "The desired maximum percentage of time spent in GC"); -DEFINE_FLAG(int, heap_growth_rate, 280, +DEFINE_FLAG(int, heap_growth_rate, 0, "The max number of pages the heap can grow at a time"); +DEFINE_FLAG(int, old_gen_growth_space_ratio, 20, + "The desired maximum percentage of free space after old gen GC"); +DEFINE_FLAG(int, old_gen_growth_time_ratio, 3, + "The desired maximum percentage of time spent in old gen GC"); +DEFINE_FLAG(int, old_gen_growth_rate, 280, + "The max number of pages the old generation can grow at a time"); DEFINE_FLAG(bool, print_free_list_before_gc, false, "Print free list statistics before a GC"); DEFINE_FLAG(bool, print_free_list_after_gc, false, @@ -141,9 +143,9 @@ PageSpace::PageSpace(Heap* heap, intptr_t max_capacity_in_words) tasks_lock_(new Monitor()), tasks_(0), page_space_controller_(heap, - FLAG_heap_growth_space_ratio, - FLAG_heap_growth_rate, - FLAG_heap_growth_time_ratio), + FLAG_old_gen_growth_space_ratio, + FLAG_old_gen_growth_rate, + FLAG_old_gen_growth_time_ratio), gc_time_micros_(0), collections_(0) { } diff --git a/tests/standalone/io/code_collection_test.dart b/tests/standalone/io/code_collection_test.dart index 0cf5bc0065df..6ab720b10915 100644 --- a/tests/standalone/io/code_collection_test.dart +++ b/tests/standalone/io/code_collection_test.dart @@ -48,7 +48,7 @@ main(List arguments) { var pr = Process.runSync(Platform.executable, ["--collect-code", "--code-collection-interval-in-us=100000", - "--heap_growth_rate=10", + "--old_gen_growth_rate=10", "--log-code-drop", "--optimization-counter-threshold=-1", "--package-root=${Platform.packageRoot}", From 4fb38d54a8c3100148b3d9add47d1f02676a771a Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 16:32:57 +0000 Subject: [PATCH 53/91] dart2js: add --preserve-uris flag. R=blois@google.com, johnniwinther@google.com, nweiz@google.com Review URL: https://codereview.chromium.org//582753002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41205 260f80e4-7a28-3924-810f-c04153c831b5 --- .../compiler/implementation/apiimpl.dart | 1 + .../compiler/implementation/compiler.dart | 5 ++ .../compiler/implementation/dart2js.dart | 5 ++ .../implementation/js_backend/backend.dart | 7 ++- .../js_emitter/old_emitter/emitter.dart | 2 +- .../_internal/compiler/js_lib/js_mirrors.dart | 12 +++- .../lib/src/barback/dart2js_transformer.dart | 5 +- sdk/lib/_internal/pub/lib/src/dart.dart | 2 + .../lib/src/barback/dart2js_transformer.dart | 2 + .../_internal/pub_generated/lib/src/dart.dart | 8 ++- .../compiler/dart2js/preserve_uris_test.dart | 62 +++++++++++++++++++ 11 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 tests/compiler/dart2js/preserve_uris_test.dart diff --git a/sdk/lib/_internal/compiler/implementation/apiimpl.dart b/sdk/lib/_internal/compiler/implementation/apiimpl.dart index 27672ab2bf90..5670d49a41a7 100644 --- a/sdk/lib/_internal/compiler/implementation/apiimpl.dart +++ b/sdk/lib/_internal/compiler/implementation/apiimpl.dart @@ -45,6 +45,7 @@ class Compiler extends leg.Compiler { trustTypeAnnotations: hasOption(options, '--trust-type-annotations'), enableMinification: hasOption(options, '--minify'), + preserveUris: hasOption(options, '--preserve-uris'), enableNativeLiveTypeAnalysis: !hasOption(options, '--disable-native-live-type-analysis'), emitJavaScript: !(hasOption(options, '--output-type=dart') || diff --git a/sdk/lib/_internal/compiler/implementation/compiler.dart b/sdk/lib/_internal/compiler/implementation/compiler.dart index 41fd4a50590f..589baba80f7c 100644 --- a/sdk/lib/_internal/compiler/implementation/compiler.dart +++ b/sdk/lib/_internal/compiler/implementation/compiler.dart @@ -645,6 +645,10 @@ abstract class Compiler implements DiagnosticListener { new ResolutionRegistry.internal(null, new TreeElementMapping(null)); final bool enableMinification; + + /// When `true` emits URIs in the reflection metadata. + final bool preserveUris; + final bool enableTypeAssertions; final bool enableUserAssertions; final bool trustTypeAnnotations; @@ -934,6 +938,7 @@ abstract class Compiler implements DiagnosticListener { bool disableTypeInferenceFlag: false, this.maxConcreteTypeSize: 5, this.enableMinification: false, + this.preserveUris: false, this.enableNativeLiveTypeAnalysis: false, bool emitJavaScript: true, bool dart2dartMultiFile: false, diff --git a/sdk/lib/_internal/compiler/implementation/dart2js.dart b/sdk/lib/_internal/compiler/implementation/dart2js.dart index ef6e8faa2bdf..99c6754ae0ce 100644 --- a/sdk/lib/_internal/compiler/implementation/dart2js.dart +++ b/sdk/lib/_internal/compiler/implementation/dart2js.dart @@ -288,6 +288,7 @@ Future compile(List argv) { new OptionHandler('--out=.+|-o.*', setOutput, multipleArguments: true), new OptionHandler('--allow-mock-compilation', passThrough), new OptionHandler('--minify|-m', implyCompilation), + new OptionHandler('--preserve-uris', passThrough), new OptionHandler('--force-strip=.*', setStrip), new OptionHandler('--disable-diagnostic-colors', (_) => diagnosticHandler.enableColors = false), @@ -524,6 +525,10 @@ Supported options: --show-package-warnings Show warnings and hints generated from packages. + --preserve-uris + Preserve the source URIs in the reflection data. Without this flag the + `uri` getter for `LibraryMirror`s is mangled in minified mode. + --csp Disables dynamic generation of code in the generated output. This is necessary to satisfy CSP restrictions (see http://www.w3.org/TR/CSP/). diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart index 6e567f577e8a..0375ea8d3696 100644 --- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart +++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart @@ -362,8 +362,9 @@ class JavaScriptBackend extends Backend { /// program, this variable will stil be false. bool hasRetainedMetadata = false; - /// True if a call to preserveUris has been seen. - bool mustRetainUris = false; + /// True if a call to preserveUris has been seen and the preserve-uris flag + /// is set. + bool mustPreserveUris = false; /// True if a call to preserveLibraryNames has been seen. bool mustRetainLibraryNames = false; @@ -1568,7 +1569,7 @@ class JavaScriptBackend extends Backend { } else if (element == preserveMetadataMarker) { mustRetainMetadata = true; } else if (element == preserveUrisMarker) { - mustRetainUris = true; + if (compiler.preserveUris) mustPreserveUris = true; } else if (element == preserveLibraryNamesMarker) { mustRetainLibraryNames = true; } else if (element == getIsolateAffinityTagMarker) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index 17f3fb57c588..274a7b47ec5e 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -1209,7 +1209,7 @@ class OldEmitter implements Emitter { void writeLibraryDescriptors(CodeBuffer buffer, LibraryElement library) { var uri = ""; - if (!compiler.enableMinification || backend.mustRetainUris) { + if (!compiler.enableMinification || backend.mustPreserveUris) { uri = library.canonicalUri; if (uri.scheme == 'file' && compiler.outputUri != null) { uri = relativize(compiler.outputUri, library.canonicalUri, false); diff --git a/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart b/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart index af3226e93918..5f613d37079a 100644 --- a/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart +++ b/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart @@ -141,7 +141,17 @@ class JsMirrorSystem implements MirrorSystem { if (jsLibraries == null) return result; for (List data in jsLibraries) { String name = data[0]; - Uri uri = Uri.parse(data[1]); + String uriString = data[1]; + Uri uri; + // The Uri has been compiled out. Create a URI from the simple name. + if (uriString != "") { + uri = Uri.parse(uriString); + } else { + uri = new Uri(scheme: 'https', + host: 'dartlang.org', + path: 'dart2js-stripped-uri', + queryParameters: { 'lib': name }); + } List classes = data[2]; List functions = data[3]; var metadataFunction = data[4]; diff --git a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart index ec49eff615d1..1f392a8533bb 100644 --- a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart +++ b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart @@ -24,8 +24,8 @@ import 'asset_environment.dart'; /// The set of all valid configuration options for this transformer. final _validOptions = new Set.from([ 'commandLineOptions', 'checked', 'csp', 'minify', 'verbose', 'environment', - 'analyzeAll', 'suppressWarnings', 'suppressHints', 'suppressPackageWarnings', - 'terse' + 'analyzeAll', 'preserveUris', 'suppressWarnings', 'suppressHints', + 'suppressPackageWarnings', 'terse' ]); /// A [Transformer] that uses dart2js's library API to transform Dart @@ -141,6 +141,7 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer { environment: _configEnvironment, packageRoot: _environment.rootPackage.path("packages"), analyzeAll: _configBool('analyzeAll'), + preserveUris: _configBool('preserveUris'), suppressWarnings: _configBool('suppressWarnings'), suppressHints: _configBool('suppressHints'), suppressPackageWarnings: _configBool( diff --git a/sdk/lib/_internal/pub/lib/src/dart.dart b/sdk/lib/_internal/pub/lib/src/dart.dart index 0b5ab8cd7b92..a020d9bcf577 100644 --- a/sdk/lib/_internal/pub/lib/src/dart.dart +++ b/sdk/lib/_internal/pub/lib/src/dart.dart @@ -65,6 +65,7 @@ Future compile(String entrypoint, CompilerProvider provider, { Map environment, String packageRoot, bool analyzeAll: false, + bool preserveUris: false, bool suppressWarnings: false, bool suppressHints: false, bool suppressPackageWarnings: true, @@ -78,6 +79,7 @@ Future compile(String entrypoint, CompilerProvider provider, { if (minify) options.add('--minify'); if (verbose) options.add('--verbose'); if (analyzeAll) options.add('--analyze-all'); + if (preserveUris) options.add('--preserve-uris'); if (suppressWarnings) options.add('--suppress-warnings'); if (suppressHints) options.add('--suppress-hints'); if (!suppressPackageWarnings) options.add('--show-package-warnings'); diff --git a/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart index 7878c4590b51..0d25cb8a18c4 100644 --- a/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart +++ b/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart @@ -30,6 +30,7 @@ final _validOptions = new Set.from( 'verbose', 'environment', 'analyzeAll', + 'preserveUris', 'suppressWarnings', 'suppressHints', 'suppressPackageWarnings', @@ -152,6 +153,7 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer { environment: _configEnvironment, packageRoot: _environment.rootPackage.path("packages"), analyzeAll: _configBool('analyzeAll'), + preserveUris: _configBool('preserveUris'), suppressWarnings: _configBool('suppressWarnings'), suppressHints: _configBool('suppressHints'), suppressPackageWarnings: _configBool( diff --git a/sdk/lib/_internal/pub_generated/lib/src/dart.dart b/sdk/lib/_internal/pub_generated/lib/src/dart.dart index 35ff526defae..b6399990178b 100644 --- a/sdk/lib/_internal/pub_generated/lib/src/dart.dart +++ b/sdk/lib/_internal/pub_generated/lib/src/dart.dart @@ -58,9 +58,10 @@ abstract class CompilerProvider { Future compile(String entrypoint, CompilerProvider provider, {Iterable commandLineOptions, bool checked: false, bool csp: false, bool minify: true, bool verbose: false, Map environment, - String packageRoot, bool analyzeAll: false, bool suppressWarnings: false, - bool suppressHints: false, bool suppressPackageWarnings: true, bool terse: - false, bool includeSourceMapUrls: false, bool toDart: false}) { + String packageRoot, bool analyzeAll: false, bool preserveUris: false, + bool suppressWarnings: false, bool suppressHints: false, + bool suppressPackageWarnings: true, bool terse: false, + bool includeSourceMapUrls: false, bool toDart: false}) { return new Future.sync(() { var options = ['--categories=Client,Server']; if (checked) options.add('--enable-checked-mode'); @@ -68,6 +69,7 @@ Future compile(String entrypoint, CompilerProvider provider, if (minify) options.add('--minify'); if (verbose) options.add('--verbose'); if (analyzeAll) options.add('--analyze-all'); + if (preserveUris) options.add('--preserve-uris'); if (suppressWarnings) options.add('--suppress-warnings'); if (suppressHints) options.add('--suppress-hints'); if (!suppressPackageWarnings) options.add('--show-package-warnings'); diff --git a/tests/compiler/dart2js/preserve_uris_test.dart b/tests/compiler/dart2js/preserve_uris_test.dart new file mode 100644 index 000000000000..e0b8f1f02ce0 --- /dev/null +++ b/tests/compiler/dart2js/preserve_uris_test.dart @@ -0,0 +1,62 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:async'; + +import 'package:expect/expect.dart'; +import 'package:async_helper/async_helper.dart'; +import 'memory_compiler.dart' show compilerFor, OutputCollector; + +const MEMORY_SOURCE_FILES = const { + 'main.dart': """ +library main; + +@MirrorsUsed(targets: const ['main', 'lib']) +import 'dart:mirrors'; +import 'lib.dart'; + + +class Subclass extends Super { + int _private; + + int magic() => _private++; +} + +main() { + var objects = [new Super(), new Subclass()]; + print(currentMirrorSystem().findLibrary(#main).uri); +} +""", + 'lib.dart': """ +library lib; + +class Super { + int _private; + + int magic() => _private++; +} +""" +}; + +runTest(bool preserveUris) { + OutputCollector collector = new OutputCollector(); + var options = ["--minify"]; + if (preserveUris) options.add("--preserve-uris"); + var compiler = compilerFor(MEMORY_SOURCE_FILES, + outputProvider: collector, + options: options); + return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) { + String jsOutput = collector.getOutput('', 'js'); + Expect.equals(preserveUris, jsOutput.contains("main.dart")); + Expect.equals(preserveUris, jsOutput.contains("lib.dart")); + }); +} + +void main() { + asyncStart(); + new Future.value() + .then((_) => runTest(true)) + .then((_) => runTest(false)) + .whenComplete(asyncEnd); +} From a090968ce66d36e1cf7a23083b670f2e105607b6 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Mon, 20 Oct 2014 16:47:09 +0000 Subject: [PATCH 54/91] Revert "dart2js: add --preserve-uris flag." This reverts commit r41205. Review URL: https://codereview.chromium.org//666843004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41206 260f80e4-7a28-3924-810f-c04153c831b5 --- .../compiler/implementation/apiimpl.dart | 1 - .../compiler/implementation/compiler.dart | 5 -- .../compiler/implementation/dart2js.dart | 5 -- .../implementation/js_backend/backend.dart | 7 +-- .../js_emitter/old_emitter/emitter.dart | 2 +- .../_internal/compiler/js_lib/js_mirrors.dart | 12 +--- .../lib/src/barback/dart2js_transformer.dart | 5 +- sdk/lib/_internal/pub/lib/src/dart.dart | 2 - .../lib/src/barback/dart2js_transformer.dart | 2 - .../_internal/pub_generated/lib/src/dart.dart | 8 +-- .../compiler/dart2js/preserve_uris_test.dart | 62 ------------------- 11 files changed, 10 insertions(+), 101 deletions(-) delete mode 100644 tests/compiler/dart2js/preserve_uris_test.dart diff --git a/sdk/lib/_internal/compiler/implementation/apiimpl.dart b/sdk/lib/_internal/compiler/implementation/apiimpl.dart index 5670d49a41a7..27672ab2bf90 100644 --- a/sdk/lib/_internal/compiler/implementation/apiimpl.dart +++ b/sdk/lib/_internal/compiler/implementation/apiimpl.dart @@ -45,7 +45,6 @@ class Compiler extends leg.Compiler { trustTypeAnnotations: hasOption(options, '--trust-type-annotations'), enableMinification: hasOption(options, '--minify'), - preserveUris: hasOption(options, '--preserve-uris'), enableNativeLiveTypeAnalysis: !hasOption(options, '--disable-native-live-type-analysis'), emitJavaScript: !(hasOption(options, '--output-type=dart') || diff --git a/sdk/lib/_internal/compiler/implementation/compiler.dart b/sdk/lib/_internal/compiler/implementation/compiler.dart index 589baba80f7c..41fd4a50590f 100644 --- a/sdk/lib/_internal/compiler/implementation/compiler.dart +++ b/sdk/lib/_internal/compiler/implementation/compiler.dart @@ -645,10 +645,6 @@ abstract class Compiler implements DiagnosticListener { new ResolutionRegistry.internal(null, new TreeElementMapping(null)); final bool enableMinification; - - /// When `true` emits URIs in the reflection metadata. - final bool preserveUris; - final bool enableTypeAssertions; final bool enableUserAssertions; final bool trustTypeAnnotations; @@ -938,7 +934,6 @@ abstract class Compiler implements DiagnosticListener { bool disableTypeInferenceFlag: false, this.maxConcreteTypeSize: 5, this.enableMinification: false, - this.preserveUris: false, this.enableNativeLiveTypeAnalysis: false, bool emitJavaScript: true, bool dart2dartMultiFile: false, diff --git a/sdk/lib/_internal/compiler/implementation/dart2js.dart b/sdk/lib/_internal/compiler/implementation/dart2js.dart index 99c6754ae0ce..ef6e8faa2bdf 100644 --- a/sdk/lib/_internal/compiler/implementation/dart2js.dart +++ b/sdk/lib/_internal/compiler/implementation/dart2js.dart @@ -288,7 +288,6 @@ Future compile(List argv) { new OptionHandler('--out=.+|-o.*', setOutput, multipleArguments: true), new OptionHandler('--allow-mock-compilation', passThrough), new OptionHandler('--minify|-m', implyCompilation), - new OptionHandler('--preserve-uris', passThrough), new OptionHandler('--force-strip=.*', setStrip), new OptionHandler('--disable-diagnostic-colors', (_) => diagnosticHandler.enableColors = false), @@ -525,10 +524,6 @@ Supported options: --show-package-warnings Show warnings and hints generated from packages. - --preserve-uris - Preserve the source URIs in the reflection data. Without this flag the - `uri` getter for `LibraryMirror`s is mangled in minified mode. - --csp Disables dynamic generation of code in the generated output. This is necessary to satisfy CSP restrictions (see http://www.w3.org/TR/CSP/). diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart index 0375ea8d3696..6e567f577e8a 100644 --- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart +++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart @@ -362,9 +362,8 @@ class JavaScriptBackend extends Backend { /// program, this variable will stil be false. bool hasRetainedMetadata = false; - /// True if a call to preserveUris has been seen and the preserve-uris flag - /// is set. - bool mustPreserveUris = false; + /// True if a call to preserveUris has been seen. + bool mustRetainUris = false; /// True if a call to preserveLibraryNames has been seen. bool mustRetainLibraryNames = false; @@ -1569,7 +1568,7 @@ class JavaScriptBackend extends Backend { } else if (element == preserveMetadataMarker) { mustRetainMetadata = true; } else if (element == preserveUrisMarker) { - if (compiler.preserveUris) mustPreserveUris = true; + mustRetainUris = true; } else if (element == preserveLibraryNamesMarker) { mustRetainLibraryNames = true; } else if (element == getIsolateAffinityTagMarker) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index 274a7b47ec5e..17f3fb57c588 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -1209,7 +1209,7 @@ class OldEmitter implements Emitter { void writeLibraryDescriptors(CodeBuffer buffer, LibraryElement library) { var uri = ""; - if (!compiler.enableMinification || backend.mustPreserveUris) { + if (!compiler.enableMinification || backend.mustRetainUris) { uri = library.canonicalUri; if (uri.scheme == 'file' && compiler.outputUri != null) { uri = relativize(compiler.outputUri, library.canonicalUri, false); diff --git a/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart b/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart index 5f613d37079a..af3226e93918 100644 --- a/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart +++ b/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart @@ -141,17 +141,7 @@ class JsMirrorSystem implements MirrorSystem { if (jsLibraries == null) return result; for (List data in jsLibraries) { String name = data[0]; - String uriString = data[1]; - Uri uri; - // The Uri has been compiled out. Create a URI from the simple name. - if (uriString != "") { - uri = Uri.parse(uriString); - } else { - uri = new Uri(scheme: 'https', - host: 'dartlang.org', - path: 'dart2js-stripped-uri', - queryParameters: { 'lib': name }); - } + Uri uri = Uri.parse(data[1]); List classes = data[2]; List functions = data[3]; var metadataFunction = data[4]; diff --git a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart index 1f392a8533bb..ec49eff615d1 100644 --- a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart +++ b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart @@ -24,8 +24,8 @@ import 'asset_environment.dart'; /// The set of all valid configuration options for this transformer. final _validOptions = new Set.from([ 'commandLineOptions', 'checked', 'csp', 'minify', 'verbose', 'environment', - 'analyzeAll', 'preserveUris', 'suppressWarnings', 'suppressHints', - 'suppressPackageWarnings', 'terse' + 'analyzeAll', 'suppressWarnings', 'suppressHints', 'suppressPackageWarnings', + 'terse' ]); /// A [Transformer] that uses dart2js's library API to transform Dart @@ -141,7 +141,6 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer { environment: _configEnvironment, packageRoot: _environment.rootPackage.path("packages"), analyzeAll: _configBool('analyzeAll'), - preserveUris: _configBool('preserveUris'), suppressWarnings: _configBool('suppressWarnings'), suppressHints: _configBool('suppressHints'), suppressPackageWarnings: _configBool( diff --git a/sdk/lib/_internal/pub/lib/src/dart.dart b/sdk/lib/_internal/pub/lib/src/dart.dart index a020d9bcf577..0b5ab8cd7b92 100644 --- a/sdk/lib/_internal/pub/lib/src/dart.dart +++ b/sdk/lib/_internal/pub/lib/src/dart.dart @@ -65,7 +65,6 @@ Future compile(String entrypoint, CompilerProvider provider, { Map environment, String packageRoot, bool analyzeAll: false, - bool preserveUris: false, bool suppressWarnings: false, bool suppressHints: false, bool suppressPackageWarnings: true, @@ -79,7 +78,6 @@ Future compile(String entrypoint, CompilerProvider provider, { if (minify) options.add('--minify'); if (verbose) options.add('--verbose'); if (analyzeAll) options.add('--analyze-all'); - if (preserveUris) options.add('--preserve-uris'); if (suppressWarnings) options.add('--suppress-warnings'); if (suppressHints) options.add('--suppress-hints'); if (!suppressPackageWarnings) options.add('--show-package-warnings'); diff --git a/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart index 0d25cb8a18c4..7878c4590b51 100644 --- a/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart +++ b/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart @@ -30,7 +30,6 @@ final _validOptions = new Set.from( 'verbose', 'environment', 'analyzeAll', - 'preserveUris', 'suppressWarnings', 'suppressHints', 'suppressPackageWarnings', @@ -153,7 +152,6 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer { environment: _configEnvironment, packageRoot: _environment.rootPackage.path("packages"), analyzeAll: _configBool('analyzeAll'), - preserveUris: _configBool('preserveUris'), suppressWarnings: _configBool('suppressWarnings'), suppressHints: _configBool('suppressHints'), suppressPackageWarnings: _configBool( diff --git a/sdk/lib/_internal/pub_generated/lib/src/dart.dart b/sdk/lib/_internal/pub_generated/lib/src/dart.dart index b6399990178b..35ff526defae 100644 --- a/sdk/lib/_internal/pub_generated/lib/src/dart.dart +++ b/sdk/lib/_internal/pub_generated/lib/src/dart.dart @@ -58,10 +58,9 @@ abstract class CompilerProvider { Future compile(String entrypoint, CompilerProvider provider, {Iterable commandLineOptions, bool checked: false, bool csp: false, bool minify: true, bool verbose: false, Map environment, - String packageRoot, bool analyzeAll: false, bool preserveUris: false, - bool suppressWarnings: false, bool suppressHints: false, - bool suppressPackageWarnings: true, bool terse: false, - bool includeSourceMapUrls: false, bool toDart: false}) { + String packageRoot, bool analyzeAll: false, bool suppressWarnings: false, + bool suppressHints: false, bool suppressPackageWarnings: true, bool terse: + false, bool includeSourceMapUrls: false, bool toDart: false}) { return new Future.sync(() { var options = ['--categories=Client,Server']; if (checked) options.add('--enable-checked-mode'); @@ -69,7 +68,6 @@ Future compile(String entrypoint, CompilerProvider provider, if (minify) options.add('--minify'); if (verbose) options.add('--verbose'); if (analyzeAll) options.add('--analyze-all'); - if (preserveUris) options.add('--preserve-uris'); if (suppressWarnings) options.add('--suppress-warnings'); if (suppressHints) options.add('--suppress-hints'); if (!suppressPackageWarnings) options.add('--show-package-warnings'); diff --git a/tests/compiler/dart2js/preserve_uris_test.dart b/tests/compiler/dart2js/preserve_uris_test.dart deleted file mode 100644 index e0b8f1f02ce0..000000000000 --- a/tests/compiler/dart2js/preserve_uris_test.dart +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:async'; - -import 'package:expect/expect.dart'; -import 'package:async_helper/async_helper.dart'; -import 'memory_compiler.dart' show compilerFor, OutputCollector; - -const MEMORY_SOURCE_FILES = const { - 'main.dart': """ -library main; - -@MirrorsUsed(targets: const ['main', 'lib']) -import 'dart:mirrors'; -import 'lib.dart'; - - -class Subclass extends Super { - int _private; - - int magic() => _private++; -} - -main() { - var objects = [new Super(), new Subclass()]; - print(currentMirrorSystem().findLibrary(#main).uri); -} -""", - 'lib.dart': """ -library lib; - -class Super { - int _private; - - int magic() => _private++; -} -""" -}; - -runTest(bool preserveUris) { - OutputCollector collector = new OutputCollector(); - var options = ["--minify"]; - if (preserveUris) options.add("--preserve-uris"); - var compiler = compilerFor(MEMORY_SOURCE_FILES, - outputProvider: collector, - options: options); - return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) { - String jsOutput = collector.getOutput('', 'js'); - Expect.equals(preserveUris, jsOutput.contains("main.dart")); - Expect.equals(preserveUris, jsOutput.contains("lib.dart")); - }); -} - -void main() { - asyncStart(); - new Future.value() - .then((_) => runTest(true)) - .then((_) => runTest(false)) - .whenComplete(asyncEnd); -} From ee2044751afff036c77f45ef323b6d3efb168d12 Mon Sep 17 00:00:00 2001 From: "ahe@google.com" Date: Mon, 20 Oct 2014 17:13:12 +0000 Subject: [PATCH 55/91] Skip bad tests temporarily. Review URL: https://codereview.chromium.org//652543003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41207 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/co19/co19-dartium.status | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/co19/co19-dartium.status b/tests/co19/co19-dartium.status index 765d1ba1972d..51126a806171 100644 --- a/tests/co19/co19-dartium.status +++ b/tests/co19/co19-dartium.status @@ -2,6 +2,22 @@ # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. +LayoutTests/fast/borders/border-radius-child_t01: Skip # co19 issue 732. +LayoutTests/fast/css-generated-content/hit-test-generated-content_t01: Skip # co19 issue 732. +LayoutTests/fast/css/collapsed-whitespace-reattach-in-style-recalc_t01: Skip # co19 issue 732. +LayoutTests/fast/events/document-elementFromPoint_t01: Skip # co19 issue 732. +LayoutTests/fast/sub-pixel/float-containing-block-with-margin_t01: Skip # co19 issue 732. +LayoutTests/fast/sub-pixel/table-rows-have-stable-height_t01: Skip # co19 issue 732. +LayoutTests/fast/table/col-width-span-expand_t01: Skip # co19 issue 732. +LayoutTests/fast/text-autosizing/vertical-writing-mode_t01: Skip # co19 issue 732. +LayoutTests/fast/text/international/rtl-text-wrapping_t01: Skip # co19 issue 732. +LayoutTests/fast/writing-mode/positionForPoint_t01: Skip # co19 issue 732. +LayoutTests/fast/css/computed-offset-with-zoom_t01: Skip # co19 issue 732. +LayoutTests/fast/sub-pixel/inline-block-with-padding_t01: Skip # co19 issue 732. +LayoutTests/fast/sub-pixel/size-of-span-with-different-positions_t01: Skip # co19 issue 732. +LayoutTests/fast/text/international/complex-text-rectangle_t01: Skip # co19 issue 732. +LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: Skip # co19 issue 732. + [ $compiler == none && $runtime == drt ] *: Skip # running co19 tests on content_shell would make our dartium cycle-times very long From 23b5353b0ee01c68c1f4e56d60f4f7ada90d1b1c Mon Sep 17 00:00:00 2001 From: "vsm@google.com" Date: Mon, 20 Oct 2014 17:57:14 +0000 Subject: [PATCH 56/91] Suppress new Request type in dart:html This is conflicting with the Request type in IDB. Hiding it for now. We may want to expose with a different name or factor out into a service worker library. BUG=http://dartbug.com/21341 R=blois@google.com Review URL: https://codereview.chromium.org//666543004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41208 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/lib/html/dart2js/html_dart2js.dart | 122 ++++++++++++------------- sdk/lib/html/dartium/html_dartium.dart | 120 ++++++++++++------------ tools/dom/scripts/htmlrenamer.py | 1 + 3 files changed, 122 insertions(+), 121 deletions(-) diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart index 9a28764cdf15..203b7ea54d54 100644 --- a/sdk/lib/html/dart2js/html_dart2js.dart +++ b/sdk/lib/html/dart2js/html_dart2js.dart @@ -13916,7 +13916,7 @@ class FetchEvent extends Event { @DomName('FetchEvent.request') @DocsEditable() @Experimental() // untriaged - final Request request; + final _Request request; @DomName('FetchEvent.respondWith') @DocsEditable() @@ -23981,66 +23981,6 @@ class RelatedEvent extends Event { // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. - -@DocsEditable() -@DomName('Request') -@Experimental() // untriaged -@Native("Request") -class Request extends Interceptor { - // To suppress missing implicit constructor warnings. - factory Request._() { throw new UnsupportedError("Not supported"); } - - @DomName('Request.Request') - @DocsEditable() - factory Request(input, [Map requestInitDict]) { - if ((input is String || input == null) && requestInitDict == null) { - return Request._create_1(input); - } - if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) { - return Request._create_2(input, requestInitDict); - } - if ((input is Request || input == null) && requestInitDict == null) { - return Request._create_3(input); - } - if ((requestInitDict is Map || requestInitDict == null) && (input is Request || input == null)) { - return Request._create_4(input, requestInitDict); - } - throw new ArgumentError("Incorrect number or type of arguments"); - } - static Request _create_1(input) => JS('Request', 'new Request(#)', input); - static Request _create_2(input, requestInitDict) => JS('Request', 'new Request(#,#)', input, requestInitDict); - static Request _create_3(input) => JS('Request', 'new Request(#)', input); - static Request _create_4(input, requestInitDict) => JS('Request', 'new Request(#,#)', input, requestInitDict); - - @DomName('Request.credentials') - @DocsEditable() - @Experimental() // untriaged - final String credentials; - - @DomName('Request.headers') - @DocsEditable() - @Experimental() // untriaged - final Headers headers; - - @DomName('Request.mode') - @DocsEditable() - @Experimental() // untriaged - final String mode; - - @DomName('Request.referrer') - @DocsEditable() - @Experimental() // untriaged - final String referrer; - - @DomName('Request.url') - @DocsEditable() - @Experimental() // untriaged - final String url; -} -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - // WARNING: Do not edit - generated code. @@ -33368,6 +33308,66 @@ abstract class _Rect extends Interceptor { // BSD-style license that can be found in the LICENSE file. +@DocsEditable() +@DomName('Request') +@Experimental() // untriaged +@Native("Request") +class _Request extends Interceptor { + // To suppress missing implicit constructor warnings. + factory _Request._() { throw new UnsupportedError("Not supported"); } + + @DomName('Request.Request') + @DocsEditable() + factory _Request(input, [Map requestInitDict]) { + if ((input is String || input == null) && requestInitDict == null) { + return _Request._create_1(input); + } + if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) { + return _Request._create_2(input, requestInitDict); + } + if ((input is _Request || input == null) && requestInitDict == null) { + return _Request._create_3(input); + } + if ((requestInitDict is Map || requestInitDict == null) && (input is _Request || input == null)) { + return _Request._create_4(input, requestInitDict); + } + throw new ArgumentError("Incorrect number or type of arguments"); + } + static _Request _create_1(input) => JS('_Request', 'new Request(#)', input); + static _Request _create_2(input, requestInitDict) => JS('_Request', 'new Request(#,#)', input, requestInitDict); + static _Request _create_3(input) => JS('_Request', 'new Request(#)', input); + static _Request _create_4(input, requestInitDict) => JS('_Request', 'new Request(#,#)', input, requestInitDict); + + @DomName('Request.credentials') + @DocsEditable() + @Experimental() // untriaged + final String credentials; + + @DomName('Request.headers') + @DocsEditable() + @Experimental() // untriaged + final Headers headers; + + @DomName('Request.mode') + @DocsEditable() + @Experimental() // untriaged + final String mode; + + @DomName('Request.referrer') + @DocsEditable() + @Experimental() // untriaged + final String referrer; + + @DomName('Request.url') + @DocsEditable() + @Experimental() // untriaged + final String url; +} +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + + @DocsEditable() @DomName('Response') @Experimental() // untriaged diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart index 2f4a16b9f537..8ad743a8f0a4 100644 --- a/sdk/lib/html/dartium/html_dartium.dart +++ b/sdk/lib/html/dartium/html_dartium.dart @@ -426,7 +426,7 @@ final htmlBlinkMap = { 'ReadableStream': () => ReadableStream, 'Rect': () => _Rect, 'RelatedEvent': () => RelatedEvent, - 'Request': () => Request, + 'Request': () => _Request, 'ResourceProgressEvent': () => ResourceProgressEvent, 'Response': () => _Response, 'Screen': () => Screen, @@ -14639,7 +14639,7 @@ class FetchEvent extends Event { @DomName('FetchEvent.request') @DocsEditable() @Experimental() // untriaged - Request get request => _blink.BlinkFetchEvent.request_Getter(this); + _Request get request => _blink.BlinkFetchEvent.request_Getter(this); @DomName('FetchEvent.respondWith') @DocsEditable() @@ -26043,64 +26043,6 @@ class RelatedEvent extends Event { // WARNING: Do not edit - generated code. -@DocsEditable() -@DomName('Request') -@Experimental() // untriaged -class Request extends NativeFieldWrapperClass2 { - // To suppress missing implicit constructor warnings. - factory Request._() { throw new UnsupportedError("Not supported"); } - - @DomName('Request.Request') - @DocsEditable() - factory Request(input, [Map requestInitDict]) { - if ((input is String || input == null) && requestInitDict == null) { - return _blink.BlinkRequest.constructorCallback_DOMString(input); - } - if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) { - return _blink.BlinkRequest.constructorCallback_DOMString_Dictionary(input, requestInitDict); - } - if ((input is Request || input == null) && requestInitDict == null) { - return _blink.BlinkRequest.constructorCallback_Request(input); - } - if ((requestInitDict is Map || requestInitDict == null) && (input is Request || input == null)) { - return _blink.BlinkRequest.constructorCallback_Request_Dictionary(input, requestInitDict); - } - throw new ArgumentError("Incorrect number or type of arguments"); - } - - @DomName('Request.credentials') - @DocsEditable() - @Experimental() // untriaged - String get credentials => _blink.BlinkRequest.credentials_Getter(this); - - @DomName('Request.headers') - @DocsEditable() - @Experimental() // untriaged - Headers get headers => _blink.BlinkRequest.headers_Getter(this); - - @DomName('Request.mode') - @DocsEditable() - @Experimental() // untriaged - String get mode => _blink.BlinkRequest.mode_Getter(this); - - @DomName('Request.referrer') - @DocsEditable() - @Experimental() // untriaged - String get referrer => _blink.BlinkRequest.referrer_Getter(this); - - @DomName('Request.url') - @DocsEditable() - @Experimental() // untriaged - String get url => _blink.BlinkRequest.url_Getter(this); - -} -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// WARNING: Do not edit - generated code. - - @DomName('RequestAnimationFrameCallback') typedef void RequestAnimationFrameCallback(num highResTime); // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35670,6 +35612,64 @@ abstract class _Rect extends NativeFieldWrapperClass2 { // WARNING: Do not edit - generated code. +@DocsEditable() +@DomName('Request') +@Experimental() // untriaged +class _Request extends NativeFieldWrapperClass2 { + // To suppress missing implicit constructor warnings. + factory _Request._() { throw new UnsupportedError("Not supported"); } + + @DomName('Request.Request') + @DocsEditable() + factory _Request(input, [Map requestInitDict]) { + if ((input is String || input == null) && requestInitDict == null) { + return _blink.BlinkRequest.constructorCallback_DOMString(input); + } + if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) { + return _blink.BlinkRequest.constructorCallback_DOMString_Dictionary(input, requestInitDict); + } + if ((input is _Request || input == null) && requestInitDict == null) { + return _blink.BlinkRequest.constructorCallback_Request(input); + } + if ((requestInitDict is Map || requestInitDict == null) && (input is _Request || input == null)) { + return _blink.BlinkRequest.constructorCallback_Request_Dictionary(input, requestInitDict); + } + throw new ArgumentError("Incorrect number or type of arguments"); + } + + @DomName('Request.credentials') + @DocsEditable() + @Experimental() // untriaged + String get credentials => _blink.BlinkRequest.credentials_Getter(this); + + @DomName('Request.headers') + @DocsEditable() + @Experimental() // untriaged + Headers get headers => _blink.BlinkRequest.headers_Getter(this); + + @DomName('Request.mode') + @DocsEditable() + @Experimental() // untriaged + String get mode => _blink.BlinkRequest.mode_Getter(this); + + @DomName('Request.referrer') + @DocsEditable() + @Experimental() // untriaged + String get referrer => _blink.BlinkRequest.referrer_Getter(this); + + @DomName('Request.url') + @DocsEditable() + @Experimental() // untriaged + String get url => _blink.BlinkRequest.url_Getter(this); + +} +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// WARNING: Do not edit - generated code. + + @DocsEditable() @DomName('Response') @Experimental() // untriaged diff --git a/tools/dom/scripts/htmlrenamer.py b/tools/dom/scripts/htmlrenamer.py index 0ef9fe92f3d8..0e40253b5e26 100644 --- a/tools/dom/scripts/htmlrenamer.py +++ b/tools/dom/scripts/htmlrenamer.py @@ -49,6 +49,7 @@ 'NotificationPermissionCallback': '_NotificationPermissionCallback', 'PositionCallback': '_PositionCallback', 'PositionErrorCallback': '_PositionErrorCallback', + 'Request': '_Request', 'RTCDTMFSender': 'RtcDtmfSender', 'RTCDTMFToneChangeEvent': 'RtcDtmfToneChangeEvent', 'RTCErrorCallback': '_RtcErrorCallback', From de9ba250c576cf2ee89120f40d35c18d8397c85d Mon Sep 17 00:00:00 2001 From: "rmacnak@google.com" Date: Mon, 20 Oct 2014 18:27:03 +0000 Subject: [PATCH 57/91] Reapply "Stop suppressing generation of bindings with Promise. Add some tests for DOM APIs that answer promises." Fix static warning in storage_quota_test. Fix status of fontface_loaded_test. R=leafp@google.com Review URL: https://codereview.chromium.org//658903005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41210 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/lib/_blink/dartium/_blink_dartium.dart | 98 ++++++++- sdk/lib/html/dart2js/html_dart2js.dart | 244 +++++++++++++++++++++ sdk/lib/html/dartium/html_dartium.dart | 202 +++++++++++++++++ tests/html/fontface_loaded_test.dart | 46 ++++ tests/html/html.status | 6 +- tests/html/storage_quota_test.dart | 38 ++++ tools/dom/dom.json | 96 +++++++- tools/dom/idl/dart/dart.idl | 3 - tools/dom/scripts/generator.py | 1 + tools/dom/scripts/htmlrenamer.py | 18 +- 10 files changed, 735 insertions(+), 17 deletions(-) create mode 100644 tests/html/fontface_loaded_test.dart create mode 100644 tests/html/storage_quota_test.dart diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart index 91015aa24070..fc59300b4c8e 100644 --- a/sdk/lib/_blink/dartium/_blink_dartium.dart +++ b/sdk/lib/_blink/dartium/_blink_dartium.dart @@ -754,7 +754,17 @@ class BlinkCSSViewportRule { class BlinkCache {} -class BlinkCacheStorage {} +class BlinkCacheStorage { + static create_Callback_DOMString(mthis, cacheName) native "CacheStorage_create_Callback_DOMString"; + + static delete_Callback_DOMString(mthis, cacheName) native "CacheStorage_delete_Callback_DOMString"; + + static get_Callback_DOMString(mthis, cacheName) native "CacheStorage_get_Callback_DOMString"; + + static has_Callback_DOMString(mthis, cacheName) native "CacheStorage_has_Callback_DOMString"; + + static keys_Callback(mthis) native "CacheStorage_keys_Callback"; +} class BlinkCanvas2DContextAttributes { static alpha_Getter(mthis) native "Canvas2DContextAttributes_alpha_Getter"; @@ -1180,7 +1190,19 @@ class BlinkCredential { static name_Getter(mthis) native "Credential_name_Getter"; } -class BlinkCredentialsContainer {} +class BlinkCredentialsContainer { + static notifyFailedSignIn_Callback_Credential(mthis, credential) native "CredentialsContainer_notifyFailedSignIn_Callback_Credential"; + + static notifyFailedSignIn_Callback(mthis) native "CredentialsContainer_notifyFailedSignIn_Callback"; + + static notifySignedIn_Callback_Credential(mthis, credential) native "CredentialsContainer_notifySignedIn_Callback_Credential"; + + static notifySignedIn_Callback(mthis) native "CredentialsContainer_notifySignedIn_Callback"; + + static notifySignedOut_Callback(mthis) native "CredentialsContainer_notifySignedOut_Callback"; + + static request_Callback_Dictionary(mthis, options) native "CredentialsContainer_request_Callback_Dictionary"; +} class BlinkCrypto { static subtle_Getter(mthis) native "Crypto_subtle_Getter"; @@ -2124,7 +2146,15 @@ class BlinkFederatedCredential { static federation_Getter(mthis) native "FederatedCredential_federation_Getter"; } -class BlinkFetchBodyStream {} +class BlinkFetchBodyStream { + static asArrayBuffer_Callback(mthis) native "FetchBodyStream_asArrayBuffer_Callback"; + + static asBlob_Callback(mthis) native "FetchBodyStream_asBlob_Callback"; + + static asJSON_Callback(mthis) native "FetchBodyStream_asJSON_Callback"; + + static asText_Callback(mthis) native "FetchBodyStream_asText_Callback"; +} class BlinkFetchEvent { static isReload_Getter(mthis) native "FetchEvent_isReload_Getter"; @@ -2233,6 +2263,8 @@ class BlinkFontFace { static featureSettings_Setter_DOMString(mthis, value) native "FontFace_featureSettings_Setter"; + static loaded_Getter(mthis) native "FontFace_loaded_Getter"; + static status_Getter(mthis) native "FontFace_status_Getter"; static stretch_Getter(mthis) native "FontFace_stretch_Getter"; @@ -2254,6 +2286,8 @@ class BlinkFontFace { static weight_Getter(mthis) native "FontFace_weight_Getter"; static weight_Setter_DOMString(mthis, value) native "FontFace_weight_Setter"; + + static load_Callback(mthis) native "FontFace_load_Callback"; } class BlinkFontFaceSet { @@ -2324,7 +2358,13 @@ class BlinkGamepadList { static item_Callback_ul(mthis, index) native "GamepadList_item_Callback_unsigned long"; } -class BlinkGeofencing {} +class BlinkGeofencing { + static getRegisteredRegions_Callback(mthis) native "Geofencing_getRegisteredRegions_Callback"; + + static registerRegion_Callback_GeofencingRegion(mthis, region) native "Geofencing_registerRegion_Callback_GeofencingRegion"; + + static unregisterRegion_Callback_DOMString(mthis, regionId) native "Geofencing_unregisterRegion_Callback_DOMString"; +} class BlinkGeolocation { static clearWatch_Callback_long(mthis, watchID) native "Geolocation_clearWatch_Callback_long"; @@ -4269,6 +4309,8 @@ class BlinkInstallPhaseEvent { } class BlinkInstallEvent { + static reloadAll_Callback(mthis) native "InstallEvent_reloadAll_Callback"; + static replace_Callback(mthis) native "InstallEvent_replace_Callback"; } @@ -4491,16 +4533,34 @@ class BlinkMediaKeyNeededEvent { } class BlinkMediaKeySession { + static closed_Getter(mthis) native "MediaKeySession_closed_Getter"; + static error_Getter(mthis) native "MediaKeySession_error_Getter"; static keySystem_Getter(mthis) native "MediaKeySession_keySystem_Getter"; static sessionId_Getter(mthis) native "MediaKeySession_sessionId_Getter"; + + static release_Callback(mthis) native "MediaKeySession_release_Callback"; + + static update_Callback_ArrayBufferView(mthis, response) native "MediaKeySession_update_Callback_ArrayBufferView"; + + static update_Callback_ArrayBuffer(mthis, response) native "MediaKeySession_update_Callback_ArrayBuffer"; } class BlinkMediaKeys { static keySystem_Getter(mthis) native "MediaKeys_keySystem_Getter"; + static create_Callback_DOMString(keySystem) native "MediaKeys_create_Callback_DOMString"; + + static createSession_Callback_DOMString_ArrayBufferView(mthis, initDataType, initData) native "MediaKeys_createSession_Callback_DOMString_ArrayBufferView"; + + static createSession_Callback_DOMString_ArrayBufferView_DOMString(mthis, initDataType, initData, sessionType) native "MediaKeys_createSession_Callback_DOMString_ArrayBufferView_DOMString"; + + static createSession_Callback_DOMString_ArrayBuffer(mthis, initDataType, initData) native "MediaKeys_createSession_Callback_DOMString_ArrayBuffer"; + + static createSession_Callback_DOMString_ArrayBuffer_DOMString(mthis, initDataType, initData, sessionType) native "MediaKeys_createSession_Callback_DOMString_ArrayBuffer_DOMString"; + static isTypeSupported_Callback_DOMString_DOMString(keySystem, contentType) native "MediaKeys_isTypeSupported_Callback_DOMString_DOMString"; } @@ -4841,6 +4901,8 @@ class BlinkNavigator { static webkitTemporaryStorage_Getter(mthis) native "Navigator_webkitTemporaryStorage_Getter"; + static getBattery_Callback(mthis) native "Navigator_getBattery_Callback"; + static getGamepads_Callback(mthis) native "Navigator_getGamepads_Callback"; static getStorageUpdates_Callback(mthis) native "Navigator_getStorageUpdates_Callback"; @@ -5266,7 +5328,9 @@ class BlinkPushEvent { static data_Getter(mthis) native "PushEvent_data_Getter"; } -class BlinkPushManager {} +class BlinkPushManager { + static register_Callback_DOMString(mthis, senderId) native "PushManager_register_Callback_DOMString"; +} class BlinkPushRegistration { static pushEndpoint_Getter(mthis) native "PushRegistration_pushEndpoint_Getter"; @@ -7303,6 +7367,8 @@ class BlinkScreenOrientation { static type_Getter(mthis) native "ScreenOrientation_type_Getter"; + static lock_Callback_DOMString(mthis, orientation) native "ScreenOrientation_lock_Callback_DOMString"; + static unlock_Callback(mthis) native "ScreenOrientation_unlock_Callback"; } @@ -7402,7 +7468,9 @@ class BlinkServiceWorkerClient { static postMessage_Callback_SerializedScriptValue_SEQ_MessagePort_SEQ(mthis, message, transfer) native "ServiceWorkerClient_postMessage_Callback"; } -class BlinkServiceWorkerClients {} +class BlinkServiceWorkerClients { + static getServiced_Callback(mthis) native "ServiceWorkerClients_getServiced_Callback"; +} class BlinkServiceWorkerContainer { static active_Getter(mthis) native "ServiceWorkerContainer_active_Getter"; @@ -7411,7 +7479,15 @@ class BlinkServiceWorkerContainer { static installing_Getter(mthis) native "ServiceWorkerContainer_installing_Getter"; + static ready_Getter(mthis) native "ServiceWorkerContainer_ready_Getter"; + static waiting_Getter(mthis) native "ServiceWorkerContainer_waiting_Getter"; + + static register_Callback_DOMString_Dictionary(mthis, url, options) native "ServiceWorkerContainer_register_Callback_DOMString_Dictionary"; + + static unregister_Callback_DOMString(mthis, scope) native "ServiceWorkerContainer_unregister_Callback_DOMString"; + + static unregister_Callback(mthis) native "ServiceWorkerContainer_unregister_Callback"; } class BlinkServiceWorkerGlobalScope { @@ -7420,6 +7496,10 @@ class BlinkServiceWorkerGlobalScope { static nativeCaches_Getter(mthis) native "ServiceWorkerGlobalScope_nativeCaches_Getter"; static scope_Getter(mthis) native "ServiceWorkerGlobalScope_scope_Getter"; + + static fetch_Callback_DOMString_Dictionary(mthis, request, requestInitDict) native "ServiceWorkerGlobalScope_fetch_Callback_DOMString_Dictionary"; + + static fetch_Callback_Request_Dictionary(mthis, request, requestInitDict) native "ServiceWorkerGlobalScope_fetch_Callback_Request_Dictionary"; } class BlinkServiceWorkerRegistration { @@ -7430,6 +7510,8 @@ class BlinkServiceWorkerRegistration { static scope_Getter(mthis) native "ServiceWorkerRegistration_scope_Getter"; static waiting_Getter(mthis) native "ServiceWorkerRegistration_waiting_Getter"; + + static unregister_Callback(mthis) native "ServiceWorkerRegistration_unregister_Callback"; } class BlinkShadowRoot { @@ -7734,6 +7816,10 @@ class BlinkStorageInfo { class BlinkStorageQuota { static supportedTypes_Getter(mthis) native "StorageQuota_supportedTypes_Getter"; + + static queryInfo_Callback_DOMString(mthis, type) native "StorageQuota_queryInfo_Callback_DOMString"; + + static requestPersistentQuota_Callback_ull(mthis, newQuota) native "StorageQuota_requestPersistentQuota_Callback_unsigned long long"; } class BlinkStream { diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart index 203b7ea54d54..95b421973f66 100644 --- a/sdk/lib/html/dart2js/html_dart2js.dart +++ b/sdk/lib/html/dart2js/html_dart2js.dart @@ -1430,6 +1430,31 @@ class CDataSection extends Text { class CacheStorage extends Interceptor { // To suppress missing implicit constructor warnings. factory CacheStorage._() { throw new UnsupportedError("Not supported"); } + + @DomName('CacheStorage.create') + @DocsEditable() + @Experimental() // untriaged + Future create(String cacheName) native; + + @DomName('CacheStorage.delete') + @DocsEditable() + @Experimental() // untriaged + Future delete(String cacheName) native; + + @DomName('CacheStorage.get') + @DocsEditable() + @Experimental() // untriaged + Future get(String cacheName) native; + + @DomName('CacheStorage.has') + @DocsEditable() + @Experimental() // untriaged + Future has(String cacheName) native; + + @DomName('CacheStorage.keys') + @DocsEditable() + @Experimental() // untriaged + Future keys() native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -2819,6 +2844,42 @@ class Credential extends Interceptor { class CredentialsContainer extends Interceptor { // To suppress missing implicit constructor warnings. factory CredentialsContainer._() { throw new UnsupportedError("Not supported"); } + + @DomName('CredentialsContainer.notifyFailedSignIn') + @DocsEditable() + @Experimental() // untriaged + Future notifyFailedSignIn([Credential credential]) native; + + @DomName('CredentialsContainer.notifySignedIn') + @DocsEditable() + @Experimental() // untriaged + Future notifySignedIn([Credential credential]) native; + + @DomName('CredentialsContainer.notifySignedOut') + @DocsEditable() + @Experimental() // untriaged + Future notifySignedOut() native; + + @DomName('CredentialsContainer.request') + @DocsEditable() + @Experimental() // untriaged + Future request([Map options]) { + if (options != null) { + var options_1 = convertDartToNative_Dictionary(options); + return _request_1(options_1); + } + return _request_2(); + } + @JSName('request') + @DomName('CredentialsContainer.request') + @DocsEditable() + @Experimental() // untriaged + Future _request_1(options) native; + @JSName('request') + @DomName('CredentialsContainer.request') + @DocsEditable() + @Experimental() // untriaged + Future _request_2() native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -13894,6 +13955,27 @@ class FederatedCredential extends Credential { class FetchBodyStream extends Interceptor { // To suppress missing implicit constructor warnings. factory FetchBodyStream._() { throw new UnsupportedError("Not supported"); } + + @DomName('FetchBodyStream.asArrayBuffer') + @DocsEditable() + @Experimental() // untriaged + Future asArrayBuffer() native; + + @DomName('FetchBodyStream.asBlob') + @DocsEditable() + @Experimental() // untriaged + Future asBlob() native; + + @JSName('asJSON') + @DomName('FetchBodyStream.asJSON') + @DocsEditable() + @Experimental() // untriaged + Future asJson() native; + + @DomName('FetchBodyStream.asText') + @DocsEditable() + @Experimental() // untriaged + Future asText() native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -14660,6 +14742,11 @@ class FontFace extends Interceptor { @Experimental() // untriaged String featureSettings; + @DomName('FontFace.loaded') + @DocsEditable() + @Experimental() // untriaged + final Future loaded; + @DomName('FontFace.status') @DocsEditable() @Experimental() // untriaged @@ -14689,6 +14776,11 @@ class FontFace extends Interceptor { @DocsEditable() @Experimental() // untriaged String weight; + + @DomName('FontFace.load') + @DocsEditable() + @Experimental() // untriaged + Future load() native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -14999,6 +15091,21 @@ class GamepadEvent extends Event { class Geofencing extends Interceptor { // To suppress missing implicit constructor warnings. factory Geofencing._() { throw new UnsupportedError("Not supported"); } + + @DomName('Geofencing.getRegisteredRegions') + @DocsEditable() + @Experimental() // untriaged + Future getRegisteredRegions() native; + + @DomName('Geofencing.registerRegion') + @DocsEditable() + @Experimental() // untriaged + Future registerRegion(GeofencingRegion region) native; + + @DomName('Geofencing.unregisterRegion') + @DocsEditable() + @Experimental() // untriaged + Future unregisterRegion(String regionId) native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -18380,6 +18487,11 @@ class InstallEvent extends InstallPhaseEvent { // To suppress missing implicit constructor warnings. factory InstallEvent._() { throw new UnsupportedError("Not supported"); } + @DomName('InstallEvent.reloadAll') + @DocsEditable() + @Experimental() // untriaged + Future reloadAll() native; + @DomName('InstallEvent.replace') @DocsEditable() @Experimental() // untriaged @@ -19584,6 +19696,11 @@ class MediaKeySession extends EventTarget { // To suppress missing implicit constructor warnings. factory MediaKeySession._() { throw new UnsupportedError("Not supported"); } + @DomName('MediaKeySession.closed') + @DocsEditable() + @Experimental() // untriaged + final Future closed; + @DomName('MediaKeySession.error') @DocsEditable() final MediaKeyError error; @@ -19595,6 +19712,16 @@ class MediaKeySession extends EventTarget { @DomName('MediaKeySession.sessionId') @DocsEditable() final String sessionId; + + @DomName('MediaKeySession.release') + @DocsEditable() + @Experimental() // untriaged + Future release() native; + + @JSName('update') + @DomName('MediaKeySession.update') + @DocsEditable() + Future _update(response) native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -19614,6 +19741,16 @@ class MediaKeys extends Interceptor { @DocsEditable() final String keySystem; + @DomName('MediaKeys.create') + @DocsEditable() + @Experimental() // untriaged + static Future create(String keySystem) native; + + @JSName('createSession') + @DomName('MediaKeys.createSession') + @DocsEditable() + Future _createSession(String initDataType, initData, [String sessionType]) native; + @DomName('MediaKeys.isTypeSupported') @DocsEditable() @Experimental() // untriaged @@ -21279,6 +21416,11 @@ class Navigator extends NavigatorCpu implements NavigatorLanguage, NavigatorOnLi // http://www.w3.org/TR/quota-api/#accessing-storagequota final DeprecatedStorageQuota temporaryStorage; + @DomName('Navigator.getBattery') + @DocsEditable() + @Experimental() // untriaged + Future getBattery() native; + @DomName('Navigator.getGamepads') @DocsEditable() @Experimental() // untriaged @@ -23678,6 +23820,11 @@ class PushEvent extends Event { class PushManager extends Interceptor { // To suppress missing implicit constructor warnings. factory PushManager._() { throw new UnsupportedError("Not supported"); } + + @DomName('PushManager.register') + @DocsEditable() + @Experimental() // untriaged + Future register(String senderId) native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -24864,6 +25011,11 @@ class ScreenOrientation extends EventTarget { @Experimental() // untriaged final String type; + @DomName('ScreenOrientation.lock') + @DocsEditable() + @Experimental() // untriaged + Future lock(String orientation) native; + @DomName('ScreenOrientation.unlock') @DocsEditable() @Experimental() // untriaged @@ -25275,6 +25427,11 @@ class ServiceWorkerClient extends Interceptor { class ServiceWorkerClients extends Interceptor { // To suppress missing implicit constructor warnings. factory ServiceWorkerClients._() { throw new UnsupportedError("Not supported"); } + + @DomName('ServiceWorkerClients.getServiced') + @DocsEditable() + @Experimental() // untriaged + Future getServiced() native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -25304,10 +25461,41 @@ class ServiceWorkerContainer extends Interceptor { @Experimental() // untriaged final _ServiceWorker installing; + @DomName('ServiceWorkerContainer.ready') + @DocsEditable() + @Experimental() // untriaged + final Future ready; + @DomName('ServiceWorkerContainer.waiting') @DocsEditable() @Experimental() // untriaged final _ServiceWorker waiting; + + @DomName('ServiceWorkerContainer.register') + @DocsEditable() + @Experimental() // untriaged + Future register(String url, [Map options]) { + if (options != null) { + var options_1 = convertDartToNative_Dictionary(options); + return _register_1(url, options_1); + } + return _register_2(url); + } + @JSName('register') + @DomName('ServiceWorkerContainer.register') + @DocsEditable() + @Experimental() // untriaged + Future _register_1(url, options) native; + @JSName('register') + @DomName('ServiceWorkerContainer.register') + @DocsEditable() + @Experimental() // untriaged + Future _register_2(url) native; + + @DomName('ServiceWorkerContainer.unregister') + @DocsEditable() + @Experimental() // untriaged + Future unregister([String scope]) native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -25342,6 +25530,47 @@ class ServiceWorkerGlobalScope extends WorkerGlobalScope { @Experimental() // untriaged final String scope; + @DomName('ServiceWorkerGlobalScope.fetch') + @DocsEditable() + @Experimental() // untriaged + Future _fetch(request, [Map requestInitDict]) { + if ((request is String || request == null) && requestInitDict == null) { + return _fetch_1(request); + } + if (requestInitDict != null && (request is String || request == null)) { + var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict); + return _fetch_2(request, requestInitDict_1); + } + if ((request is Request || request == null) && requestInitDict == null) { + return _fetch_3(request); + } + if (requestInitDict != null && (request is Request || request == null)) { + var requestInitDict_2 = convertDartToNative_Dictionary(requestInitDict); + return _fetch_4(request, requestInitDict_2); + } + throw new ArgumentError("Incorrect number or type of arguments"); + } + @JSName('fetch') + @DomName('ServiceWorkerGlobalScope.fetch') + @DocsEditable() + @Experimental() // untriaged + Future _fetch_1(String request) native; + @JSName('fetch') + @DomName('ServiceWorkerGlobalScope.fetch') + @DocsEditable() + @Experimental() // untriaged + Future _fetch_2(String request, requestInitDict) native; + @JSName('fetch') + @DomName('ServiceWorkerGlobalScope.fetch') + @DocsEditable() + @Experimental() // untriaged + Future _fetch_3(Request request) native; + @JSName('fetch') + @DomName('ServiceWorkerGlobalScope.fetch') + @DocsEditable() + @Experimental() // untriaged + Future _fetch_4(Request request, requestInitDict) native; + @DomName('ServiceWorkerGlobalScope.onmessage') @DocsEditable() @Experimental() // untriaged @@ -25379,6 +25608,11 @@ class ServiceWorkerRegistration extends EventTarget { @DocsEditable() @Experimental() // untriaged final _ServiceWorker waiting; + + @DomName('ServiceWorkerRegistration.unregister') + @DocsEditable() + @Experimental() // untriaged + Future unregister() native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -26770,6 +27004,16 @@ class StorageQuota extends Interceptor { @DocsEditable() @Experimental() // untriaged final List supportedTypes; + + @DomName('StorageQuota.queryInfo') + @DocsEditable() + @Experimental() // untriaged + Future queryInfo(String type) native; + + @DomName('StorageQuota.requestPersistentQuota') + @DocsEditable() + @Experimental() // untriaged + Future requestPersistentQuota(int newQuota) native; } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart index 8ad743a8f0a4..cd0f9d89017c 100644 --- a/sdk/lib/html/dartium/html_dartium.dart +++ b/sdk/lib/html/dartium/html_dartium.dart @@ -2150,6 +2150,31 @@ class CacheStorage extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory CacheStorage._() { throw new UnsupportedError("Not supported"); } + @DomName('CacheStorage.create') + @DocsEditable() + @Experimental() // untriaged + Future create(String cacheName) => _blink.BlinkCacheStorage.create_Callback_DOMString(this, cacheName); + + @DomName('CacheStorage.delete') + @DocsEditable() + @Experimental() // untriaged + Future delete(String cacheName) => _blink.BlinkCacheStorage.delete_Callback_DOMString(this, cacheName); + + @DomName('CacheStorage.get') + @DocsEditable() + @Experimental() // untriaged + Future get(String cacheName) => _blink.BlinkCacheStorage.get_Callback_DOMString(this, cacheName); + + @DomName('CacheStorage.has') + @DocsEditable() + @Experimental() // untriaged + Future has(String cacheName) => _blink.BlinkCacheStorage.has_Callback_DOMString(this, cacheName); + + @DomName('CacheStorage.keys') + @DocsEditable() + @Experimental() // untriaged + Future keys() => _blink.BlinkCacheStorage.keys_Callback(this); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -3703,6 +3728,30 @@ class CredentialsContainer extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory CredentialsContainer._() { throw new UnsupportedError("Not supported"); } + Future notifyFailedSignIn([Credential credential]) { + if (credential != null) { + return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback_Credential(this, credential); + } + return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback(this); + } + + Future notifySignedIn([Credential credential]) { + if (credential != null) { + return _blink.BlinkCredentialsContainer.notifySignedIn_Callback_Credential(this, credential); + } + return _blink.BlinkCredentialsContainer.notifySignedIn_Callback(this); + } + + @DomName('CredentialsContainer.notifySignedOut') + @DocsEditable() + @Experimental() // untriaged + Future notifySignedOut() => _blink.BlinkCredentialsContainer.notifySignedOut_Callback(this); + + @DomName('CredentialsContainer.request') + @DocsEditable() + @Experimental() // untriaged + Future request([Map options]) => _blink.BlinkCredentialsContainer.request_Callback_Dictionary(this, options); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -14616,6 +14665,26 @@ class FetchBodyStream extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory FetchBodyStream._() { throw new UnsupportedError("Not supported"); } + @DomName('FetchBodyStream.asArrayBuffer') + @DocsEditable() + @Experimental() // untriaged + Future asArrayBuffer() => _blink.BlinkFetchBodyStream.asArrayBuffer_Callback(this); + + @DomName('FetchBodyStream.asBlob') + @DocsEditable() + @Experimental() // untriaged + Future asBlob() => _blink.BlinkFetchBodyStream.asBlob_Callback(this); + + @DomName('FetchBodyStream.asJSON') + @DocsEditable() + @Experimental() // untriaged + Future asJson() => _blink.BlinkFetchBodyStream.asJSON_Callback(this); + + @DomName('FetchBodyStream.asText') + @DocsEditable() + @Experimental() // untriaged + Future asText() => _blink.BlinkFetchBodyStream.asText_Callback(this); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -15402,6 +15471,11 @@ class FontFace extends NativeFieldWrapperClass2 { @Experimental() // untriaged void set featureSettings(String value) => _blink.BlinkFontFace.featureSettings_Setter_DOMString(this, value); + @DomName('FontFace.loaded') + @DocsEditable() + @Experimental() // untriaged + Future get loaded => _blink.BlinkFontFace.loaded_Getter(this); + @DomName('FontFace.status') @DocsEditable() @Experimental() // untriaged @@ -15457,6 +15531,11 @@ class FontFace extends NativeFieldWrapperClass2 { @Experimental() // untriaged void set weight(String value) => _blink.BlinkFontFace.weight_Setter_DOMString(this, value); + @DomName('FontFace.load') + @DocsEditable() + @Experimental() // untriaged + Future load() => _blink.BlinkFontFace.load_Callback(this); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -15816,6 +15895,21 @@ class Geofencing extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory Geofencing._() { throw new UnsupportedError("Not supported"); } + @DomName('Geofencing.getRegisteredRegions') + @DocsEditable() + @Experimental() // untriaged + Future getRegisteredRegions() => _blink.BlinkGeofencing.getRegisteredRegions_Callback(this); + + @DomName('Geofencing.registerRegion') + @DocsEditable() + @Experimental() // untriaged + Future registerRegion(GeofencingRegion region) => _blink.BlinkGeofencing.registerRegion_Callback_GeofencingRegion(this, region); + + @DomName('Geofencing.unregisterRegion') + @DocsEditable() + @Experimental() // untriaged + Future unregisterRegion(String regionId) => _blink.BlinkGeofencing.unregisterRegion_Callback_DOMString(this, regionId); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -20034,6 +20128,11 @@ class InstallEvent extends InstallPhaseEvent { // To suppress missing implicit constructor warnings. factory InstallEvent._() { throw new UnsupportedError("Not supported"); } + @DomName('InstallEvent.reloadAll') + @DocsEditable() + @Experimental() // untriaged + Future reloadAll() => _blink.BlinkInstallEvent.reloadAll_Callback(this); + @DomName('InstallEvent.replace') @DocsEditable() @Experimental() // untriaged @@ -21401,6 +21500,11 @@ class MediaKeySession extends EventTarget { // To suppress missing implicit constructor warnings. factory MediaKeySession._() { throw new UnsupportedError("Not supported"); } + @DomName('MediaKeySession.closed') + @DocsEditable() + @Experimental() // untriaged + Future get closed => _blink.BlinkMediaKeySession.closed_Getter(this); + @DomName('MediaKeySession.error') @DocsEditable() MediaKeyError get error => _blink.BlinkMediaKeySession.error_Getter(this); @@ -21413,6 +21517,21 @@ class MediaKeySession extends EventTarget { @DocsEditable() String get sessionId => _blink.BlinkMediaKeySession.sessionId_Getter(this); + @DomName('MediaKeySession.release') + @DocsEditable() + @Experimental() // untriaged + Future release() => _blink.BlinkMediaKeySession.release_Callback(this); + + Future _update(response) { + if ((response is TypedData)) { + return _blink.BlinkMediaKeySession.update_Callback_ArrayBufferView(this, response); + } + if ((response is ByteBuffer)) { + return _blink.BlinkMediaKeySession.update_Callback_ArrayBuffer(this, response); + } + throw new ArgumentError("Incorrect number or type of arguments"); + } + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -21433,6 +21552,27 @@ class MediaKeys extends NativeFieldWrapperClass2 { @DocsEditable() String get keySystem => _blink.BlinkMediaKeys.keySystem_Getter(this); + @DomName('MediaKeys.create') + @DocsEditable() + @Experimental() // untriaged + static Future create(String keySystem) => _blink.BlinkMediaKeys.create_Callback_DOMString(keySystem); + + Future _createSession(String initDataType, initData, [String sessionType]) { + if ((initData is TypedData) && (initDataType is String) && sessionType == null) { + return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBufferView(this, initDataType, initData); + } + if ((sessionType is String || sessionType == null) && (initData is TypedData) && (initDataType is String)) { + return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBufferView_DOMString(this, initDataType, initData, sessionType); + } + if ((initData is ByteBuffer) && (initDataType is String) && sessionType == null) { + return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBuffer(this, initDataType, initData); + } + if ((sessionType is String || sessionType == null) && (initData is ByteBuffer) && (initDataType is String)) { + return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBuffer_DOMString(this, initDataType, initData, sessionType); + } + throw new ArgumentError("Incorrect number or type of arguments"); + } + @DomName('MediaKeys.isTypeSupported') @DocsEditable() @Experimental() // untriaged @@ -23143,6 +23283,11 @@ class Navigator extends NavigatorCpu implements NavigatorLanguage, NavigatorOnLi // http://www.w3.org/TR/quota-api/#accessing-storagequota DeprecatedStorageQuota get temporaryStorage => _blink.BlinkNavigator.webkitTemporaryStorage_Getter(this); + @DomName('Navigator.getBattery') + @DocsEditable() + @Experimental() // untriaged + Future getBattery() => _blink.BlinkNavigator.getBattery_Callback(this); + @DomName('Navigator.getGamepads') @DocsEditable() @Experimental() // untriaged @@ -25729,6 +25874,11 @@ class PushManager extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory PushManager._() { throw new UnsupportedError("Not supported"); } + @DomName('PushManager.register') + @DocsEditable() + @Experimental() // untriaged + Future register(String senderId) => _blink.BlinkPushManager.register_Callback_DOMString(this, senderId); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -26858,6 +27008,11 @@ class ScreenOrientation extends EventTarget { @Experimental() // untriaged String get type => _blink.BlinkScreenOrientation.type_Getter(this); + @DomName('ScreenOrientation.lock') + @DocsEditable() + @Experimental() // untriaged + Future lock(String orientation) => _blink.BlinkScreenOrientation.lock_Callback_DOMString(this, orientation); + @DomName('ScreenOrientation.unlock') @DocsEditable() @Experimental() // untriaged @@ -27362,6 +27517,11 @@ class ServiceWorkerClients extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory ServiceWorkerClients._() { throw new UnsupportedError("Not supported"); } + @DomName('ServiceWorkerClients.getServiced') + @DocsEditable() + @Experimental() // untriaged + Future getServiced() => _blink.BlinkServiceWorkerClients.getServiced_Callback(this); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -27392,11 +27552,28 @@ class ServiceWorkerContainer extends NativeFieldWrapperClass2 { @Experimental() // untriaged _ServiceWorker get installing => _blink.BlinkServiceWorkerContainer.installing_Getter(this); + @DomName('ServiceWorkerContainer.ready') + @DocsEditable() + @Experimental() // untriaged + Future get ready => _blink.BlinkServiceWorkerContainer.ready_Getter(this); + @DomName('ServiceWorkerContainer.waiting') @DocsEditable() @Experimental() // untriaged _ServiceWorker get waiting => _blink.BlinkServiceWorkerContainer.waiting_Getter(this); + @DomName('ServiceWorkerContainer.register') + @DocsEditable() + @Experimental() // untriaged + Future register(String url, [Map options]) => _blink.BlinkServiceWorkerContainer.register_Callback_DOMString_Dictionary(this, url, options); + + Future unregister([String scope]) { + if (scope != null) { + return _blink.BlinkServiceWorkerContainer.unregister_Callback_DOMString(this, scope); + } + return _blink.BlinkServiceWorkerContainer.unregister_Callback(this); + } + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -27432,6 +27609,16 @@ class ServiceWorkerGlobalScope extends WorkerGlobalScope { @Experimental() // untriaged String get scope => _blink.BlinkServiceWorkerGlobalScope.scope_Getter(this); + Future _fetch(request, [Map requestInitDict]) { + if ((requestInitDict is Map || requestInitDict == null) && (request is String || request == null)) { + return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_DOMString_Dictionary(this, request, requestInitDict); + } + if ((requestInitDict is Map || requestInitDict == null) && (request is Request || request == null)) { + return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_Request_Dictionary(this, request, requestInitDict); + } + throw new ArgumentError("Incorrect number or type of arguments"); + } + @DomName('ServiceWorkerGlobalScope.onmessage') @DocsEditable() @Experimental() // untriaged @@ -27472,6 +27659,11 @@ class ServiceWorkerRegistration extends EventTarget { @Experimental() // untriaged _ServiceWorker get waiting => _blink.BlinkServiceWorkerRegistration.waiting_Getter(this); + @DomName('ServiceWorkerRegistration.unregister') + @DocsEditable() + @Experimental() // untriaged + Future unregister() => _blink.BlinkServiceWorkerRegistration.unregister_Callback(this); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -29012,6 +29204,16 @@ class StorageQuota extends NativeFieldWrapperClass2 { @Experimental() // untriaged List get supportedTypes => _blink.BlinkStorageQuota.supportedTypes_Getter(this); + @DomName('StorageQuota.queryInfo') + @DocsEditable() + @Experimental() // untriaged + Future queryInfo(String type) => _blink.BlinkStorageQuota.queryInfo_Callback_DOMString(this, type); + + @DomName('StorageQuota.requestPersistentQuota') + @DocsEditable() + @Experimental() // untriaged + Future requestPersistentQuota(int newQuota) => _blink.BlinkStorageQuota.requestPersistentQuota_Callback_ull(this, newQuota); + } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a diff --git a/tests/html/fontface_loaded_test.dart b/tests/html/fontface_loaded_test.dart new file mode 100644 index 000000000000..d1926880ae89 --- /dev/null +++ b/tests/html/fontface_loaded_test.dart @@ -0,0 +1,46 @@ +library fontface_loaded_test; + +import 'package:unittest/unittest.dart'; +import 'package:unittest/html_config.dart'; + +import 'dart:async'; +import 'dart:isolate'; +import 'dart:html'; + +class NullTreeSanitizer implements NodeTreeSanitizer { + void sanitizeTree(Node node) {} +} + +main() { + useHtmlConfiguration(); + + var style = new Element.html(''' + + ''', treeSanitizer: new NullTreeSanitizer()); + document.head.append(style); + + + test('document fonts - temporary', () { + var atLeastOneFont = false; + document.fonts.forEach((FontFace fontFace, _, __) { + atLeastOneFont = true; + Future f1 = fontFace.loaded; + Future f2 = fontFace.loaded; + expect(f1, equals(f2)); // Repeated calls should answer the same Future. + + expect(fontFace.load(), throws); + }); + expect(atLeastOneFont, isTrue); + }); +} diff --git a/tests/html/html.status b/tests/html/html.status index e55c8a32ce80..0f65c7f30860 100644 --- a/tests/html/html.status +++ b/tests/html/html.status @@ -9,10 +9,12 @@ dromaeo_smoke_test: Skip # Issue 14521, 8257 [ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ] custom/attribute_changed_callback_test/unsupported_on_polyfill: Fail # Issue 18931 (Disabled for Chrome 35 roll) custom/document_register_basic_test: RuntimeError # Issue 20813 -indexeddb_1_test/functional: Skip # Issue 19512 (timing out) +fontface_loaded_test: Skip # Issue 21359 form_data_test/functional: Skip # Issue 19726 +indexeddb_1_test/functional: Skip # Issue 19512 (timing out) indexeddb_4_test: Skip # Issue 19726 mouse_event_test: Fail # Issue 20437 +storage_quota_test/missingenumcheck: Fail [ $compiler == none && $mode == debug && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ] datalistelement_test: Skip # Issue 20540 @@ -23,6 +25,8 @@ custom/element_upgrade_test: Fail # Issue 17298 [ $compiler == dart2js && $browser ] custom/created_callback_test: Fail # Support for created constructor. +fontface_loaded_test: Fail # Support for promises. +storage_quota_test: Fail # Support for promises. [ $compiler == dart2js && ($runtime == safari || $runtime == safarimobilesim || $runtime == ff || $ie) ] custom/entered_left_view_test/viewless_document: Fail # Polyfill does not handle this diff --git a/tests/html/storage_quota_test.dart b/tests/html/storage_quota_test.dart new file mode 100644 index 000000000000..54e53464d711 --- /dev/null +++ b/tests/html/storage_quota_test.dart @@ -0,0 +1,38 @@ +library storage_quota_test; + +import 'package:unittest/unittest.dart'; +import 'package:unittest/html_config.dart'; + +import 'dart:async'; +import 'dart:isolate'; +import 'dart:html'; + +main() { + useHtmlConfiguration(); + + expectSaneStorageInfo(StorageInfo storageInfo) { + expect(storageInfo.usage, isNotNull); + expect(storageInfo.quota, isNotNull); + expect(storageInfo.usage >= 0, isTrue); + expect(storageInfo.quota >= storageInfo.usage, isNotNull); + }; + + test('storage quota - temporary', () { + Future f = window.navigator.storageQuota.queryInfo('temporary'); + expect(f.then(expectSaneStorageInfo), completes); + }); + + test('storage quota - persistent', () { + Future f = window.navigator.storageQuota.queryInfo('persistent'); + expect(f.then(expectSaneStorageInfo), completes); + }); + + test('storage quota - unknown', () { + // Throwing synchronously is bogus upstream behavior; should result in a + // smashed promise. + expect(() => window.navigator.storageQuota.queryInfo("foo"), throws); /// missingenumcheck: ok + var wrongType = 3; + expect(() => window.navigator.storageQuota.queryInfo(wrongType), throws); + expect(() => window.navigator.storageQuota.queryInfo(null), throws); + }); +} diff --git a/tools/dom/dom.json b/tools/dom/dom.json index b4ca55bbaba4..7be54d723f16 100644 --- a/tools/dom/dom.json +++ b/tools/dom/dom.json @@ -925,7 +925,23 @@ "support_level": "untriaged" }, "CacheStorage": { - "members": {}, + "members": { + "create": { + "support_level": "untriaged" + }, + "delete": { + "support_level": "untriaged" + }, + "get": { + "support_level": "untriaged" + }, + "has": { + "support_level": "untriaged" + }, + "keys": { + "support_level": "untriaged" + } + }, "support_level": "untriaged" }, "Canvas2DContextAttributes": { @@ -1495,7 +1511,20 @@ "support_level": "untriaged" }, "CredentialsContainer": { - "members": {}, + "members": { + "notifyFailedSignIn": { + "support_level": "untriaged" + }, + "notifySignedIn": { + "support_level": "untriaged" + }, + "notifySignedOut": { + "support_level": "untriaged" + }, + "request": { + "support_level": "untriaged" + } + }, "support_level": "untriaged" }, "Crypto": { @@ -3575,7 +3604,20 @@ "support_level": "untriaged" }, "FetchBodyStream": { - "members": {}, + "members": { + "asArrayBuffer": { + "support_level": "untriaged" + }, + "asBlob": { + "support_level": "untriaged" + }, + "asJSON": { + "support_level": "untriaged" + }, + "asText": { + "support_level": "untriaged" + } + }, "support_level": "untriaged" }, "FetchEvent": { @@ -3810,6 +3852,9 @@ "load": { "support_level": "untriaged" }, + "loaded": { + "support_level": "untriaged" + }, "status": { "support_level": "untriaged" }, @@ -3964,7 +4009,17 @@ "support_level": "experimental" }, "Geofencing": { - "members": {}, + "members": { + "getRegisteredRegions": { + "support_level": "untriaged" + }, + "registerRegion": { + "support_level": "untriaged" + }, + "unregisterRegion": { + "support_level": "untriaged" + } + }, "support_level": "untriaged" }, "GeofencingRegion": { @@ -7171,6 +7226,9 @@ "members": { "addEventListener": {}, "close": {}, + "closed": { + "support_level": "untriaged" + }, "dispatchEvent": {}, "error": {}, "keySystem": {}, @@ -7199,6 +7257,9 @@ "comment": "https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html", "members": { "MediaKeys": {}, + "create": { + "support_level": "untriaged" + }, "createSession": {}, "isTypeSupported": { "support_level": "untriaged" @@ -7594,6 +7655,9 @@ "dart_action": "unstable", "support_level": "stable" }, + "getBattery": { + "support_level": "untriaged" + }, "getGamepads": { "support_level": "untriaged" }, @@ -8627,7 +8691,11 @@ "support_level": "untriaged" }, "PushManager": { - "members": {}, + "members": { + "register": { + "support_level": "untriaged" + } + }, "support_level": "untriaged" }, "PushRegistration": { @@ -12592,6 +12660,9 @@ "angle": { "support_level": "untriaged" }, + "lock": { + "support_level": "untriaged" + }, "onchange": { "support_level": "untriaged" }, @@ -12727,7 +12798,11 @@ "support_level": "untriaged" }, "ServiceWorkerClients": { - "members": {}, + "members": { + "getServiced": { + "support_level": "untriaged" + } + }, "support_level": "untriaged" }, "ServiceWorkerContainer": { @@ -12741,6 +12816,9 @@ "installing": { "support_level": "untriaged" }, + "ready": { + "support_level": "untriaged" + }, "register": { "support_level": "untriaged" }, @@ -12758,6 +12836,9 @@ "clients": { "support_level": "untriaged" }, + "fetch": { + "support_level": "untriaged" + }, "nativeCaches": { "support_level": "untriaged" }, @@ -12781,6 +12862,9 @@ "scope": { "support_level": "untriaged" }, + "unregister": { + "support_level": "untriaged" + }, "waiting": { "support_level": "untriaged" } diff --git a/tools/dom/idl/dart/dart.idl b/tools/dom/idl/dart/dart.idl index 8a312ce0514f..06f470c8b37b 100644 --- a/tools/dom/idl/dart/dart.idl +++ b/tools/dom/idl/dart/dart.idl @@ -353,9 +353,6 @@ interface Window : EventTarget { [RaisesException] void scroll(long x, long y, optional Dictionary scrollOptions); }; -[DartSuppress] -interface Promise {}; - [DartSupplemental] interface CanvasRenderingContext2D { [DartSuppress] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy); diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py index d8ecaa20545d..37117e76b613 100644 --- a/tools/dom/scripts/generator.py +++ b/tools/dom/scripts/generator.py @@ -1154,6 +1154,7 @@ def TypedListTypeData(item_type): 'ClientRect': TypeData(clazz='Interface', dart_type='Rectangle', suppress_interface=True), 'Date': TypeData(clazz='Primitive', dart_type='DateTime', native_type='double'), + 'Promise': TypeData(clazz='Primitive', dart_type='Future', native_type='ScriptPromise'), 'DOMObject': TypeData(clazz='Primitive', dart_type='Object', native_type='ScriptValue'), 'DOMString': TypeData(clazz='Primitive', dart_type='String', native_type='String'), # TODO(vsm): This won't actually work until we convert the Map to diff --git a/tools/dom/scripts/htmlrenamer.py b/tools/dom/scripts/htmlrenamer.py index 0e40253b5e26..1bc0077faeed 100644 --- a/tools/dom/scripts/htmlrenamer.py +++ b/tools/dom/scripts/htmlrenamer.py @@ -189,6 +189,12 @@ private_html_members = monitored.Set('htmlrenamer.private_html_members', [ 'AudioContext.decodeAudioData', 'AudioNode.connect', + 'Cache.add', + 'Cache.delete', + 'Cache.keys', + 'Cache.match', + 'Cache.matchAll', + 'Cache.put', 'CanvasRenderingContext2D.arc', 'CanvasRenderingContext2D.drawImage', 'CanvasRenderingContext2D.getLineDash', @@ -298,6 +304,8 @@ 'IDBObjectStore.put', 'KeyboardEvent.initKeyboardEvent', 'KeyboardEvent.keyIdentifier', + 'MediaKeys.createSession', + 'MediaKeySession.update', 'MessageEvent.initMessageEvent', 'MouseEvent.initMouseEvent', 'MouseEvent.clientX', @@ -328,7 +336,7 @@ 'Screen.availLeft', 'Screen.availTop', 'Screen.availWidth', - 'ShadowRoot.applyAuthorStyles', + 'ServiceWorkerGlobalScope.fetch', 'ShadowRoot.resetStyleInheritance', 'Storage.clear', 'Storage.getItem', @@ -337,6 +345,14 @@ 'Storage.removeItem', 'Storage.setItem', 'StorageEvent.initStorageEvent', + 'SubtleCrypto.encrypt', + 'SubtleCrypto.decrypt', + 'SubtleCrypto.sign', + 'SubtleCrypto.digest', + 'SubtleCrypto.importKey', + 'SubtleCrypto.unwrapKey', + 'ShadowRoot.applyAuthorStyles', + 'TextEvent.initTextEvent', # TODO(leafp): These have been converted from int to double in Chrome 37. # client, page, and screen were already special cased, adding radiusX/radiusY. From cf3d70227a3ea11956d74098569b616a0951890b Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Mon, 20 Oct 2014 21:00:49 +0000 Subject: [PATCH 58/91] Fix for file to URI mapping. R=brianwilkerson@google.com BUG= Review URL: https://codereview.chromium.org//665153002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41213 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analysis_server/lib/src/domain_execution.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/analysis_server/lib/src/domain_execution.dart b/pkg/analysis_server/lib/src/domain_execution.dart index 4c7714495c6f..d4c371ae7326 100644 --- a/pkg/analysis_server/lib/src/domain_execution.dart +++ b/pkg/analysis_server/lib/src/domain_execution.dart @@ -105,7 +105,7 @@ class ExecutionDomainHandler implements RequestHandler { 'file', 'Either file or uri must be provided, but not both'); } - Source source = server.getSource(path); + Source source = server.getSource(params.file); String uri = context.sourceFactory.restoreUri(source).toString(); return new ExecutionMapUriResult(uri: uri).toResponse(request.id); } else if (params.uri != null) { From 89978808cdfddb790c5fa384078cae236341ccc3 Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Mon, 20 Oct 2014 21:26:09 +0000 Subject: [PATCH 59/91] Issue 21238. Fix for NPE in occurrences computer when FieldFormalParameterElement references unresolved field. R=brianwilkerson@google.com BUG= https://code.google.com/p/dart/issues/detail?id=21238 Review URL: https://codereview.chromium.org//668763002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41215 260f80e4-7a28-3924-810f-c04153c831b5 --- .../lib/src/computer/computer_occurrences.dart | 2 +- .../test/analysis/notification_occurrences_test.dart | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/analysis_server/lib/src/computer/computer_occurrences.dart b/pkg/analysis_server/lib/src/computer/computer_occurrences.dart index a4d53e0bfcc9..d1c941f9cf27 100644 --- a/pkg/analysis_server/lib/src/computer/computer_occurrences.dart +++ b/pkg/analysis_server/lib/src/computer/computer_occurrences.dart @@ -37,10 +37,10 @@ class DartUnitOccurrencesComputer { } void _addOccurrence(Element element, int offset) { + element = _canonicalizeElement(element); if (element == null || element == DynamicElementImpl.instance) { return; } - element = _canonicalizeElement(element); List offsets = _elementsOffsets[element]; if (offsets == null) { offsets = []; diff --git a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart index 34fcac71b031..7daf84dbedfb 100644 --- a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart +++ b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart @@ -136,6 +136,16 @@ class A { }); } + test_field_unresolved() { + addTestFile(''' +class A { + A(this.noSuchField); +} +'''); + // no checks for occurrences, just ensure that there is no NPE + return prepareOccurrences(); + } + test_localVariable() { addTestFile(''' main() { From 357d100aba09de5b566d531592b1146f5451f34a Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Mon, 20 Oct 2014 22:11:36 +0000 Subject: [PATCH 60/91] Fix java-based analyzer status for test modifications in r41054. R=brianwilkerson@google.com Review URL: https://codereview.chromium.org//665823005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41216 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/language/language_analyzer.status | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/language/language_analyzer.status b/tests/language/language_analyzer.status index 5c2c465da0eb..2c5db5a58053 100644 --- a/tests/language/language_analyzer.status +++ b/tests/language/language_analyzer.status @@ -461,6 +461,7 @@ compile_time_constant10_test/none: CompileTimeError # Issue 21177 # Issue 16391. These tests are supposed to produce a compile time # error in checked mode, but they don't: [ $compiler == dartanalyzer && $checked ] +assign_static_type_test/02: MissingCompileTimeError # Issue 16391 compile_time_constant_checked2_test/02: MissingCompileTimeError # Issue 16391 compile_time_constant_checked2_test/03: MissingCompileTimeError # Issue 16391 compile_time_constant_checked2_test/04: MissingCompileTimeError # Issue 16391 @@ -485,4 +486,5 @@ const_constructor3_test/02: MissingCompileTimeError # Issue 16391 const_constructor3_test/04: MissingCompileTimeError # Issue 16391 const_init2_test/02: MissingCompileTimeError # Issue 16391 malformed2_test/01: MissingCompileTimeError # Issue 16391 -type_check_const_function_typedef2_test/00: MissingCompileTimeError # Issue 16391 \ No newline at end of file +type_check_const_function_typedef2_test/00: MissingCompileTimeError # Issue 16391 +type_parameter_test/05: MissingCompileTimeError # Issue 16391 From ede485669b76c02f3b3ac835d46fddf64d3f6f1b Mon Sep 17 00:00:00 2001 From: "koda@google.com" Date: Tue, 21 Oct 2014 00:15:43 +0000 Subject: [PATCH 61/91] Fix test timeout; faster DEBUG String::CharAt by not using mutable accessor. BUG=dart:21343 R=iposva@google.com Review URL: https://codereview.chromium.org//666993002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41218 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/object.cc | 9 ++++----- runtime/vm/object.h | 10 ++++++---- tests/language/language.status | 1 - 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc index ad6f741cc3be..2177c1ea22c3 100644 --- a/runtime/vm/object.cc +++ b/runtime/vm/object.cc @@ -17040,18 +17040,17 @@ intptr_t String::Hash(const int32_t* characters, intptr_t len) { uint16_t String::CharAt(intptr_t index) const { intptr_t class_id = raw()->GetClassId(); ASSERT(RawObject::IsStringClassId(class_id)); - NoGCScope no_gc; if (class_id == kOneByteStringCid) { - return *OneByteString::CharAddr(*this, index); + return OneByteString::CharAt(*this, index); } if (class_id == kTwoByteStringCid) { - return *TwoByteString::CharAddr(*this, index); + return TwoByteString::CharAt(*this, index); } if (class_id == kExternalOneByteStringCid) { - return *ExternalOneByteString::CharAddr(*this, index); + return ExternalOneByteString::CharAt(*this, index); } ASSERT(class_id == kExternalTwoByteStringCid); - return *ExternalTwoByteString::CharAddr(*this, index); + return ExternalTwoByteString::CharAt(*this, index); } diff --git a/runtime/vm/object.h b/runtime/vm/object.h index 3dcded6e4f9e..6c34fbc91a07 100644 --- a/runtime/vm/object.h +++ b/runtime/vm/object.h @@ -5841,8 +5841,9 @@ class String : public Instance { class OneByteString : public AllStatic { public: static uint16_t CharAt(const String& str, intptr_t index) { - NoGCScope no_gc; - return *CharAddr(str, index); + ASSERT((index >= 0) && (index < str.Length())); + ASSERT(str.IsOneByteString()); + return raw_ptr(str)->data()[index]; } static void SetCharAt(const String& str, intptr_t index, uint8_t code_unit) { @@ -5971,8 +5972,9 @@ class OneByteString : public AllStatic { class TwoByteString : public AllStatic { public: static uint16_t CharAt(const String& str, intptr_t index) { - NoGCScope no_gc; - return *CharAddr(str, index); + ASSERT((index >= 0) && (index < str.Length())); + ASSERT(str.IsTwoByteString()); + return raw_ptr(str)->data()[index]; } static void SetCharAt(const String& str, intptr_t index, uint16_t ch) { diff --git a/tests/language/language.status b/tests/language/language.status index 71b2a24f2e68..1b4afdff5906 100644 --- a/tests/language/language.status +++ b/tests/language/language.status @@ -63,7 +63,6 @@ least_upper_bound_expansive_test/*: Fail, OK [ $compiler == none && $runtime == vm ] class_keyword_test/02: MissingCompileTimeError # Issue 13627 -large_class_declaration_test: Skip # Issue 21343 unicode_bom_test: Fail # Issue 16067 [ $compiler == none && $checked ] From 86c53f3761db0508fcffb387483f723394be60dc Mon Sep 17 00:00:00 2001 From: "ajohnsen@google.com" Date: Tue, 21 Oct 2014 06:06:19 +0000 Subject: [PATCH 62/91] Mac no longer fire bogus events. Fix Mac watcher. This is a re-apply of r37162. BUG= R=nweiz@google.com Review URL: https://codereview.chromium.org//621813002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41220 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/watcher/CHANGELOG.md | 4 ++ .../lib/src/directory_watcher/mac_os.dart | 72 ++----------------- pkg/watcher/pubspec.yaml | 4 +- 3 files changed, 12 insertions(+), 68 deletions(-) diff --git a/pkg/watcher/CHANGELOG.md b/pkg/watcher/CHANGELOG.md index eb544f61e018..175a86025bd8 100644 --- a/pkg/watcher/CHANGELOG.md +++ b/pkg/watcher/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.9.4 + +* Remove delay-fixes in MacOSDirectoryWatcher, by depending on sdk 1.6. + # 0.9.3 * Improved support for Windows via `WindowsDirectoryWatcher`. diff --git a/pkg/watcher/lib/src/directory_watcher/mac_os.dart b/pkg/watcher/lib/src/directory_watcher/mac_os.dart index e3efa2dd64bc..65f07fa92c62 100644 --- a/pkg/watcher/lib/src/directory_watcher/mac_os.dart +++ b/pkg/watcher/lib/src/directory_watcher/mac_os.dart @@ -73,30 +73,15 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { /// a subdirectory that was moved into the watched directory. StreamSubscription _listSubscription; - /// The timer for tracking how long we wait for an initial batch of bogus - /// events (see issue 14373). - Timer _bogusEventTimer; - _MacOSDirectoryWatcher(String directory, int parentId) : directory = directory, _files = new PathSet(directory), _id = "$parentId/${_count++}" { - _startWatch(); - - // Before we're ready to emit events, wait for [_listDir] to complete and - // for enough time to elapse that if bogus events (issue 14373) would be - // emitted, they will be. - // - // If we do receive a batch of events, [_onBatch] will ensure that these - // futures don't fire and that the directory is re-listed. - Future.wait([ - _listDir().then((_) { - if (MacOSDirectoryWatcher.logDebugInfo) { - print("[$_id] finished initial directory list"); - } - }), - _waitForBogusEvents() - ]).then((_) { + _listDir().then((_) { + if (MacOSDirectoryWatcher.logDebugInfo) { + print("[$_id] finished initial directory list"); + } + _startWatch(); if (MacOSDirectoryWatcher.logDebugInfo) { print("[$_id] watcher is ready, known files:"); for (var file in _files.toSet()) { @@ -134,29 +119,6 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { } } - // If we get a batch of events before we're ready to begin emitting events, - // it's probable that it's a batch of pre-watcher events (see issue 14373). - // Ignore those events and re-list the directory. - if (!isReady) { - if (MacOSDirectoryWatcher.logDebugInfo) { - print("[$_id] not ready to emit events, re-listing directory"); - } - - // Cancel the timer because bogus events only occur in the first batch, so - // we can fire [ready] as soon as we're done listing the directory. - _bogusEventTimer.cancel(); - _listDir().then((_) { - if (MacOSDirectoryWatcher.logDebugInfo) { - print("[$_id] watcher is ready, known files:"); - for (var file in _files.toSet()) { - print("[$_id] ${p.relative(file, from: directory)}"); - } - } - _readyCompleter.complete(); - }); - return; - } - _sortEvents(batch).forEach((path, events) { var relativePath = p.relative(path, from: directory); if (MacOSDirectoryWatcher.logDebugInfo) { @@ -392,17 +354,6 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { _watchSubscription = null; - // If the directory still exists and we're still expecting bogus events, - // this is probably issue 14849 rather than a real close event. We should - // just restart the watcher. - if (!isReady && new Directory(directory).existsSync()) { - if (MacOSDirectoryWatcher.logDebugInfo) { - print("[$_id] fake closure (issue 14849), re-opening stream"); - } - _startWatch(); - return; - } - // FSEvents can fail to report the contents of the directory being removed // when the directory itself is removed, so we need to manually mark the // files as removed. @@ -442,19 +393,6 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { return completer.future; } - /// Wait 200ms for a batch of bogus events (issue 14373) to come in. - /// - /// 200ms is short in terms of human interaction, but longer than any Mac OS - /// watcher tests take on the bots, so it should be safe to assume that any - /// bogus events will be signaled in that time frame. - Future _waitForBogusEvents() { - var completer = new Completer(); - _bogusEventTimer = new Timer( - new Duration(milliseconds: 200), - completer.complete); - return completer.future; - } - /// Emit an event with the given [type] and [path]. void _emitEvent(ChangeType type, String path) { if (!isReady) return; diff --git a/pkg/watcher/pubspec.yaml b/pkg/watcher/pubspec.yaml index 6f96a56a595b..473e1c96250d 100644 --- a/pkg/watcher/pubspec.yaml +++ b/pkg/watcher/pubspec.yaml @@ -1,5 +1,5 @@ name: watcher -version: 0.9.3 +version: 0.9.4 author: Dart Team homepage: http://www.dartlang.org description: > @@ -13,3 +13,5 @@ dependencies: dev_dependencies: scheduled_test: '>=0.9.3 <0.12.0' unittest: '>=0.9.2 <0.12.0' +environment: + sdk: ">=1.6.0 <2.0.0" From c2475ab89785906ea2412b0ff1eb1627ef70e9c5 Mon Sep 17 00:00:00 2001 From: "ajohnsen@google.com" Date: Tue, 21 Oct 2014 07:43:59 +0000 Subject: [PATCH 63/91] Revert "Mac no longer fire bogus events. Fix Mac watcher." BUG= Review URL: https://codereview.chromium.org//670653003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41221 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/watcher/CHANGELOG.md | 4 -- .../lib/src/directory_watcher/mac_os.dart | 72 +++++++++++++++++-- pkg/watcher/pubspec.yaml | 4 +- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/pkg/watcher/CHANGELOG.md b/pkg/watcher/CHANGELOG.md index 175a86025bd8..eb544f61e018 100644 --- a/pkg/watcher/CHANGELOG.md +++ b/pkg/watcher/CHANGELOG.md @@ -1,7 +1,3 @@ -# 0.9.4 - -* Remove delay-fixes in MacOSDirectoryWatcher, by depending on sdk 1.6. - # 0.9.3 * Improved support for Windows via `WindowsDirectoryWatcher`. diff --git a/pkg/watcher/lib/src/directory_watcher/mac_os.dart b/pkg/watcher/lib/src/directory_watcher/mac_os.dart index 65f07fa92c62..e3efa2dd64bc 100644 --- a/pkg/watcher/lib/src/directory_watcher/mac_os.dart +++ b/pkg/watcher/lib/src/directory_watcher/mac_os.dart @@ -73,15 +73,30 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { /// a subdirectory that was moved into the watched directory. StreamSubscription _listSubscription; + /// The timer for tracking how long we wait for an initial batch of bogus + /// events (see issue 14373). + Timer _bogusEventTimer; + _MacOSDirectoryWatcher(String directory, int parentId) : directory = directory, _files = new PathSet(directory), _id = "$parentId/${_count++}" { - _listDir().then((_) { - if (MacOSDirectoryWatcher.logDebugInfo) { - print("[$_id] finished initial directory list"); - } - _startWatch(); + _startWatch(); + + // Before we're ready to emit events, wait for [_listDir] to complete and + // for enough time to elapse that if bogus events (issue 14373) would be + // emitted, they will be. + // + // If we do receive a batch of events, [_onBatch] will ensure that these + // futures don't fire and that the directory is re-listed. + Future.wait([ + _listDir().then((_) { + if (MacOSDirectoryWatcher.logDebugInfo) { + print("[$_id] finished initial directory list"); + } + }), + _waitForBogusEvents() + ]).then((_) { if (MacOSDirectoryWatcher.logDebugInfo) { print("[$_id] watcher is ready, known files:"); for (var file in _files.toSet()) { @@ -119,6 +134,29 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { } } + // If we get a batch of events before we're ready to begin emitting events, + // it's probable that it's a batch of pre-watcher events (see issue 14373). + // Ignore those events and re-list the directory. + if (!isReady) { + if (MacOSDirectoryWatcher.logDebugInfo) { + print("[$_id] not ready to emit events, re-listing directory"); + } + + // Cancel the timer because bogus events only occur in the first batch, so + // we can fire [ready] as soon as we're done listing the directory. + _bogusEventTimer.cancel(); + _listDir().then((_) { + if (MacOSDirectoryWatcher.logDebugInfo) { + print("[$_id] watcher is ready, known files:"); + for (var file in _files.toSet()) { + print("[$_id] ${p.relative(file, from: directory)}"); + } + } + _readyCompleter.complete(); + }); + return; + } + _sortEvents(batch).forEach((path, events) { var relativePath = p.relative(path, from: directory); if (MacOSDirectoryWatcher.logDebugInfo) { @@ -354,6 +392,17 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { _watchSubscription = null; + // If the directory still exists and we're still expecting bogus events, + // this is probably issue 14849 rather than a real close event. We should + // just restart the watcher. + if (!isReady && new Directory(directory).existsSync()) { + if (MacOSDirectoryWatcher.logDebugInfo) { + print("[$_id] fake closure (issue 14849), re-opening stream"); + } + _startWatch(); + return; + } + // FSEvents can fail to report the contents of the directory being removed // when the directory itself is removed, so we need to manually mark the // files as removed. @@ -393,6 +442,19 @@ class _MacOSDirectoryWatcher implements ManuallyClosedDirectoryWatcher { return completer.future; } + /// Wait 200ms for a batch of bogus events (issue 14373) to come in. + /// + /// 200ms is short in terms of human interaction, but longer than any Mac OS + /// watcher tests take on the bots, so it should be safe to assume that any + /// bogus events will be signaled in that time frame. + Future _waitForBogusEvents() { + var completer = new Completer(); + _bogusEventTimer = new Timer( + new Duration(milliseconds: 200), + completer.complete); + return completer.future; + } + /// Emit an event with the given [type] and [path]. void _emitEvent(ChangeType type, String path) { if (!isReady) return; diff --git a/pkg/watcher/pubspec.yaml b/pkg/watcher/pubspec.yaml index 473e1c96250d..6f96a56a595b 100644 --- a/pkg/watcher/pubspec.yaml +++ b/pkg/watcher/pubspec.yaml @@ -1,5 +1,5 @@ name: watcher -version: 0.9.4 +version: 0.9.3 author: Dart Team homepage: http://www.dartlang.org description: > @@ -13,5 +13,3 @@ dependencies: dev_dependencies: scheduled_test: '>=0.9.3 <0.12.0' unittest: '>=0.9.2 <0.12.0' -environment: - sdk: ">=1.6.0 <2.0.0" From 97c48a58426a608890da4e1655094fa91b956cdc Mon Sep 17 00:00:00 2001 From: "johnniwinther@google.com" Date: Tue, 21 Oct 2014 10:34:45 +0000 Subject: [PATCH 64/91] Fix typemask bug. * Enforce normalization of typemasks * Improves message on assertion failure BUG= R=floitsch@google.com Review URL: https://codereview.chromium.org//662513006 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41222 260f80e4-7a28-3924-810f-c04153c831b5 --- .../inferrer/type_graph_inferrer.dart | 6 +-- .../compiler/implementation/ssa/optimize.dart | 2 +- .../implementation/types/flat_type_mask.dart | 45 +++++++++---------- .../implementation/types/type_mask.dart | 45 +++++++++++++++---- .../implementation/types/union_type_mask.dart | 4 +- 5 files changed, 64 insertions(+), 38 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart b/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart index 4fe4e1713921..4e2afbd109fe 100644 --- a/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart +++ b/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart @@ -252,7 +252,7 @@ class TypeInformationSystem extends TypeSystem { if (otherType.isNullable && otherType.containsAll(classWorld)) { return receiver; } - assert(TypeMask.isNormalized(otherType, classWorld)); + assert(TypeMask.assertIsNormalized(otherType, classWorld)); TypeInformation newType = new NarrowTypeInformation(receiver, otherType); allocatedTypes.add(newType); return newType; @@ -280,7 +280,7 @@ class TypeInformationSystem extends TypeSystem { if (type.type.isExact) { return type; } else { - assert(TypeMask.isNormalized(otherType, classWorld)); + assert(TypeMask.assertIsNormalized(otherType, classWorld)); TypeInformation newType = new NarrowTypeInformation(type, otherType); allocatedTypes.add(newType); return newType; @@ -790,7 +790,7 @@ class TypeGraphInferrerEngine // the old type around to ensure that we get a complete view // of the type graph and do not drop any flow edges. TypeMask refinedType = value.computeMask(compiler); - assert(TypeMask.isNormalized(refinedType, classWorld)); + assert(TypeMask.assertIsNormalized(refinedType, classWorld)); type = new NarrowTypeInformation(type, refinedType); types.allocatedTypes.add(type); } diff --git a/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart b/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart index bf9f3bb42d80..28f0632fd1ad 100644 --- a/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart +++ b/sdk/lib/_internal/compiler/implementation/ssa/optimize.dart @@ -634,7 +634,7 @@ class SsaInstructionSimplifier extends HBaseVisitor // raw type. } else if (!RuntimeTypes.hasTypeArguments(type)) { TypeMask expressionMask = expression.instructionType; - assert(TypeMask.isNormalized(expressionMask, classWorld)); + assert(TypeMask.assertIsNormalized(expressionMask, classWorld)); TypeMask typeMask = (element == compiler.nullClass) ? new TypeMask.subtype(element, classWorld) : new TypeMask.nonNullSubtype(element, classWorld); diff --git a/sdk/lib/_internal/compiler/implementation/types/flat_type_mask.dart b/sdk/lib/_internal/compiler/implementation/types/flat_type_mask.dart index 9975c28a2b51..91023a36232f 100644 --- a/sdk/lib/_internal/compiler/implementation/types/flat_type_mask.dart +++ b/sdk/lib/_internal/compiler/implementation/types/flat_type_mask.dart @@ -43,7 +43,7 @@ class FlatTypeMask implements TypeMask { /** * Ensures that the generated mask is normalized, i.e., a call to - * [TypeMask.isNormalized] with the factory's result returns `true`. + * [TypeMask.assertIsNormalized] with the factory's result returns `true`. */ factory FlatTypeMask.normalized(ClassElement base, int flags, World world) { if ((flags >> 1) == EMPTY || ((flags >> 1) == EXACT)) { @@ -240,8 +240,8 @@ class FlatTypeMask implements TypeMask { TypeMask union(TypeMask other, ClassWorld classWorld) { assert(other != null); - assert(TypeMask.isNormalized(this, classWorld)); - assert(TypeMask.isNormalized(other, classWorld)); + assert(TypeMask.assertIsNormalized(this, classWorld)); + assert(TypeMask.assertIsNormalized(other, classWorld)); if (other is! FlatTypeMask) return other.union(this, classWorld); FlatTypeMask flatOther = other; if (isEmpty) { @@ -265,8 +265,8 @@ class FlatTypeMask implements TypeMask { TypeMask unionSame(FlatTypeMask other, ClassWorld classWorld) { assert(base == other.base); - assert(TypeMask.isNormalized(this, classWorld)); - assert(TypeMask.isNormalized(other, classWorld)); + assert(TypeMask.assertIsNormalized(this, classWorld)); + assert(TypeMask.assertIsNormalized(other, classWorld)); // The two masks share the base type, so we must chose the least // constraining kind (the highest) of the two. If either one of // the masks are nullable the result should be nullable too. @@ -279,15 +279,15 @@ class FlatTypeMask implements TypeMask { } else if (other.flags == combined) { return other; } else { - return new FlatTypeMask.internal(base, combined); + return new FlatTypeMask.normalized(base, combined, classWorld); } } TypeMask unionStrictSubclass(FlatTypeMask other, ClassWorld classWorld) { assert(base != other.base); assert(classWorld.isSubclassOf(other.base, base)); - assert(TypeMask.isNormalized(this, classWorld)); - assert(TypeMask.isNormalized(other, classWorld)); + assert(TypeMask.assertIsNormalized(this, classWorld)); + assert(TypeMask.assertIsNormalized(other, classWorld)); int combined; if ((isExact && other.isExact) || base == classWorld.objectClass) { // Since the other mask is a subclass of this mask, we need the @@ -305,9 +305,7 @@ class FlatTypeMask implements TypeMask { // If we weaken the constraint on this type, we have to make sure that // the result is normalized. return (flags != combined) - ? (combined >> 1 == flags >> 1) - ? new FlatTypeMask.internal(base, combined) - : new FlatTypeMask.normalized(base, combined, classWorld) + ? new FlatTypeMask.normalized(base, combined, classWorld) : this; } @@ -315,8 +313,8 @@ class FlatTypeMask implements TypeMask { assert(base != other.base); assert(!classWorld.isSubclassOf(other.base, base)); assert(classWorld.isSubtypeOf(other.base, base)); - assert(TypeMask.isNormalized(this, classWorld)); - assert(TypeMask.isNormalized(other, classWorld)); + assert(TypeMask.assertIsNormalized(this, classWorld)); + assert(TypeMask.assertIsNormalized(other, classWorld)); // Since the other mask is a subtype of this mask, we need the // resulting union to be a subtype too. If either one of the masks // are nullable the result should be nullable too. @@ -324,22 +322,22 @@ class FlatTypeMask implements TypeMask { // We know there is at least one subtype, [other.base], so no need // to normalize. return (flags != combined) - ? new FlatTypeMask.internal(base, combined) + ? new FlatTypeMask.normalized(base, combined, classWorld) : this; } TypeMask intersection(TypeMask other, ClassWorld classWorld) { assert(other != null); if (other is! FlatTypeMask) return other.intersection(this, classWorld); - assert(TypeMask.isNormalized(this, classWorld)); - assert(TypeMask.isNormalized(other, classWorld)); + assert(TypeMask.assertIsNormalized(this, classWorld)); + assert(TypeMask.assertIsNormalized(other, classWorld)); FlatTypeMask flatOther = other; if (isEmpty) { return flatOther.isNullable ? this : nonNullable(); } else if (flatOther.isEmpty) { return isNullable ? flatOther : other.nonNullable(); } else if (base == flatOther.base) { - return intersectionSame(flatOther); + return intersectionSame(flatOther, classWorld); } else if (classWorld.isSubclassOf(flatOther.base, base)) { return intersectionStrictSubclass(flatOther, classWorld); } else if (classWorld.isSubclassOf(base, flatOther.base)) { @@ -353,7 +351,7 @@ class FlatTypeMask implements TypeMask { } } - TypeMask intersectionSame(FlatTypeMask other) { + TypeMask intersectionSame(FlatTypeMask other, ClassWorld classWorld) { assert(base == other.base); // The two masks share the base type, so we must chose the most // constraining kind (the lowest) of the two. Only if both masks @@ -367,13 +365,14 @@ class FlatTypeMask implements TypeMask { } else if (other.flags == combined) { return other; } else { - return new FlatTypeMask.internal(base, combined); + return new FlatTypeMask.normalized(base, combined, classWorld); } } - TypeMask intersectionStrictSubclass(FlatTypeMask other, ClassWorld world) { + TypeMask intersectionStrictSubclass(FlatTypeMask other, + ClassWorld classWorld) { assert(base != other.base); - assert(world.isSubclassOf(other.base, base)); + assert(classWorld.isSubclassOf(other.base, base)); // If this mask isn't at least a subclass mask, then the // intersection with the other mask is empty. if (isExact) return intersectionEmpty(other); @@ -386,7 +385,7 @@ class FlatTypeMask implements TypeMask { if (other.flags == combined) { return other; } else { - return new FlatTypeMask.internal(other.base, combined); + return new FlatTypeMask.normalized(other.base, combined, classWorld); } } @@ -404,7 +403,7 @@ class FlatTypeMask implements TypeMask { if (other.flags == combined) { return other; } else { - return new FlatTypeMask.internal(other.base, combined); + return new FlatTypeMask.normalized(other.base, combined, classWorld); } } diff --git a/sdk/lib/_internal/compiler/implementation/types/type_mask.dart b/sdk/lib/_internal/compiler/implementation/types/type_mask.dart index 478f14ff1c9a..bb97a15392d7 100644 --- a/sdk/lib/_internal/compiler/implementation/types/type_mask.dart +++ b/sdk/lib/_internal/compiler/implementation/types/type_mask.dart @@ -101,25 +101,52 @@ abstract class TypeMask { } /** - * Checks whether this mask uses the smallest possible representation for + * Asserts that this mask uses the smallest possible representation for * its types. Currently, we normalize subtype and subclass to exact if no * subtypes or subclasses are present and subtype to subclass if only * subclasses exist. We also normalize exact to empty if the corresponding * baseclass was never instantiated. */ - static bool isNormalized(TypeMask mask, ClassWorld classWorld) { + static bool assertIsNormalized(TypeMask mask, ClassWorld classWorld) { + String reason = getNotNormalizedReason(mask, classWorld); + return invariant(NO_LOCATION_SPANNABLE, reason == null, + message: () => '$mask is not normalized: $reason'); + } + + static String getNotNormalizedReason(TypeMask mask, ClassWorld classWorld) { mask = nonForwardingMask(mask); if (mask is FlatTypeMask) { - if (mask.isEmpty) return true; - if (mask.isExact) return classWorld.isInstantiated(mask.base); - if (mask.isSubclass) return classWorld.hasAnySubclass(mask.base); + if (mask.isEmpty) return null; + if (mask.isExact) { + if (!classWorld.isInstantiated(mask.base)) { + return 'Exact ${mask.base} is not instantiated.'; + } + return null; + } + if (mask.isSubclass) { + if (!classWorld.hasAnySubclass(mask.base)) { + return 'Subclass ${mask.base} does not have any subclasses.'; + } + return null; + } assert(mask.isSubtype); - return classWorld.hasAnySubtype(mask.base) && - !classWorld.hasOnlySubclasses(mask.base); + if (!classWorld.hasAnySubtype(mask.base)) { + return 'Subtype ${mask.base} does not have any subclasses.'; + } + if (classWorld.hasOnlySubclasses(mask.base)) { + return 'Subtype ${mask.base} only has subclasses.'; + } + return null; } else if (mask is UnionTypeMask) { - return mask.disjointMasks.every((mask) => isNormalized(mask, classWorld)); + for (TypeMask submask in mask.disjointMasks) { + String submaskReason = getNotNormalizedReason(submask, classWorld); + if (submaskReason != null) { + return 'Submask $submask in $mask: $submaskReason.'; + } + } + return null; } - return false; + return 'Unknown type mask $mask.'; } /** diff --git a/sdk/lib/_internal/compiler/implementation/types/union_type_mask.dart b/sdk/lib/_internal/compiler/implementation/types/union_type_mask.dart index 083cf7ff016b..0ad1cc670952 100644 --- a/sdk/lib/_internal/compiler/implementation/types/union_type_mask.dart +++ b/sdk/lib/_internal/compiler/implementation/types/union_type_mask.dart @@ -15,7 +15,7 @@ class UnionTypeMask implements TypeMask { } static TypeMask unionOf(Iterable masks, ClassWorld classWorld) { - assert(masks.every((mask) => TypeMask.isNormalized(mask, classWorld))); + assert(masks.every((mask) => TypeMask.assertIsNormalized(mask, classWorld))); List disjoint = []; unionOfHelper(masks, disjoint, classWorld); if (disjoint.isEmpty) return new TypeMask.nonNullEmpty(); @@ -24,7 +24,7 @@ class UnionTypeMask implements TypeMask { } if (disjoint.length == 1) return disjoint[0]; UnionTypeMask union = new UnionTypeMask._internal(disjoint); - assert(TypeMask.isNormalized(union, classWorld)); + assert(TypeMask.assertIsNormalized(union, classWorld)); return union; } From c6e26500736328d82d624f5537ad50a68ef6c15c Mon Sep 17 00:00:00 2001 From: "fschneider@google.com" Date: Tue, 21 Oct 2014 10:36:52 +0000 Subject: [PATCH 65/91] VM: Avoid repeated deoptimizations from hoisted array bounds checks. R=vegorov@google.com Review URL: https://codereview.chromium.org//662543003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41223 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/flow_graph_optimizer.cc | 4 ++-- runtime/vm/intermediate_language.h | 5 ++++- runtime/vm/intermediate_language_arm.cc | 4 +++- runtime/vm/intermediate_language_arm64.cc | 4 +++- runtime/vm/intermediate_language_ia32.cc | 4 +++- runtime/vm/intermediate_language_mips.cc | 4 +++- runtime/vm/intermediate_language_x64.cc | 4 +++- 7 files changed, 21 insertions(+), 8 deletions(-) diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc index 6cdc56e498da..2e0c46716c40 100644 --- a/runtime/vm/flow_graph_optimizer.cc +++ b/runtime/vm/flow_graph_optimizer.cc @@ -5046,9 +5046,9 @@ void LICM::Hoist(ForwardInstructionIterator* it, current->AsCheckSmi()->set_licm_hoisted(true); } else if (current->IsCheckEitherNonSmi()) { current->AsCheckEitherNonSmi()->set_licm_hoisted(true); + } else if (current->IsCheckArrayBound()) { + current->AsCheckArrayBound()->set_licm_hoisted(true); } - // TODO(fschneider): Avoid repeated deoptimization when - // speculatively hoisting checks. if (FLAG_trace_optimization) { OS::Print("Hoisting instruction %s:%" Pd " from B%" Pd " to B%" Pd "\n", current->DebugName(), diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h index 2f46de57edce..3dc20d528ffe 100644 --- a/runtime/vm/intermediate_language.h +++ b/runtime/vm/intermediate_language.h @@ -7946,7 +7946,7 @@ class CheckClassIdInstr : public TemplateInstruction<1> { class CheckArrayBoundInstr : public TemplateInstruction<2> { public: CheckArrayBoundInstr(Value* length, Value* index, intptr_t deopt_id) - : generalized_(false) { + : generalized_(false), licm_hoisted_(false) { SetInputAt(kLengthPos, length); SetInputAt(kIndexPos, index); // Override generated deopt-id. @@ -7982,6 +7982,8 @@ class CheckArrayBoundInstr : public TemplateInstruction<2> { virtual bool MayThrow() const { return false; } + void set_licm_hoisted(bool value) { licm_hoisted_ = value; } + // Give a name to the location/input indices. enum { kLengthPos = 0, @@ -7990,6 +7992,7 @@ class CheckArrayBoundInstr : public TemplateInstruction<2> { private: bool generalized_; + bool licm_hoisted_; DISALLOW_COPY_AND_ASSIGN(CheckArrayBoundInstr); }; diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc index a6f1c76ef130..f7b10687d8c9 100644 --- a/runtime/vm/intermediate_language_arm.cc +++ b/runtime/vm/intermediate_language_arm.cc @@ -5931,10 +5931,12 @@ LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate, void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + uint32_t flags = generalized_ ? ICData::kGeneralized : 0; + flags |= licm_hoisted_ ? ICData::kHoisted : 0; Label* deopt = compiler->AddDeoptStub( deopt_id(), ICData::kDeoptCheckArrayBound, - generalized_ ? ICData::kGeneralized : 0); + flags); Location length_loc = locs()->in(kLengthPos); Location index_loc = locs()->in(kIndexPos); diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc index 7492ab47baaa..264dec03df0c 100644 --- a/runtime/vm/intermediate_language_arm64.cc +++ b/runtime/vm/intermediate_language_arm64.cc @@ -5132,10 +5132,12 @@ LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate, void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + uint32_t flags = generalized_ ? ICData::kGeneralized : 0; + flags |= licm_hoisted_ ? ICData::kHoisted : 0; Label* deopt = compiler->AddDeoptStub( deopt_id(), ICData::kDeoptCheckArrayBound, - generalized_ ? ICData::kGeneralized : 0); + flags); Location length_loc = locs()->in(kLengthPos); Location index_loc = locs()->in(kIndexPos); diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc index 6d83aff95493..80002c2e5059 100644 --- a/runtime/vm/intermediate_language_ia32.cc +++ b/runtime/vm/intermediate_language_ia32.cc @@ -5590,10 +5590,12 @@ LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate, void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + uint32_t flags = generalized_ ? ICData::kGeneralized : 0; + flags |= licm_hoisted_ ? ICData::kHoisted : 0; Label* deopt = compiler->AddDeoptStub( deopt_id(), ICData::kDeoptCheckArrayBound, - generalized_ ? ICData::kGeneralized : 0); + flags); Location length_loc = locs()->in(kLengthPos); Location index_loc = locs()->in(kIndexPos); diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc index 2388a056f233..eb98286bc310 100644 --- a/runtime/vm/intermediate_language_mips.cc +++ b/runtime/vm/intermediate_language_mips.cc @@ -4453,10 +4453,12 @@ LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate, void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + uint32_t flags = generalized_ ? ICData::kGeneralized : 0; + flags |= licm_hoisted_ ? ICData::kHoisted : 0; Label* deopt = compiler->AddDeoptStub( deopt_id(), ICData::kDeoptCheckArrayBound, - generalized_ ? ICData::kGeneralized : 0); + flags); Location length_loc = locs()->in(kLengthPos); Location index_loc = locs()->in(kIndexPos); diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc index a7c31d932ddb..2cb998ae023e 100644 --- a/runtime/vm/intermediate_language_x64.cc +++ b/runtime/vm/intermediate_language_x64.cc @@ -5446,10 +5446,12 @@ LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Isolate* isolate, void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + uint32_t flags = generalized_ ? ICData::kGeneralized : 0; + flags |= licm_hoisted_ ? ICData::kHoisted : 0; Label* deopt = compiler->AddDeoptStub( deopt_id(), ICData::kDeoptCheckArrayBound, - generalized_ ? ICData::kGeneralized : 0); + flags); Location length_loc = locs()->in(kLengthPos); Location index_loc = locs()->in(kIndexPos); From 4a6ff2d67620dbd8d5bcd30c4ea491c1f5a1c979 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Tue, 21 Oct 2014 10:51:58 +0000 Subject: [PATCH 66/91] dart2js: Don't use 'init' as a marker for existing fields in makeConstantList. R=kasperl@google.com Review URL: https://codereview.chromium.org//660293003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41224 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/old_emitter/emitter.dart | 10 ++++++---- sdk/lib/_internal/compiler/js_lib/js_array.dart | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index 17f3fb57c588..0a0fc1ab103d 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -1002,13 +1002,15 @@ class OldEmitter implements Emitter { void emitMakeConstantList(CodeBuffer buffer) { buffer.write( jsAst.prettyPrint( + // Functions are stored in the hidden class and not as properties in + // the object. We never actually look at the value, but only want + // to know if the property exists. js.statement(r'''#.# = function(list) { - list.immutable$list = #; - list.fixed$length = #; + list.immutable$list = Array; + list.fixed$length = Array; return list; }''', - [namer.isolateName, makeConstListProperty, initName, - initName]), + [namer.isolateName, makeConstListProperty]), compiler, monitor: compiler.dumpInfoTask)); buffer.write(N); } diff --git a/sdk/lib/_internal/compiler/js_lib/js_array.dart b/sdk/lib/_internal/compiler/js_lib/js_array.dart index c817e1119ffd..23fbeca3f41e 100644 --- a/sdk/lib/_internal/compiler/js_lib/js_array.dart +++ b/sdk/lib/_internal/compiler/js_lib/js_array.dart @@ -70,7 +70,10 @@ class JSArray extends Interceptor implements List, JSIndexable { JS('JSExtendableArray', '#', new JSArray.typed(allocation)); static List markFixedList(List list) { - JS('void', r'#.fixed$length = init', list); + // Functions are stored in the hidden class and not as properties in + // the object. We never actually look at the value, but only want + // to know if the property exists. + JS('void', r'#.fixed$length = Array', list); return JS('JSFixedArray', '#', list); } From e820e5b21400585adf2583d4fa25e9b547130d7d Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Tue, 21 Oct 2014 10:55:35 +0000 Subject: [PATCH 67/91] dart2js: Use `Array` as marker value for constant lists in the new emitter. R=kasperl@google.com Review URL: https://codereview.chromium.org//667683003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41225 260f80e4-7a28-3924-810f-c04153c831b5 --- .../js_emitter/new_emitter/model_emitter.dart | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index 55bc05a0ca4d..88f4c0655521 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -451,8 +451,11 @@ final String boilerplate = r""" if (#) { // outputContainsConstantList function makeConstList(list) { - list.immutable$list = 1; - list.fixed$length = 1; + // By assigning a function to the properties they become part of the + // hidden class. The actual values of the fields don't matter, since we + // only check if they exist. + list.immutable$list = Array; + list.fixed$length = Array; return list; } } From f7db7794015d26db60caaac50987085134829cd4 Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Tue, 21 Oct 2014 13:02:37 +0000 Subject: [PATCH 68/91] Clean up scripts to run Java-based analyzer. sdk/bin/dartanalyzer_developer is renamed sdk/bin/dartanalyzer_java (replacing the old sdk/bin/dartanalyzer_java, which was unused), and the test infrastructure is modified to use sdk/bin/dartanalyzer_java to start the Java-based analyzer. This frees up sdk/bin/dartanallyzer_developer to be the --host-checked version of sdk/bin/dartanalyzer (paralleling what we do for /sdk/bin/dart2js_developer). R=ricow@google.com Review URL: https://codereview.chromium.org//668743003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41227 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/bin/dartanalyzer_developer | 66 +--------------- sdk/bin/dartanalyzer_developer.bat | 35 +++------ sdk/bin/dartanalyzer_java | 76 +++++++------------ sdk/bin/dartanalyzer_java.bat | 74 ++++++------------ .../testing/dart/compiler_configuration.dart | 7 +- 5 files changed, 62 insertions(+), 196 deletions(-) diff --git a/sdk/bin/dartanalyzer_developer b/sdk/bin/dartanalyzer_developer index db1b42da6cf1..0eeaf73dab7f 100755 --- a/sdk/bin/dartanalyzer_developer +++ b/sdk/bin/dartanalyzer_developer @@ -1,68 +1,6 @@ #!/bin/bash -# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +# Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. -# This file is used to execute the analyzer by running the jar file. -# It is a simple wrapper enabling us to have simpler command lines in -# the testing infrastructure. -set -e - -FOUND_BATCH=0 -for ARG in "$@" -do - case $ARG in - -batch|--batch) - FOUND_BATCH=1 - ;; - *) - ;; - esac -done - -function follow_links() { - file="$1" - while [ -h "$file" ]; do - # On Mac OS, readlink -f doesn't work. - file="$(readlink "$file")" - done - echo "$file" -} - -# Unlike $0, $BASH_SOURCE points to the absolute path of this file. -PROG_NAME="$(follow_links "$BASH_SOURCE")" - -# Handle the case where dart-sdk/bin has been symlinked to. -CUR_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" - -SDK_DIR="$(cd "${CUR_DIR}/.." ; pwd -P)" - -if [ -z "$DART_CONFIGURATION" ]; -then - DART_CONFIGURATION="ReleaseIA32" -fi - -if [ `uname` == 'Darwin' ]; -then - JAR_DIR="$CUR_DIR"/../../xcodebuild/$DART_CONFIGURATION/dartanalyzer -else - JAR_DIR="$CUR_DIR"/../../out/$DART_CONFIGURATION/dartanalyzer -fi - -JAR_FILE="$JAR_DIR/dartanalyzer.jar" - -EXTRA_JVMARGS="-Xss2M " -OS=`uname | tr "[A-Z]" "[a-z]"` -if [ "$OS" == "darwin" ] ; then - # Bump up the heap on Mac VMs, some of which default to 128M or less. - EXTRA_JVMARGS+=" -Xmx512M -client " -else - # On other architectures - # -batch invocations will do better with a server vm - # invocations for analyzing a single file do better with a client vm - if [ $FOUND_BATCH -eq 0 ] ; then - EXTRA_JVMARGS+=" -client " - fi -fi - -exec java $EXTRA_JVMARGS -jar "$JAR_FILE" --dart-sdk "$SDK_DIR" "$@" +. ${BASH_SOURCE%_developer} diff --git a/sdk/bin/dartanalyzer_developer.bat b/sdk/bin/dartanalyzer_developer.bat index fcea2aa6ee37..b560fe8d3c09 100644 --- a/sdk/bin/dartanalyzer_developer.bat +++ b/sdk/bin/dartanalyzer_developer.bat @@ -1,27 +1,10 @@ @echo off -rem Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file -rem for details. All rights reserved. Use of this source code is governed by a -rem BSD-style license that can be found in the LICENSE file. -rem - -rem This file is used to execute the analyzer by running the jar file. -rem It is a simple wrapper enabling us to have simpler command lines in -rem the testing infrastructure. - -set SCRIPTPATH=%~dp0 - -rem Does the path have a trailing slash? If so, remove it. -if %SCRIPTPATH:~-1%==\ set SCRIPTPATH=%SCRIPTPATH:~0,-1% - -rem DART_CONFIGURATION defaults to ReleaseIA32 -if "%DART_CONFIGURATION%"=="" set DART_CONFIGURATION=ReleaseIA32 - -set arguments=%* - -set "SDK_DIR=%SCRIPTPATH%\..\..\build\%DART_CONFIGURATION%\dart-sdk" - -set "JAR_DIR=%SCRIPTPATH%\..\..\build\%DART_CONFIGURATION%\dartanalyzer" - -set "JAR_FILE=%JAR_DIR%\dartanalyzer.jar" - -java -jar "%JAR_FILE%" --dart-sdk "%SDK_DIR%" %arguments% +REM Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +REM for details. All rights reserved. Use of this source code is governed by a +REM BSD-style license that can be found in the LICENSE file. + +setlocal +set DARTANALYZER_DEVELOPER_MODE=1 +call "%~dp0dartanalyzer.bat" %* +endlocal +exit /b %errorlevel% diff --git a/sdk/bin/dartanalyzer_java b/sdk/bin/dartanalyzer_java index 740332f2ebee..d2839b5e1f6c 100755 --- a/sdk/bin/dartanalyzer_java +++ b/sdk/bin/dartanalyzer_java @@ -1,10 +1,25 @@ -#!/bin/bash --posix +#!/bin/bash # Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. +# This file is used to execute the analyzer by running the jar file. +# It is a simple wrapper enabling us to have simpler command lines in +# the testing infrastructure. set -e +FOUND_BATCH=0 +for ARG in "$@" +do + case $ARG in + -batch|--batch) + FOUND_BATCH=1 + ;; + *) + ;; + esac +done + function follow_links() { file="$1" while [ -h "$file" ]; do @@ -18,64 +33,28 @@ function follow_links() { PROG_NAME="$(follow_links "$BASH_SOURCE")" # Handle the case where dart-sdk/bin has been symlinked to. -SCRIPT_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" +BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" -DART_ANALYZER_HOME="$(cd "${SCRIPT_DIR%/*}" ; pwd -P)" +SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)" -FOUND_BATCH=0 -FOUND_SDK=0 -for ARG in "$@" -do - case $ARG in - -batch|--batch) - FOUND_BATCH=1 - ;; - --dart-sdk) - FOUND_SDK=1 - ;; - *) - ;; - esac -done - -DART_SDK="" -if [ $FOUND_SDK -eq 0 ] ; then - if [ -f "$DART_ANALYZER_HOME/lib/core/core.dart" ] ; then - DART_SDK=(--dart-sdk "$DART_ANALYZER_HOME") - else - DART_SDK_HOME=$(dirname "$DART_ANALYZER_HOME")/dart-sdk - if [ -d "$DART_SDK_HOME" ] ; then - DART_SDK=(--dart-sdk "$DART_SDK_HOME") - else - DART_SDK_HOME=$(dirname "$DART_SDK_HOME")/dart-sdk - if [ -d "$DART_SDK_HOME" ] ; then - DART_SDK=(--dart-sdk "$DART_SDK_HOME") - else - echo "Couldn't find Dart SDK. Specify with --dart-sdk cmdline argument" - fi - fi - fi +if [ -z "$DART_CONFIGURATION" ]; +then + DART_CONFIGURATION="ReleaseIA32" fi -if [ -f "$DART_SDK_HOME/util/dartanalyzer/dartanalyzer.jar" ] ; then - DART_ANALYZER_LIBS=$DART_SDK_HOME/util/dartanalyzer -elif [ -f "$DART_ANALYZER_HOME/util/dartanalyzer/dartanalyzer.jar" ] ; then - DART_ANALYZER_LIBS=$DART_ANALYZER_HOME/util/dartanalyzer +if [ `uname` == 'Darwin' ]; +then + JAR_DIR="$BIN_DIR"/../../xcodebuild/$DART_CONFIGURATION/dartanalyzer else - echo "Configuration problem. Couldn't find dartanalyzer.jar." - exit 1 + JAR_DIR="$BIN_DIR"/../../out/$DART_CONFIGURATION/dartanalyzer fi -if [ -x /usr/libexec/java_home ]; then - export JAVA_HOME=$(/usr/libexec/java_home -v '1.6+') -fi +JAR_FILE="$JAR_DIR/dartanalyzer.jar" EXTRA_JVMARGS="-Xss2M " OS=`uname | tr "[A-Z]" "[a-z]"` if [ "$OS" == "darwin" ] ; then # Bump up the heap on Mac VMs, some of which default to 128M or less. - # Users can specify DART_JVMARGS in the environment to override this - # setting. EXTRA_JVMARGS+=" -Xmx512M -client " else # On other architectures @@ -86,5 +65,4 @@ else fi fi -exec java $EXTRA_JVMARGS $DART_JVMARGS -ea -jar \ - "$DART_ANALYZER_LIBS/dartanalyzer.jar" "${DART_SDK[@]}" $@ +exec java $EXTRA_JVMARGS -jar "$JAR_FILE" --dart-sdk "$SDK_DIR" "$@" diff --git a/sdk/bin/dartanalyzer_java.bat b/sdk/bin/dartanalyzer_java.bat index 490512446376..86f47a8760a6 100644 --- a/sdk/bin/dartanalyzer_java.bat +++ b/sdk/bin/dartanalyzer_java.bat @@ -2,56 +2,26 @@ rem Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file rem for details. All rights reserved. Use of this source code is governed by a rem BSD-style license that can be found in the LICENSE file. +rem -set SCRIPT_DIR=%~dp0 -if %SCRIPT_DIR:~-1%==\ set SCRIPT_DIR=%SCRIPT_DIR:~0,-1% - -for %%I in ("%SCRIPT_DIR%\..") do set "DART_ANALYZER_HOME=%%~fI" -if %DART_ANALYZER_HOME:~-1%==\ set DART_ANALYZER_HOME=%DART_ANALYZER_HOME:~0,-1% - -set FOUND_BATCH=0 -set FOUND_SDK=0 -for %%a in (%*) do ( - if [%%a] == [--batch] set FOUND_BATCH=1 - if [%%a] == [-b] set FOUND_BATCH=1 - if [%%a] == [--dart-sdk] set FOUND_SDK=1 -) - -setlocal EnableDelayedExpansion -set DART_SDK="" -if [%FOUND_SDK%] == [0] ( - if exist "%DART_ANALYZER_HOME%\lib\core\core.dart" ( - set DART_SDK=--dart-sdk "%DART_ANALYZER_HOME%" - ) else ( - for /f %%i in ('echo %DART_ANALYZER_HOME%') do set DART_SDK_HOME=%%~dpi\dart-sdk - if exist "!DART_SDK_HOME!" ( - set DART_SDK=--dart-sdk !DART_SDK_HOME! - ) else ( - for /f %%j in ('call echo !DART_SDK_HOME!') do set DART_SDK_HOME=%%~dpj\dart-sdk - if exist "!DART_SDK_HOME!" ( - set DART_SDK=--dart-sdk !DART_SDK_HOME! - ) else ( - echo Couldn't find Dart SDK. Specify with --dart-sdk cmdline argument - ) - ) - ) -) -endlocal & set DART_SDK=%DART_SDK% & set DART_SDK_HOME=%DART_SDK_HOME% - -if exist "%DART_SDK_HOME%\util\dartanalyzer\dartanalyzer.jar" ( - set DART_ANALYZER_LIBS=%DART_SDK_HOME%\util\dartanalyzer -) else if exist "%DART_ANALYZER_HOME%\util\dartanalyzer\dartanalyzer.jar" ( - set DART_ANALYZER_LIBS=%DART_ANALYZER_HOME%\util\dartanalyzer -) else ( - echo Configuration problem. Couldn't find dartanalyzer.jar. - exit /b 1 -) - -setlocal EnableDelayedExpansion -set EXTRA_JVMARGS=-Xss2M -if [%FOUND_BATCH%] == [1] ( - set EXTRA_JVMARGS=!EXTRA_JVMARGS! -client -) -endlocal & set "EXTRA_JVMARGS=%EXTRA_JVMARGS%" - -java %EXTRA_JVMARGS% %DART_JVMARGS% -ea -jar "%DART_ANALYZER_LIBS%\dartanalyzer.jar" %DART_SDK% %* +rem This file is used to execute the analyzer by running the jar file. +rem It is a simple wrapper enabling us to have simpler command lines in +rem the testing infrastructure. + +set SCRIPTPATH=%~dp0 + +rem Does the path have a trailing slash? If so, remove it. +if %SCRIPTPATH:~-1%==\ set SCRIPTPATH=%SCRIPTPATH:~0,-1% + +rem DART_CONFIGURATION defaults to ReleaseIA32 +if "%DART_CONFIGURATION%"=="" set DART_CONFIGURATION=ReleaseIA32 + +set arguments=%* + +set "SDK_DIR=%SCRIPTPATH%\..\..\build\%DART_CONFIGURATION%\dart-sdk" + +set "JAR_DIR=%SCRIPTPATH%\..\..\build\%DART_CONFIGURATION%\dartanalyzer" + +set "JAR_FILE=%JAR_DIR%\dartanalyzer.jar" + +java -jar "%JAR_FILE%" --dart-sdk "%SDK_DIR%" %arguments% diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart index b33f5549cfde..668804a361ae 100644 --- a/tools/testing/dart/compiler_configuration.dart +++ b/tools/testing/dart/compiler_configuration.dart @@ -350,7 +350,7 @@ class AnalyzerCompilerConfiguration extends CompilerConfiguration { String computeCompilerPath(String buildDir) { String suffix = executableScriptSuffix; - return 'sdk/bin/dartanalyzer_developer$suffix'; + return 'sdk/bin/dartanalyzer_java$suffix'; } CommandArtifact computeCompilationArtifact( @@ -402,10 +402,7 @@ class DartBasedAnalyzerCompilerConfiguration // The script dartanalyzer_developer is not included in the // shipped SDK, that is the script is not installed in // "$buildDir/dart-sdk/bin/" - // TODO(paulberry): the script dartanalyzer_developer currently - // points to the wrong place (the Java-based analyzer). Once - // this is fixed, we should run dartanalyzer_developer when in - // isHostChecked mode. + return '$prefix/dartanalyzer_developer$suffix'; } if (useSdk) { prefix = '$buildDir/dart-sdk/bin'; From fd91baa6a17e3e4bc3ff3406ab4e19c366d32258 Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Tue, 21 Oct 2014 15:17:06 +0000 Subject: [PATCH 69/91] Add tree shaker support for setters and field writes. R=scheglov@google.com Review URL: https://codereview.chromium.org//652613004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41229 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer2dart/lib/src/tree_shaker.dart | 20 +++- pkg/analyzer2dart/test/tree_shaker_test.dart | 99 +++++++++++++++++++- 2 files changed, 113 insertions(+), 6 deletions(-) diff --git a/pkg/analyzer2dart/lib/src/tree_shaker.dart b/pkg/analyzer2dart/lib/src/tree_shaker.dart index bdf94c5809b2..ba24c4cd2a39 100644 --- a/pkg/analyzer2dart/lib/src/tree_shaker.dart +++ b/pkg/analyzer2dart/lib/src/tree_shaker.dart @@ -137,6 +137,20 @@ class LocalReachabilityComputer { } } } + } else if (selector.kind == SelectorKind.SETTER) { + // accessor.name uses the convention that setter names end in '='. + String selectorNameWithEquals = '${selector.name}='; + for (PropertyAccessorElement accessor in classElement.accessors) { + if (accessor.isSetter && selectorNameWithEquals == accessor.name) { + if (accessor.isSynthetic) { + // This accessor is implied by the corresponding field declaration. + // TODO(paulberry): should we distinguish reads and writes? + fields.add(accessor.variable); + } else { + accessors.add(accessor); + } + } + } } } } @@ -294,8 +308,10 @@ class TreeShakingVisitor extends SemanticVisitor { new Selector.getter(semantics.identifier.name, null)); } if (semantics.isWrite) { - // TODO(paulberry): implement. - return giveUp(node, '_handlePropertyAccess of ${semantics}.'); + // Selector.setter constructor uses the convention that setter names + // don't end in '='. + analysis.invokes.add( + new Selector.setter(semantics.identifier.name, null)); } } diff --git a/pkg/analyzer2dart/test/tree_shaker_test.dart b/pkg/analyzer2dart/test/tree_shaker_test.dart index c094f09c76dc..2e0bb3c21a54 100644 --- a/pkg/analyzer2dart/test/tree_shaker_test.dart +++ b/pkg/analyzer2dart/test/tree_shaker_test.dart @@ -27,7 +27,7 @@ foo() { helper.assertHasFunction('foo'); }); - test('Toplevel field access', () { + test('Toplevel field read', () { var helper = new TreeShakerTestHelper(''' main() { return foo; @@ -40,6 +40,19 @@ var bar; helper.assertNoVariable('bar'); }); + test('Toplevel field write', () { + var helper = new TreeShakerTestHelper(''' +main() { + foo = 1; +} +var foo; +var bar; +'''); + helper.assertHasFunction('main'); + helper.assertHasVariable('foo'); + helper.assertNoVariable('bar'); + }); + test('Toplevel field invocation', () { var helper = new TreeShakerTestHelper(''' main() { @@ -145,10 +158,14 @@ main() { class A { get g1 => null; get g2 => null; + set g1(x) {} + set g2(x) {} } class B { get g1 => null; get g2 => null; + set g1(x) {} + set g2(x) {} } main() { new A().g1; @@ -158,9 +175,41 @@ main() { helper.assertNoGetter('A.g2'); helper.assertNoGetter('B.g1'); helper.assertNoGetter('B.g2'); + helper.assertNoSetter('A.g1'); + helper.assertNoSetter('A.g2'); + helper.assertNoSetter('B.g1'); + helper.assertNoSetter('B.g2'); + }); + + test('Setter usage', () { + var helper = new TreeShakerTestHelper(''' +class A { + get g1 => null; + get g2 => null; + set g1(x) {} + set g2(x) {} +} +class B { + get g1 => null; + get g2 => null; + set g1(x) {} + set g2(x) {} +} +main() { + new A().g1 = 1; +} +'''); + helper.assertHasSetter('A.g1'); + helper.assertNoSetter('A.g2'); + helper.assertNoSetter('B.g1'); + helper.assertNoSetter('B.g2'); + helper.assertNoGetter('A.g1'); + helper.assertNoGetter('A.g2'); + helper.assertNoGetter('B.g1'); + helper.assertNoGetter('B.g2'); }); - test('Field access', () { + test('Field read', () { var helper = new TreeShakerTestHelper(''' class A { var f1; @@ -180,6 +229,26 @@ main() { helper.assertNoField('B.f2'); }); + test('Field write', () { + var helper = new TreeShakerTestHelper(''' +class A { + var f1; + var f2; +} +class B { + var f1; + var f2; +} +main() { + new A().f1 = 1; +} +'''); + helper.assertHasField('A.f1'); + helper.assertNoField('A.f2'); + helper.assertNoField('B.f1'); + helper.assertNoField('B.f2'); + }); + test('Ordinary constructor with initializer list', () { var helper = new TreeShakerTestHelper(''' class A { @@ -275,6 +344,11 @@ class TreeShakerTestHelper { */ Map getters = {}; + /** + * Setters contained in [world], indexed by className.propertyName. + */ + Map setters = {}; + /** * Fields contained in [world], indexed by className.fieldName. */ @@ -322,9 +396,11 @@ class TreeShakerTestHelper { if (declaration.isGetter) { getters['${element.enclosingElement.name}.${element.name}'] = declaration; + } else if (declaration.isSetter) { + setters['${element.enclosingElement.name}.${element.displayName}'] = + declaration; } else { - // TODO(paulberry): handle setters. - throw new UnimplementedError(); + fail('Unexpected property accessor (neither getter nor setter)'); } } }); @@ -376,6 +452,13 @@ class TreeShakerTestHelper { expect(getters, contains(qualifiedName)); } + /** + * Asserts that [world] contains a setter with the given qualified name. + */ + void assertHasSetter(String qualifiedName) { + expect(setters, contains(qualifiedName)); + } + /** * Asserts that [world] instantiates a class with the given name. */ @@ -424,6 +507,14 @@ class TreeShakerTestHelper { expect(getters, isNot(contains(qualifiedName))); } + /** + * Asserts that [world] doesn't contain a setter with the given qualified + * name. + */ + void assertNoSetter(String qualifiedName) { + expect(setters, isNot(contains(qualifiedName))); + } + /** * Asserts that [world] doesn't instantiate a class with the given name. */ From 3074fefa825581c85c091c6ff1a43463ff62f616 Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Tue, 21 Oct 2014 15:32:55 +0000 Subject: [PATCH 70/91] Issue 21372. "Convert into block body" and "Convert into expression body" for factory constructors. R=paulberry@google.com BUG= https://code.google.com/p/dart/issues/detail?id=21372 Review URL: https://codereview.chromium.org//664403002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41230 260f80e4-7a28-3924-810f-c04153c831b5 --- .../services/correction/assist_internal.dart | 119 ++++++------ .../test/services/correction/assist_test.dart | 180 ++++++++++-------- 2 files changed, 168 insertions(+), 131 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart index f10ebfeb158d..964c87bd7253 100644 --- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart +++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart @@ -113,6 +113,13 @@ class AssistProcessor { return function.functionExpression.body; } } + { + ConstructorDeclaration constructor = + node.getAncestor((node) => node is ConstructorDeclaration); + if (constructor != null) { + return constructor.body; + } + } { MethodDeclaration method = node.getAncestor((node) => node is MethodDeclaration); @@ -317,62 +324,6 @@ class AssistProcessor { _addAssist(AssistKind.CONVERT_INTO_EXPRESSION_BODY, []); } - /** - * Converts "!isEmpty" -> "isNotEmpty" if possible. - */ - void _addProposal_convertToIsNotEmpty() { - // prepare "expr.isEmpty" - AstNode isEmptyAccess = null; - SimpleIdentifier isEmptyIdentifier = null; - if (node is SimpleIdentifier) { - SimpleIdentifier identifier = node as SimpleIdentifier; - AstNode parent = identifier.parent; - // normal case (but rare) - if (parent is PropertyAccess) { - isEmptyIdentifier = parent.propertyName; - isEmptyAccess = parent; - } - // usual case - if (parent is PrefixedIdentifier) { - isEmptyIdentifier = parent.identifier; - isEmptyAccess = parent; - } - } - if (isEmptyIdentifier == null) { - _coverageMarker(); - return; - } - // should be "isEmpty" - Element propertyElement = isEmptyIdentifier.bestElement; - if (propertyElement == null || "isEmpty" != propertyElement.name) { - _coverageMarker(); - return; - } - // should have "isNotEmpty" - Element propertyTarget = propertyElement.enclosingElement; - if (propertyTarget == null || - getChildren(propertyTarget, "isNotEmpty").isEmpty) { - _coverageMarker(); - return; - } - // should be in PrefixExpression - if (isEmptyAccess.parent is! PrefixExpression) { - _coverageMarker(); - return; - } - PrefixExpression prefixExpression = - isEmptyAccess.parent as PrefixExpression; - // should be ! - if (prefixExpression.operator.type != TokenType.BANG) { - return; - } - // do replace - _addRemoveEdit(rangeStartStart(prefixExpression, prefixExpression.operand)); - _addReplaceEdit(rangeNode(isEmptyIdentifier), "isNotEmpty"); - // add proposal - _addAssist(AssistKind.CONVERT_INTO_IS_NOT_EMPTY, []); - } - void _addProposal_convertToIsNot_onIs() { // may be child of "is" AstNode node = this.node; @@ -471,6 +422,62 @@ class AssistProcessor { _addAssist(AssistKind.CONVERT_INTO_IS_NOT, []); } + /** + * Converts "!isEmpty" -> "isNotEmpty" if possible. + */ + void _addProposal_convertToIsNotEmpty() { + // prepare "expr.isEmpty" + AstNode isEmptyAccess = null; + SimpleIdentifier isEmptyIdentifier = null; + if (node is SimpleIdentifier) { + SimpleIdentifier identifier = node as SimpleIdentifier; + AstNode parent = identifier.parent; + // normal case (but rare) + if (parent is PropertyAccess) { + isEmptyIdentifier = parent.propertyName; + isEmptyAccess = parent; + } + // usual case + if (parent is PrefixedIdentifier) { + isEmptyIdentifier = parent.identifier; + isEmptyAccess = parent; + } + } + if (isEmptyIdentifier == null) { + _coverageMarker(); + return; + } + // should be "isEmpty" + Element propertyElement = isEmptyIdentifier.bestElement; + if (propertyElement == null || "isEmpty" != propertyElement.name) { + _coverageMarker(); + return; + } + // should have "isNotEmpty" + Element propertyTarget = propertyElement.enclosingElement; + if (propertyTarget == null || + getChildren(propertyTarget, "isNotEmpty").isEmpty) { + _coverageMarker(); + return; + } + // should be in PrefixExpression + if (isEmptyAccess.parent is! PrefixExpression) { + _coverageMarker(); + return; + } + PrefixExpression prefixExpression = + isEmptyAccess.parent as PrefixExpression; + // should be ! + if (prefixExpression.operator.type != TokenType.BANG) { + return; + } + // do replace + _addRemoveEdit(rangeStartStart(prefixExpression, prefixExpression.operand)); + _addReplaceEdit(rangeNode(isEmptyIdentifier), "isNotEmpty"); + // add proposal + _addAssist(AssistKind.CONVERT_INTO_IS_NOT_EMPTY, []); + } + void _addProposal_exchangeOperands() { // check that user invokes quick assist on binary expression if (node is! BinaryExpression) { diff --git a/pkg/analysis_server/test/services/correction/assist_test.dart b/pkg/analysis_server/test/services/correction/assist_test.dart index d37d3e635eda..06e65096be4d 100644 --- a/pkg/analysis_server/test/services/correction/assist_test.dart +++ b/pkg/analysis_server/test/services/correction/assist_test.dart @@ -146,28 +146,28 @@ main() { '''); } - void test_addTypeAnnotation_local_OK_List() { + void test_addTypeAnnotation_local_OK_int() { _indexTestUnit(''' main() { - var v = []; + var v = 0; } '''); assertHasAssistAt('v =', AssistKind.ADD_TYPE_ANNOTATION, ''' main() { - List v = []; + int v = 0; } '''); } - void test_addTypeAnnotation_local_OK_int() { + void test_addTypeAnnotation_local_OK_List() { _indexTestUnit(''' main() { - var v = 0; + var v = []; } '''); assertHasAssistAt('v =', AssistKind.ADD_TYPE_ANNOTATION, ''' main() { - int v = 0; + List v = []; } '''); } @@ -350,6 +350,21 @@ main() { '''); } + void test_convertToBlockBody_OK_constructor() { + _indexTestUnit(''' +class A { + factory A() => null; +} +'''); + assertHasAssistAt('A()', AssistKind.CONVERT_INTO_BLOCK_BODY, ''' +class A { + factory A() { + return null; + } +} +'''); + } + void test_convertToBlockBody_OK_method() { _indexTestUnit(''' class A { @@ -420,6 +435,21 @@ main() { '''); } + void test_convertToExpressionBody_OK_constructor() { + _indexTestUnit(''' +class A { + factory A() { + return null; + } +} +'''); + assertHasAssistAt('A()', AssistKind.CONVERT_INTO_EXPRESSION_BODY, ''' +class A { + factory A() => null; +} +'''); + } + void test_convertToExpressionBody_OK_function_onBlock() { _indexTestUnit(''' fff() { @@ -513,75 +543,6 @@ fff() { assertNoAssistAt('fff()', AssistKind.CONVERT_INTO_EXPRESSION_BODY); } - void test_convertToIsNotEmpty_OK_on_isEmpty() { - _indexTestUnit(''' -main(String str) { - !str.isEmpty; -} -'''); - assertHasAssistAt('isEmpty', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' -main(String str) { - str.isNotEmpty; -} -'''); - } - - void test_convertToIsNotEmpty_OK_on_str() { - _indexTestUnit(''' -main(String str) { - !str.isEmpty; -} -'''); - assertHasAssistAt('str.', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' -main(String str) { - str.isNotEmpty; -} -'''); - } - - void test_convertToIsNotEmpty_OK_propertyAccess() { - _indexTestUnit(''' -main(String str) { - !'text'.isEmpty; -} -'''); - assertHasAssistAt('isEmpty', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' -main(String str) { - 'text'.isNotEmpty; -} -'''); - } - - void test_convertToIsNotEmpty_wrong_notInPrefixExpression() { - _indexTestUnit(''' -main(String str) { - str.isEmpty; -} -'''); - assertNoAssistAt('isEmpty;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); - } - - void test_convertToIsNotEmpty_wrong_notIsEmpty() { - _indexTestUnit(''' -main(int p) { - !p.isEven; -} -'''); - assertNoAssistAt('isEven;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); - } - - void test_convertToIsNotEmpty_wrote_noIsNotEmpty() { - _indexTestUnit(''' -class A { - bool get isEmpty => false; -} -main(A a) { - !a.isEmpty; -} -'''); - assertNoAssistAt('isEmpty;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); - } - void test_convertToIsNot_OK_childOfIs_left() { _indexTestUnit(''' main(p) { @@ -756,6 +717,75 @@ main(p) { assertNoAssistAt('++(', AssistKind.CONVERT_INTO_IS_NOT); } + void test_convertToIsNotEmpty_OK_on_isEmpty() { + _indexTestUnit(''' +main(String str) { + !str.isEmpty; +} +'''); + assertHasAssistAt('isEmpty', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' +main(String str) { + str.isNotEmpty; +} +'''); + } + + void test_convertToIsNotEmpty_OK_on_str() { + _indexTestUnit(''' +main(String str) { + !str.isEmpty; +} +'''); + assertHasAssistAt('str.', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' +main(String str) { + str.isNotEmpty; +} +'''); + } + + void test_convertToIsNotEmpty_OK_propertyAccess() { + _indexTestUnit(''' +main(String str) { + !'text'.isEmpty; +} +'''); + assertHasAssistAt('isEmpty', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' +main(String str) { + 'text'.isNotEmpty; +} +'''); + } + + void test_convertToIsNotEmpty_wrong_notInPrefixExpression() { + _indexTestUnit(''' +main(String str) { + str.isEmpty; +} +'''); + assertNoAssistAt('isEmpty;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); + } + + void test_convertToIsNotEmpty_wrong_notIsEmpty() { + _indexTestUnit(''' +main(int p) { + !p.isEven; +} +'''); + assertNoAssistAt('isEven;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); + } + + void test_convertToIsNotEmpty_wrote_noIsNotEmpty() { + _indexTestUnit(''' +class A { + bool get isEmpty => false; +} +main(A a) { + !a.isEmpty; +} +'''); + assertNoAssistAt('isEmpty;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); + } + void test_exchangeBinaryExpressionArguments_OK_extended_mixOperator_1() { _indexTestUnit(''' main() { From c7c9d5d12f7bb9ad4a9a3d39978bb9ace55269bd Mon Sep 17 00:00:00 2001 From: "iposva@google.com" Date: Tue, 21 Oct 2014 17:00:16 +0000 Subject: [PATCH 71/91] Fix http://dartbug.com/21335 - Make the VM internal AssertionError, TypeError and CastError implement the public classes instead of patching them. R=asiva@google.com, lrn@google.com Review URL: https://codereview.chromium.org//669733004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41231 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/lib/errors_patch.dart | 20 ++++++++++---------- runtime/vm/symbols.h | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/runtime/lib/errors_patch.dart b/runtime/lib/errors_patch.dart index 3dc0e54bb8da..b65ae30fe978 100644 --- a/runtime/lib/errors_patch.dart +++ b/runtime/lib/errors_patch.dart @@ -14,8 +14,8 @@ patch class Error { StackTrace _stackTrace; } -patch class AssertionError extends Error { - AssertionError._create( +class _AssertionError extends Error implements AssertionError { + _AssertionError._create( this._failedAssertion, this._url, this._line, this._column); static _throwNew(int assertionStart, int assertionEnd) @@ -36,10 +36,10 @@ patch class AssertionError extends Error { final int _column; } -patch class TypeError extends AssertionError { - TypeError._create(String url, int line, int column, - this._srcType, this._dstType, this._dstName, - this._errorMsg) +class _TypeError extends _AssertionError implements TypeError { + _TypeError._create(String url, int line, int column, + this._srcType, this._dstType, this._dstName, + this._errorMsg) : super._create("is assignable", url, line, column); static _throwNew(int location, @@ -66,10 +66,10 @@ patch class TypeError extends AssertionError { final String _errorMsg; } -patch class CastError extends Error { - CastError._create(this._url, this._line, this._column, - this._srcType, this._dstType, this._dstName, - this._errorMsg); +class _CastError extends Error implements CastError { + _CastError._create(this._url, this._line, this._column, + this._srcType, this._dstType, this._dstName, + this._errorMsg); // A CastError is allocated by TypeError._throwNew() when dst_name equals // Exceptions::kCastErrorDstName. diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h index e399cd26f47b..feb8a24cd2af 100644 --- a/runtime/vm/symbols.h +++ b/runtime/vm/symbols.h @@ -36,9 +36,9 @@ class ObjectPointerVisitor; V(ClosureParameter, ":closure") \ V(PhaseParameter, ":phase") \ V(TypeArgumentsParameter, ":type_arguments") \ - V(AssertionError, "AssertionError") \ - V(CastError, "CastError") \ - V(TypeError, "TypeError") \ + V(AssertionError, "_AssertionError") \ + V(CastError, "_CastError") \ + V(TypeError, "_TypeError") \ V(FallThroughError, "FallThroughError") \ V(AbstractClassInstantiationError, "AbstractClassInstantiationError") \ V(NoSuchMethodError, "NoSuchMethodError") \ From fb7f8551b4f447cc492bf57d5a3c1ad9cf4fe3c7 Mon Sep 17 00:00:00 2001 From: "johnmccutchan@google.com" Date: Tue, 21 Oct 2014 18:11:43 +0000 Subject: [PATCH 72/91] Add unboxed Mint for X64 BUG= R=vegorov@google.com Review URL: https://codereview.chromium.org//626223002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41233 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/deopt_instructions.cc | 20 +- runtime/vm/deopt_instructions.h | 7 +- runtime/vm/flow_graph_compiler_x64.cc | 3 +- runtime/vm/flow_graph_optimizer.cc | 23 + runtime/vm/intermediate_language.h | 5 + runtime/vm/intermediate_language_arm.cc | 41 +- runtime/vm/intermediate_language_ia32.cc | 39 +- runtime/vm/intermediate_language_x64.cc | 505 ++++++++++++++++-- runtime/vm/method_recognizer.h | 6 + .../int64_list_load_store_test.dart | 38 ++ 10 files changed, 586 insertions(+), 101 deletions(-) create mode 100644 tests/lib/typed_data/int64_list_load_store_test.dart diff --git a/runtime/vm/deopt_instructions.cc b/runtime/vm/deopt_instructions.cc index 45315d3e53f8..ad3397791ecb 100644 --- a/runtime/vm/deopt_instructions.cc +++ b/runtime/vm/deopt_instructions.cc @@ -190,6 +190,7 @@ static bool IsObjectInstruction(DeoptInstr::Kind kind) { case DeoptInstr::kFloat64x2: case DeoptInstr::kWord: case DeoptInstr::kDouble: + case DeoptInstr::kMint: case DeoptInstr::kMintPair: case DeoptInstr::kInt32: case DeoptInstr::kUint32: @@ -575,6 +576,7 @@ class DeoptIntInstr : public DeoptIntegerInstrBase { typedef DeoptIntInstr DeoptUint32Instr; typedef DeoptIntInstr DeoptInt32Instr; +typedef DeoptIntInstr DeoptMintInstr; templateAt(0)), - ToCpuRegisterSource(pair->At(1))); + if (source_loc.IsPairLocation()) { + PairLocation* pair = source_loc.AsPairLocation(); + deopt_instr = new(isolate()) DeoptMintPairInstr( + ToCpuRegisterSource(pair->At(0)), + ToCpuRegisterSource(pair->At(1))); + } else { + ASSERT(!source_loc.IsPairLocation()); + deopt_instr = new(isolate()) DeoptMintInstr( + ToCpuRegisterSource(source_loc)); + } break; } case kUnboxedInt32: diff --git a/runtime/vm/deopt_instructions.h b/runtime/vm/deopt_instructions.h index 158305606fcd..a7ae517b5460 100644 --- a/runtime/vm/deopt_instructions.h +++ b/runtime/vm/deopt_instructions.h @@ -221,9 +221,12 @@ class DeoptInstr : public ZoneAllocated { kFloat32x4, kFloat64x2, kInt32x4, - // Mints are split into low and high words. Each word can be in a register - // or stack slot. Note Mints are only used on 32-bit architectures. + // Mints are split into low and high words on 32-bit architectures. Each + // word can be in a register or stack slot. Note Mint pairs are only + // used on 32-bit architectures. kMintPair, + // Mints are held in one word on 64-bit architectures. + kMint, kInt32, kUint32, kPcMarker, diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc index 05ee329b5987..790fea4c94c1 100644 --- a/runtime/vm/flow_graph_compiler_x64.cc +++ b/runtime/vm/flow_graph_compiler_x64.cc @@ -22,6 +22,7 @@ namespace dart { DEFINE_FLAG(bool, trap_on_deoptimization, false, "Trap on deoptimization."); +DEFINE_FLAG(bool, unbox_mints, true, "Optimize 64-bit integer arithmetic."); DECLARE_FLAG(bool, enable_type_checks); DECLARE_FLAG(bool, enable_simd_inline); @@ -42,7 +43,7 @@ bool FlowGraphCompiler::SupportsUnboxedDoubles() { bool FlowGraphCompiler::SupportsUnboxedMints() { - return false; + return FLAG_unbox_mints; } diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc index 2e0c46716c40..0b9836765f59 100644 --- a/runtime/vm/flow_graph_optimizer.cc +++ b/runtime/vm/flow_graph_optimizer.cc @@ -63,6 +63,13 @@ static bool CanUnboxDouble() { } +static bool ShouldInlineInt64ArrayOps() { +#if defined(TARGET_ARCH_X64) + return true; +#endif + return false; +} + static bool CanConvertUnboxedMintToDouble() { #if defined(TARGET_ARCH_IA32) return true; @@ -1176,6 +1183,10 @@ static intptr_t MethodKindToCid(MethodRecognizer::Kind kind) { case MethodRecognizer::kUint32ArraySetIndexed: return kTypedDataUint32ArrayCid; + case MethodRecognizer::kInt64ArrayGetIndexed: + case MethodRecognizer::kInt64ArraySetIndexed: + return kTypedDataInt64ArrayCid; + case MethodRecognizer::kFloat32x4ArrayGetIndexed: case MethodRecognizer::kFloat32x4ArraySetIndexed: return kTypedDataFloat32x4ArrayCid; @@ -1300,6 +1311,7 @@ bool FlowGraphOptimizer::InlineSetIndexed( case kTypedDataUint16ArrayCid: case kTypedDataInt32ArrayCid: case kTypedDataUint32ArrayCid: + case kTypedDataInt64ArrayCid: ASSERT(value_type.IsIntType()); // Fall through. case kTypedDataFloat32ArrayCid: @@ -1460,6 +1472,11 @@ bool FlowGraphOptimizer::TryInlineRecognizedMethod(intptr_t receiver_cid, if (!CanUnboxInt32()) return false; return InlineGetIndexed(kind, call, receiver, ic_data, entry, last); + case MethodRecognizer::kInt64ArrayGetIndexed: + if (!ShouldInlineInt64ArrayOps()) { + return false; + } + return InlineGetIndexed(kind, call, receiver, ic_data, entry, last); // Recognized []= operators. case MethodRecognizer::kObjectArraySetIndexed: case MethodRecognizer::kGrowableArraySetIndexed: @@ -1491,6 +1508,12 @@ bool FlowGraphOptimizer::TryInlineRecognizedMethod(intptr_t receiver_cid, } return InlineSetIndexed(kind, target, call, receiver, token_pos, &ic_data, value_check, entry, last); + case MethodRecognizer::kInt64ArraySetIndexed: + if (!ShouldInlineInt64ArrayOps()) { + return false; + } + return InlineSetIndexed(kind, target, call, receiver, token_pos, + &ic_data, value_check, entry, last); case MethodRecognizer::kFloat32ArraySetIndexed: case MethodRecognizer::kFloat64ArraySetIndexed: if (!CanUnboxDouble()) { diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h index 3dc20d528ffe..a8510060ac43 100644 --- a/runtime/vm/intermediate_language.h +++ b/runtime/vm/intermediate_language.h @@ -1652,9 +1652,14 @@ class Definition : public Instruction { bool HasSSATemp() const { return ssa_temp_index_ >= 0; } void ClearSSATempIndex() { ssa_temp_index_ = -1; } bool HasPairRepresentation() const { +#if defined(TARGET_ARCH_X64) + return (representation() == kPairOfTagged) || + (representation() == kPairOfUnboxedDouble); +#else return (representation() == kPairOfTagged) || (representation() == kPairOfUnboxedDouble) || (representation() == kUnboxedMint); +#endif } // Compile time type of the definition, which may be requested before type diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc index f7b10687d8c9..8124cc270eb2 100644 --- a/runtime/vm/intermediate_language_arm.cc +++ b/runtime/vm/intermediate_language_arm.cc @@ -6287,15 +6287,6 @@ void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { ASSERT(locs()->in(1).constant().IsSmi()); const int32_t shift = reinterpret_cast(locs()->in(1).constant().raw()) >> 1; - if ((shift < 0) || (shift > kMintShiftCountLimit)) { - __ b(deopt); - return; - } else if (shift == 0) { - // Nothing to do for zero shift amount. - __ mov(out_lo, Operand(left_lo)); - __ mov(out_hi, Operand(left_hi)); - return; - } switch (op_kind()) { case Token::kSHR: { if (shift < 32) { @@ -6526,28 +6517,16 @@ void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { ASSERT(constant.IsSmi()); const intptr_t shift_value = Smi::Cast(constant).Value(); - // Check constant shift value. - if (shift_value == 0) { - // Nothing to do. - __ mov(out, Operand(left)); - } else if (shift_value < 0) { - // Invalid shift value. - __ b(deopt); - } else if (shift_value > kShifterLimit) { - // Result is 0. - __ eor(out, out, Operand(out)); - } else { - // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit). - switch (op_kind()) { - case Token::kSHR: - __ Lsr(out, left, Operand(shift_value)); - break; - case Token::kSHL: - __ Lsl(out, left, Operand(shift_value)); - break; - default: - UNREACHABLE(); - } + // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit). + switch (op_kind()) { + case Token::kSHR: + __ Lsr(out, left, Operand(shift_value)); + break; + case Token::kSHL: + __ Lsl(out, left, Operand(shift_value)); + break; + default: + UNREACHABLE(); } return; } diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc index 80002c2e5059..68455b0db6b8 100644 --- a/runtime/vm/intermediate_language_ia32.cc +++ b/runtime/vm/intermediate_language_ia32.cc @@ -5918,13 +5918,6 @@ void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { ASSERT(locs()->in(1).constant().IsSmi()); const int32_t shift = reinterpret_cast(locs()->in(1).constant().raw()) >> 1; - if ((shift < 0) || (shift > kMintShiftCountLimit)) { - __ jmp(deopt); - return; - } else if (shift == 0) { - // Nothing to do for zero shift amount. - return; - } switch (op_kind()) { case Token::kSHR: { if (shift > 31) { @@ -6152,27 +6145,17 @@ void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { ASSERT(constant.IsSmi()); const intptr_t shift_value = Smi::Cast(constant).Value(); - // Check constant shift value. - if (shift_value == 0) { - // Nothing to do. - } else if (shift_value < 0) { - // Invalid shift value. - __ jmp(deopt); - } else if (shift_value > kShifterLimit) { - // Result is 0. - __ xorl(left, left); - } else { - // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit). - switch (op_kind()) { - case Token::kSHR: - __ shrl(left, Immediate(shift_value)); - break; - case Token::kSHL: - __ shll(left, Immediate(shift_value)); - break; - default: - UNREACHABLE(); - } + + // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit). + switch (op_kind()) { + case Token::kSHR: + __ shrl(left, Immediate(shift_value)); + break; + case Token::kSHL: + __ shll(left, Immediate(shift_value)); + break; + default: + UNREACHABLE(); } return; } diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc index 2cb998ae023e..5ec7afc47a18 100644 --- a/runtime/vm/intermediate_language_x64.cc +++ b/runtime/vm/intermediate_language_x64.cc @@ -355,7 +355,7 @@ void AssertBooleanInstr::EmitNativeCode(FlowGraphCompiler* compiler) { } -static Condition TokenKindToSmiCondition(Token::Kind kind) { +static Condition TokenKindToIntCondition(Token::Kind kind) { switch (kind) { case Token::kEQ: return EQUAL; case Token::kNE: return NOT_EQUAL; @@ -373,6 +373,15 @@ static Condition TokenKindToSmiCondition(Token::Kind kind) { LocationSummary* EqualityCompareInstr::MakeLocationSummary(Isolate* isolate, bool opt) const { const intptr_t kNumInputs = 2; + if (operation_cid() == kMintCid) { + const intptr_t kNumTemps = 0; + LocationSummary* locs = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + locs->set_in(0, Location::RequiresRegister()); + locs->set_in(1, Location::RequiresRegister()); + locs->set_out(0, Location::RequiresRegister()); + return locs; + } if (operation_cid() == kDoubleCid) { const intptr_t kNumTemps = 0; LocationSummary* locs = new(isolate) LocationSummary( @@ -458,15 +467,15 @@ static void EmitBranchOnCondition(FlowGraphCompiler* compiler, } -static Condition EmitSmiComparisonOp(FlowGraphCompiler* compiler, - const LocationSummary& locs, - Token::Kind kind, - BranchLabels labels) { +static Condition EmitInt64ComparisonOp(FlowGraphCompiler* compiler, + const LocationSummary& locs, + Token::Kind kind, + BranchLabels labels) { Location left = locs.in(0); Location right = locs.in(1); ASSERT(!left.IsConstant() || !right.IsConstant()); - Condition true_condition = TokenKindToSmiCondition(kind); + Condition true_condition = TokenKindToIntCondition(kind); if (left.IsConstant()) { __ CompareObject(right.reg(), left.constant(), PP); @@ -516,8 +525,8 @@ static Condition EmitDoubleComparisonOp(FlowGraphCompiler* compiler, Condition EqualityCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler, BranchLabels labels) { - if (operation_cid() == kSmiCid) { - return EmitSmiComparisonOp(compiler, *locs(), kind(), labels); + if ((operation_cid() == kSmiCid) || (operation_cid() == kMintCid)) { + return EmitInt64ComparisonOp(compiler, *locs(), kind(), labels); } else { ASSERT(operation_cid() == kDoubleCid); return EmitDoubleComparisonOp(compiler, *locs(), kind(), labels); @@ -683,6 +692,13 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(Isolate* isolate, summary->set_in(1, Location::RequiresFpuRegister()); summary->set_out(0, Location::RequiresRegister()); return summary; + } else if (operation_cid() == kMintCid) { + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_in(1, Location::RequiresRegister()); + summary->set_out(0, Location::RequiresRegister()); + return summary; } ASSERT(operation_cid() == kSmiCid); LocationSummary* summary = new(isolate) LocationSummary( @@ -700,8 +716,8 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(Isolate* isolate, Condition RelationalOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler, BranchLabels labels) { - if (operation_cid() == kSmiCid) { - return EmitSmiComparisonOp(compiler, *locs(), kind(), labels); + if ((operation_cid() == kSmiCid) || (operation_cid() == kMintCid)) { + return EmitInt64ComparisonOp(compiler, *locs(), kind(), labels); } else { ASSERT(operation_cid() == kDoubleCid); return EmitDoubleComparisonOp(compiler, *locs(), kind(), labels); @@ -948,6 +964,9 @@ CompileType LoadIndexedInstr::ComputeType() const { case kTypedDataUint32ArrayCid: return CompileType::FromCid(kSmiCid); + case kTypedDataInt64ArrayCid: + return CompileType::Int(); + default: UNIMPLEMENTED(); return CompileType::Dynamic(); @@ -973,6 +992,8 @@ Representation LoadIndexedInstr::representation() const { return kUnboxedInt32; case kTypedDataUint32ArrayCid: return kUnboxedUint32; + case kTypedDataInt64ArrayCid: + return kUnboxedMint; case kTypedDataFloat32ArrayCid: case kTypedDataFloat64ArrayCid: return kUnboxedDouble; @@ -1075,6 +1096,16 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { return; } + if (representation() == kUnboxedMint) { + ASSERT(class_id() == kTypedDataInt64ArrayCid); + if ((index_scale() == 1) && index.IsRegister()) { + __ SmiUntag(index.reg()); + } + Register result = locs()->out(0).reg(); + __ movq(result, element_address); + return; + } + ASSERT(representation() == kTagged); if ((index_scale() == 1) && index.IsRegister()) { @@ -1131,6 +1162,8 @@ Representation StoreIndexedInstr::RequiredInputRepresentation( return kUnboxedInt32; case kTypedDataUint32ArrayCid: return kUnboxedUint32; + case kTypedDataInt64ArrayCid: + return kUnboxedMint; case kTypedDataFloat32ArrayCid: case kTypedDataFloat64ArrayCid: return kUnboxedDouble; @@ -1188,6 +1221,9 @@ LocationSummary* StoreIndexedInstr::MakeLocationSummary(Isolate* isolate, // Writable register because the value must be untagged before storing. locs->set_in(2, Location::WritableRegister()); break; + case kTypedDataInt64ArrayCid: + locs->set_in(2, Location::RequiresRegister()); + break; case kTypedDataFloat32ArrayCid: case kTypedDataFloat64ArrayCid: // TODO(srdjan): Support Float64 constants. @@ -1291,6 +1327,11 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ movl(element_address, value); break; } + case kTypedDataInt64ArrayCid: { + Register value = locs()->in(2).reg(); + __ movq(element_address, value); + break; + } case kTypedDataFloat32ArrayCid: __ movss(element_address, locs()->in(2).fpu_reg()); break; @@ -5494,67 +5535,267 @@ void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) { LocationSummary* UnboxIntegerInstr::MakeLocationSummary(Isolate* isolate, bool opt) const { - UNIMPLEMENTED(); - return NULL; + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 0; + LocationSummary* locs = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + locs->set_in(0, Location::RequiresRegister()); + locs->set_out(0, Location::SameAsFirstInput()); + return locs; } void UnboxIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) { - UNIMPLEMENTED(); + const intptr_t value_cid = value()->Type()->ToCid(); + const Register value = locs()->in(0).reg(); + const Register result = locs()->out(0).reg(); + ASSERT(value == result); + + if (value_cid == kMintCid) { + __ movq(result, FieldAddress(value, Mint::value_offset())); + } else if (value_cid == kSmiCid) { + __ SmiUntag(result); + } else { + Label* deopt = compiler->AddDeoptStub(deopt_id_, + ICData::kDeoptUnboxInteger); + Label done; + __ SmiUntagOrCheckClass(value, kMintCid, &done); + __ j(NOT_EQUAL, deopt); + // Undo untagging by multiplying value with 2. + __ movq(result, Address(value, TIMES_2, Mint::value_offset())); + __ Bind(&done); + } } LocationSummary* BoxIntegerInstr::MakeLocationSummary(Isolate* isolate, bool opt) const { - UNIMPLEMENTED(); - return NULL; + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, is_smi() + ? LocationSummary::kNoCall + : LocationSummary::kCallOnSlowPath); + summary->set_in(0, Location::RequiresRegister()); + summary->set_out(0, Location::RequiresRegister()); + return summary; } void BoxIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) { - UNIMPLEMENTED(); + const Register out = locs()->out(0).reg(); + const Register value = locs()->in(0).reg(); + + if (is_smi()) { + __ movq(out, value); + __ SmiTag(out); + return; + } + + Label is_smi; + Label done; + __ movq(out, value); + __ SmiTag(out); // shlq sets OF := SF ^ CF on 1 bit shifts + __ j(NO_OVERFLOW, &done); + BoxAllocationSlowPath::Allocate( + compiler, this, compiler->mint_class(), out); + __ movq(FieldAddress(out, Mint::value_offset()), value); + __ Bind(&done); +} + + +template +static void EmitInt64Arithmetic(FlowGraphCompiler* compiler, + Token::Kind op_kind, + Register left, + const OperandType& right, + Label* deopt) { + switch (op_kind) { + case Token::kADD: + __ addq(left, right); + break; + case Token::kSUB: + __ subq(left, right); + break; + case Token::kBIT_AND: + __ andq(left, right); + break; + case Token::kBIT_OR: + __ orq(left, right); + break; + case Token::kBIT_XOR: + __ xorq(left, right); + break; + case Token::kMUL: + __ imulq(left, right); + break; + default: + UNREACHABLE(); + } + if (deopt != NULL) __ j(OVERFLOW, deopt); } LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Isolate* isolate, bool opt) const { - UNIMPLEMENTED(); - return NULL; + const intptr_t kNumInputs = 2; + const intptr_t kNumTemps = 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_in(1, Location::RequiresRegister()); + summary->set_out(0, Location::SameAsFirstInput()); + return summary; } void BinaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { - UNIMPLEMENTED(); + const Register left = locs()->in(0).reg(); + const Register right = locs()->in(1).reg(); + const Register out = locs()->out(0).reg(); + + ASSERT(out == left); + + Label* deopt = NULL; + if (CanDeoptimize()) { + deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinaryMintOp); + } + + EmitInt64Arithmetic(compiler, op_kind(), left, right, deopt); + + if (FLAG_throw_on_javascript_int_overflow) { + EmitJavascriptOverflowCheck(compiler, range(), deopt, out); + } } LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Isolate* isolate, bool opt) const { - UNIMPLEMENTED(); - return NULL; + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_out(0, Location::SameAsFirstInput()); + return summary; } void UnaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { - UNIMPLEMENTED(); + ASSERT(op_kind() == Token::kBIT_NOT); + const Register left = locs()->in(0).reg(); + const Register out = locs()->out(0).reg(); + ASSERT(out == left); + + Label* deopt = NULL; + if (FLAG_throw_on_javascript_int_overflow) { + deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnaryMintOp); + } + + __ notq(left); + + if (FLAG_throw_on_javascript_int_overflow) { + EmitJavascriptOverflowCheck(compiler, range(), deopt, out); + } } +static const intptr_t kMintShiftCountLimit = 63; + bool ShiftMintOpInstr::has_shift_count_check() const { - UNREACHABLE(); - return false; + return !RangeUtils::IsWithin( + right()->definition()->range(), 0, kMintShiftCountLimit); } LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Isolate* isolate, bool opt) const { - UNIMPLEMENTED(); - return NULL; + const intptr_t kNumInputs = 2; + const intptr_t kNumTemps = can_overflow() ? 1 : 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), RCX)); + if (kNumTemps > 0) { + summary->set_temp(0, Location::RequiresRegister()); + } + summary->set_out(0, Location::SameAsFirstInput()); + return summary; } void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { - UNIMPLEMENTED(); + const Register left = locs()->in(0).reg(); + const Register out = locs()->out(0).reg(); + ASSERT(left == out); + + Label* deopt = NULL; + if (CanDeoptimize()) { + deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptShiftMintOp); + } + if (locs()->in(1).IsConstant()) { + // Code for a constant shift amount. + ASSERT(locs()->in(1).constant().IsSmi()); + const int64_t shift = + reinterpret_cast(locs()->in(1).constant().raw()) >> 1; + switch (op_kind()) { + case Token::kSHR: + __ sarq(left, Immediate(shift)); + break; + case Token::kSHL: { + if (can_overflow()) { + // Check for overflow. + Register temp = locs()->temp(0).reg(); + __ movq(temp, left); + __ shlq(left, Immediate(shift)); + __ sarq(left, Immediate(shift)); + __ cmpq(left, temp); + __ j(NOT_EQUAL, deopt); // Overflow. + } + // Shift for result now we know there is no overflow. + __ shlq(left, Immediate(shift)); + break; + } + default: + UNREACHABLE(); + } + } else { + // Code for a variable shift amount. + // Deoptimize if shift count is > 63. + // sarl operation masks the count to 5 bits and + // shrd is undefined with count > operand size (32) + __ SmiUntag(RCX); + if (has_shift_count_check()) { + __ cmpq(RCX, Immediate(kMintShiftCountLimit)); + __ j(ABOVE, deopt); + } + Label done, large_shift; + switch (op_kind()) { + case Token::kSHR: { + __ sarq(left, RCX); + break; + } + case Token::kSHL: { + if (can_overflow()) { + // Check for overflow. + Register temp = locs()->temp(0).reg(); + __ movq(temp, left); + __ shlq(left, RCX); + __ sarq(left, RCX); + __ cmpq(left, temp); + __ j(NOT_EQUAL, deopt); // Overflow. + } + // Shift for result now we know there is no overflow. + __ shlq(left, RCX); + break; + } + default: + UNREACHABLE(); + } + } + if (FLAG_throw_on_javascript_int_overflow) { + EmitJavascriptOverflowCheck(compiler, range(), deopt, out); + } } @@ -5573,9 +5814,177 @@ CompileType UnaryUint32OpInstr::ComputeType() const { } -DEFINE_UNIMPLEMENTED_INSTRUCTION(BinaryUint32OpInstr) -DEFINE_UNIMPLEMENTED_INSTRUCTION(ShiftUint32OpInstr) -DEFINE_UNIMPLEMENTED_INSTRUCTION(UnaryUint32OpInstr) +LocationSummary* BinaryUint32OpInstr::MakeLocationSummary(Isolate* isolate, + bool opt) const { + const intptr_t kNumInputs = 2; + const intptr_t kNumTemps = (op_kind() == Token::kMUL) ? 1 : 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_in(1, Location::RequiresRegister()); + summary->set_out(0, Location::SameAsFirstInput()); + return summary; +} + + +template +static void EmitIntegerArithmetic(FlowGraphCompiler* compiler, + Token::Kind op_kind, + Register left, + const OperandType& right, + Label* deopt) { + switch (op_kind) { + case Token::kADD: + __ addl(left, right); + break; + case Token::kSUB: + __ subl(left, right); + break; + case Token::kBIT_AND: + __ andl(left, right); + break; + case Token::kBIT_OR: + __ orl(left, right); + break; + case Token::kBIT_XOR: + __ xorl(left, right); + break; + case Token::kMUL: + __ imull(left, right); + break; + default: + UNREACHABLE(); + } + if (deopt != NULL) __ j(OVERFLOW, deopt); +} + + +void BinaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + Register left = locs()->in(0).reg(); + Register right = locs()->in(1).reg(); + Register out = locs()->out(0).reg(); + ASSERT(out == left); + switch (op_kind()) { + case Token::kBIT_AND: + case Token::kBIT_OR: + case Token::kBIT_XOR: + case Token::kADD: + case Token::kSUB: + case Token::kMUL: + EmitIntegerArithmetic(compiler, op_kind(), left, right, NULL); + return; + default: + UNREACHABLE(); + } +} + + +LocationSummary* ShiftUint32OpInstr::MakeLocationSummary(Isolate* isolate, + bool opt) const { + const intptr_t kNumInputs = 2; + const intptr_t kNumTemps = 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_in(1, Location::FixedRegisterOrSmiConstant(right(), RCX)); + summary->set_out(0, Location::SameAsFirstInput()); + return summary; +} + + +void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + const intptr_t kShifterLimit = 31; + + Register left = locs()->in(0).reg(); + Register out = locs()->out(0).reg(); + ASSERT(left == out); + + + Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptShiftMintOp); + + if (locs()->in(1).IsConstant()) { + // Shifter is constant. + + const Object& constant = locs()->in(1).constant(); + ASSERT(constant.IsSmi()); + const intptr_t shift_value = Smi::Cast(constant).Value(); + + // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit). + switch (op_kind()) { + case Token::kSHR: + __ shrl(left, Immediate(shift_value)); + break; + case Token::kSHL: + __ shll(left, Immediate(shift_value)); + break; + default: + UNREACHABLE(); + } + return; + } + + // Non constant shift value. + + Register shifter = locs()->in(1).reg(); + ASSERT(shifter == RCX); + + Label done; + Label zero; + + // TODO(johnmccutchan): Use range information to avoid these checks. + __ SmiUntag(shifter); + __ cmpq(shifter, Immediate(0)); + // If shift value is < 0, deoptimize. + __ j(NEGATIVE, deopt); + __ cmpq(shifter, Immediate(kShifterLimit)); + // If shift value is >= 32, return zero. + __ j(ABOVE, &zero); + + // Do the shift. + switch (op_kind()) { + case Token::kSHR: + __ shrl(left, shifter); + __ jmp(&done); + break; + case Token::kSHL: + __ shll(left, shifter); + __ jmp(&done); + break; + default: + UNREACHABLE(); + } + + __ Bind(&zero); + // Shift was greater than 31 bits, just return zero. + __ xorq(left, left); + + // Exit path. + __ Bind(&done); +} + + +LocationSummary* UnaryUint32OpInstr::MakeLocationSummary(Isolate* isolate, + bool opt) const { + const intptr_t kNumInputs = 1; + const intptr_t kNumTemps = 0; + LocationSummary* summary = new(isolate) LocationSummary( + isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); + summary->set_in(0, Location::RequiresRegister()); + summary->set_out(0, Location::SameAsFirstInput()); + return summary; +} + + +void UnaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { + Register out = locs()->out(0).reg(); + ASSERT(locs()->in(0).reg() == out); + + ASSERT(op_kind() == Token::kBIT_NOT); + + __ notl(out); +} + + DEFINE_UNIMPLEMENTED_INSTRUCTION(BinaryInt32OpInstr) @@ -5667,9 +6076,13 @@ LocationSummary* UnboxedIntConverterInstr::MakeLocationSummary(Isolate* isolate, LocationSummary* summary = new(isolate) LocationSummary( isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall); if (from() == kUnboxedMint) { - UNREACHABLE(); + ASSERT((to() == kUnboxedUint32) || (to() == kUnboxedInt32)); + summary->set_in(0, Location::RequiresRegister()); + summary->set_out(0, Location::SameAsFirstInput()); } else if (to() == kUnboxedMint) { - UNREACHABLE(); + ASSERT((from() == kUnboxedInt32) || (from() == kUnboxedUint32)); + summary->set_in(0, Location::RequiresRegister()); + summary->set_out(0, Location::SameAsFirstInput()); } else { ASSERT((to() == kUnboxedUint32) || (to() == kUnboxedInt32)); ASSERT((from() == kUnboxedUint32) || (from() == kUnboxedInt32)); @@ -5701,10 +6114,34 @@ void UnboxedIntConverterInstr::EmitNativeCode(FlowGraphCompiler* compiler) { __ j(NEGATIVE, deopt); } } else if (from() == kUnboxedMint) { - UNREACHABLE(); + ASSERT((to() == kUnboxedUint32) || (to() == kUnboxedInt32)); + const Register value = locs()->in(0).reg(); + const Register out = locs()->out(0).reg(); + if (!CanDeoptimize()) { + // Copy low. + __ movl(out, value); + } else { + Label* deopt = + compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnboxInteger); + // Sign extend. + __ movsxd(out, value); + // Compare with original value. + __ cmpq(out, value); + // Value cannot be held in Int32, deopt. + __ j(NOT_EQUAL, deopt); + } } else if (to() == kUnboxedMint) { ASSERT((from() == kUnboxedUint32) || (from() == kUnboxedInt32)); - UNREACHABLE(); + const Register value = locs()->in(0).reg(); + const Register out = locs()->out(0).reg(); + if (from() == kUnboxedUint32) { + // Zero extend. + __ movl(out, value); + } else { + // Sign extend. + ASSERT(from() == kUnboxedInt32); + __ movsxd(out, value); + } } else { UNREACHABLE(); } diff --git a/runtime/vm/method_recognizer.h b/runtime/vm/method_recognizer.h index c7062842c934..0c4a9ec8169c 100644 --- a/runtime/vm/method_recognizer.h +++ b/runtime/vm/method_recognizer.h @@ -23,6 +23,7 @@ namespace dart { V(_TypedList, _getUint16, ByteArrayBaseGetUint16, 1142676276) \ V(_TypedList, _getInt32, ByteArrayBaseGetInt32, 330269934) \ V(_TypedList, _getUint32, ByteArrayBaseGetUint32, 59490554) \ + V(_TypedList, _getInt64, ByteArrayBaseGetInt64, 322272622) \ V(_TypedList, _getFloat32, ByteArrayBaseGetFloat32, 393003933) \ V(_TypedList, _getFloat64, ByteArrayBaseGetFloat64, 1792407200) \ V(_TypedList, _getFloat32x4, ByteArrayBaseGetFloat32x4, 1338379857) \ @@ -33,6 +34,7 @@ namespace dart { V(_TypedList, _setUint16, ByteArrayBaseSetUint16, 888580944) \ V(_TypedList, _setInt32, ByteArrayBaseSetInt32, 1708248181) \ V(_TypedList, _setUint32, ByteArrayBaseSetUint32, 1863152792) \ + V(_TypedList, _setInt64, ByteArrayBaseSetInt64, 1473080053) \ V(_TypedList, _setFloat32, ByteArrayBaseSetFloat32, 1148703855) \ V(_TypedList, _setFloat64, ByteArrayBaseSetFloat64, 972883980) \ V(_TypedList, _setFloat32x4, ByteArrayBaseSetFloat32x4, 950522310) \ @@ -136,6 +138,8 @@ namespace dart { V(_Int32Array, []=, Int32ArraySetIndexed, 338968571) \ V(_Uint32Array, [], Uint32ArrayGetIndexed, 1640672852) \ V(_Uint32Array, []=, Uint32ArraySetIndexed, 1472976717) \ + V(_Int64Array, [], Int64ArrayGetIndexed, 206855782) \ + V(_Int64Array, []=, Int64ArraySetIndexed, 1258282177) \ V(_Float32x4Array, [], Float32x4ArrayGetIndexed, 1466627059) \ V(_Float32x4Array, []=, Float32x4ArraySetIndexed, 2141660076) \ V(_Int32x4Array, [], Int32x4ArrayGetIndexed, 818792056) \ @@ -349,6 +353,8 @@ namespace dart { V(_Int16Array, []=, Int16ArraySetIndexed, 1610252345) \ V(_Int32Array, [], Int32ArrayGetIndexed, 203101370) \ V(_Int32Array, []=, Int32ArraySetIndexed, 338968571) \ + V(_Int64Array, [], Int64ArrayGetIndexed, 206855782) \ + V(_Int64Array, []=, Int64ArraySetIndexed, 1258282177) \ V(_Uint8ArrayView, [], Uint8ArrayViewGetIndexed, 1543480955) \ V(_Uint8ArrayView, []=, Uint8ArrayViewSetIndexed, 936729641) \ V(_Int8ArrayView, [], Int8ArrayViewGetIndexed, 1898018934) \ diff --git a/tests/lib/typed_data/int64_list_load_store_test.dart b/tests/lib/typed_data/int64_list_load_store_test.dart new file mode 100644 index 000000000000..6dd09c67f0fb --- /dev/null +++ b/tests/lib/typed_data/int64_list_load_store_test.dart @@ -0,0 +1,38 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. +// VMOptions=--optimization-counter-threshold=10 + +// Test that the compiler's load elimination phase sees interfering writes to +// the array's buffer. + +import "dart:typed_data"; +import 'package:expect/expect.dart'; + +void testStoreLoad(l, z) { + l[0] = 9223372036854775807; + l[1] = 9223372036854775806; + l[2] = l[0]; + l[3] = z; + Expect.equals(l[0], 9223372036854775807); + Expect.equals(l[1], 9223372036854775806); + Expect.isTrue(l[1] < l[0]); + Expect.equals(l[2], l[0]); + Expect.equals(l[3], z); +} + +main() { + var l = new Int64List(4); + var zGood = 9223372036854775807; + var zBad = false; + for (var i = 0; i < 40; i++) { + testStoreLoad(l, zGood); + } + // Deopt. + try { + testStoreLoad(l, zBad); + } catch (_) { } + for (var i = 0; i < 40; i++) { + testStoreLoad(l, zGood); + } +} From aa2319fa88b1ef6439fafd22dfa2100a0e747a40 Mon Sep 17 00:00:00 2001 From: "johnmccutchan@google.com" Date: Tue, 21 Oct 2014 20:30:34 +0000 Subject: [PATCH 73/91] Expect int64_list_load_store_test to fail for dart2js BUG= Review URL: https://codereview.chromium.org//644433005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41234 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/lib/lib.status | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/lib/lib.status b/tests/lib/lib.status index f8dbd8eb4e0d..12b7bf0c1679 100644 --- a/tests/lib/lib.status +++ b/tests/lib/lib.status @@ -210,6 +210,7 @@ mirrors/mirrors_reader_test: Timeout, Slow, RuntimeError # Issue 16589 [ $compiler == dart2js ] typed_data/typed_data_hierarchy_int64_test: RuntimeError # Issue 10275 typed_data/int32x4_bigint_test: RuntimeError # Issue 1533 +typed_data/int64_list_load_store_test: RuntimeError # Issue 10275 [ $runtime == opera ] async/multiple_timer_test: Pass, Fail # Probably issue 14734 From 8f337c37d151d45d9ed66bc5d517d4b925a1506a Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Tue, 21 Oct 2014 20:34:31 +0000 Subject: [PATCH 74/91] Issue 21373. Fix for removing line info in case of exception (causes NPE in outline computer). I will update analysis_server/pubspec.yaml before commit. R=brianwilkerson@google.com BUG= https://code.google.com/p/dart/issues/detail?id=21373 Review URL: https://codereview.chromium.org//652903006 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41235 260f80e4-7a28-3924-810f-c04153c831b5 --- .../lib/src/analysis_server.dart | 3 +- .../lib/src/computer/computer_outline.dart | 21 +++---- .../lib/src/operation/operation_analysis.dart | 62 ++++++++++++------- pkg/analysis_server/pubspec.yaml | 2 +- .../analysis/notification_outline_test.dart | 20 ++++++ pkg/analyzer/lib/src/generated/engine.dart | 1 - pkg/analyzer/pubspec.yaml | 2 +- 7 files changed, 73 insertions(+), 38 deletions(-) diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart index f622ebadc3f2..b63a9c0346f9 100644 --- a/pkg/analysis_server/lib/src/analysis_server.dart +++ b/pkg/analysis_server/lib/src/analysis_server.dart @@ -651,10 +651,11 @@ class AnalysisServer { sendAnalysisNotificationOccurrences(this, file, dartUnit); break; case AnalysisService.OUTLINE: + LineInfo lineInfo = context.getLineInfo(source); sendAnalysisNotificationOutline( this, - context, source, + lineInfo, dartUnit); break; case AnalysisService.OVERRIDES: diff --git a/pkg/analysis_server/lib/src/computer/computer_outline.dart b/pkg/analysis_server/lib/src/computer/computer_outline.dart index da43b614c8cb..bb1604777d27 100644 --- a/pkg/analysis_server/lib/src/computer/computer_outline.dart +++ b/pkg/analysis_server/lib/src/computer/computer_outline.dart @@ -8,7 +8,6 @@ import 'package:analysis_server/src/collections.dart'; import 'package:analysis_server/src/protocol.dart'; import 'package:analyzer/src/generated/ast.dart'; import 'package:analyzer/src/generated/element.dart' as engine; -import 'package:analyzer/src/generated/engine.dart'; import 'package:analyzer/src/generated/source.dart'; @@ -16,21 +15,19 @@ import 'package:analyzer/src/generated/source.dart'; * A computer for [CompilationUnit] outline. */ class DartUnitOutlineComputer { - final CompilationUnit _unit; - String file; - LineInfo lineInfo; + final String file; + final CompilationUnit unit; + final LineInfo lineInfo; - DartUnitOutlineComputer(AnalysisContext context, Source source, this._unit) { - file = source.fullName; - lineInfo = context.getLineInfo(source); - } + DartUnitOutlineComputer(Source source, this.lineInfo, this.unit) + : file = source.fullName; /** * Returns the computed outline, not `null`. */ Outline compute() { List unitContents = []; - for (CompilationUnitMember unitMember in _unit.declarations) { + for (CompilationUnitMember unitMember in unit.declarations) { if (unitMember is ClassDeclaration) { ClassDeclaration classDeclaration = unitMember; List classContents = []; @@ -328,11 +325,11 @@ class DartUnitOutlineComputer { ElementKind.COMPILATION_UNIT, '', Element.makeFlags(), - location: _getLocationNode(_unit)); + location: _getLocationNode(unit)); return new Outline( element, - _unit.offset, - _unit.length, + unit.offset, + unit.length, children: nullIfEmpty(unitContents)); } diff --git a/pkg/analysis_server/lib/src/operation/operation_analysis.dart b/pkg/analysis_server/lib/src/operation/operation_analysis.dart index d9e46f24e355..6ce6fbddaccc 100644 --- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart +++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart @@ -22,44 +22,50 @@ import 'package:analyzer/src/generated/source.dart'; void sendAnalysisNotificationErrors(AnalysisServer server, String file, LineInfo lineInfo, List errors) { - server.sendNotification(new protocol.AnalysisErrorsParams(file, - protocol.doAnalysisError_listFromEngine(lineInfo, errors)).toNotification()); + var serverErrors = protocol.doAnalysisError_listFromEngine(lineInfo, errors); + var params = new protocol.AnalysisErrorsParams(file, serverErrors); + server.sendNotification(params.toNotification()); } void sendAnalysisNotificationHighlights(AnalysisServer server, String file, CompilationUnit dartUnit) { - server.sendNotification(new protocol.AnalysisHighlightsParams(file, - new DartUnitHighlightsComputer(dartUnit).compute()).toNotification()); + var regions = new DartUnitHighlightsComputer(dartUnit).compute(); + var params = new protocol.AnalysisHighlightsParams(file, regions); + server.sendNotification(params.toNotification()); } void sendAnalysisNotificationNavigation(AnalysisServer server, String file, CompilationUnit dartUnit) { - server.sendNotification(new protocol.AnalysisNavigationParams(file, - new DartUnitNavigationComputer(dartUnit).compute()).toNotification()); + var regions = new DartUnitNavigationComputer(dartUnit).compute(); + var params = new protocol.AnalysisNavigationParams(file, regions); + server.sendNotification(params.toNotification()); } void sendAnalysisNotificationOccurrences(AnalysisServer server, String file, CompilationUnit dartUnit) { - server.sendNotification(new protocol.AnalysisOccurrencesParams(file, - new DartUnitOccurrencesComputer(dartUnit).compute()).toNotification()); + var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute(); + var params = new protocol.AnalysisOccurrencesParams(file, occurrences); + server.sendNotification(params.toNotification()); } -void sendAnalysisNotificationOutline(AnalysisServer server, - AnalysisContext context, Source source, CompilationUnit dartUnit) { - server.sendNotification(new protocol.AnalysisOutlineParams(source.fullName, - new DartUnitOutlineComputer(context, source, - dartUnit).compute()).toNotification()); +void sendAnalysisNotificationOutline(AnalysisServer server, Source source, + LineInfo lineInfo, CompilationUnit dartUnit) { + var outline = + new DartUnitOutlineComputer(source, lineInfo, dartUnit).compute(); + var params = new protocol.AnalysisOutlineParams(source.fullName, outline); + server.sendNotification(params.toNotification()); } void sendAnalysisNotificationOverrides(AnalysisServer server, String file, CompilationUnit dartUnit) { - server.sendNotification(new protocol.AnalysisOverridesParams(file, - new DartUnitOverridesComputer(dartUnit).compute()).toNotification()); + var overrides = new DartUnitOverridesComputer(dartUnit).compute(); + var params = new protocol.AnalysisOverridesParams(file, overrides); + server.sendNotification(params.toNotification()); } @@ -95,7 +101,8 @@ class PerformAnalysisOperation extends ServerOperation { AnalysisResult result = context.performAnalysisTask(); List notices = result.changeNotices; if (notices == null) { - server.sendContextAnalysisDoneNotifications(context, + server.sendContextAnalysisDoneNotifications( + context, AnalysisDoneReason.COMPLETE); return; } @@ -117,19 +124,30 @@ class PerformAnalysisOperation extends ServerOperation { // Dart CompilationUnit dartUnit = notice.compilationUnit; if (dartUnit != null) { - if (server.hasAnalysisSubscription(protocol.AnalysisService.HIGHLIGHTS, file)) { + if (server.hasAnalysisSubscription( + protocol.AnalysisService.HIGHLIGHTS, + file)) { sendAnalysisNotificationHighlights(server, file, dartUnit); } - if (server.hasAnalysisSubscription(protocol.AnalysisService.NAVIGATION, file)) { + if (server.hasAnalysisSubscription( + protocol.AnalysisService.NAVIGATION, + file)) { sendAnalysisNotificationNavigation(server, file, dartUnit); } - if (server.hasAnalysisSubscription(protocol.AnalysisService.OCCURRENCES, file)) { + if (server.hasAnalysisSubscription( + protocol.AnalysisService.OCCURRENCES, + file)) { sendAnalysisNotificationOccurrences(server, file, dartUnit); } - if (server.hasAnalysisSubscription(protocol.AnalysisService.OUTLINE, file)) { - sendAnalysisNotificationOutline(server, context, source, dartUnit); + if (server.hasAnalysisSubscription( + protocol.AnalysisService.OUTLINE, + file)) { + LineInfo lineInfo = notice.lineInfo; + sendAnalysisNotificationOutline(server, source, lineInfo, dartUnit); } - if (server.hasAnalysisSubscription(protocol.AnalysisService.OVERRIDES, file)) { + if (server.hasAnalysisSubscription( + protocol.AnalysisService.OVERRIDES, + file)) { sendAnalysisNotificationOverrides(server, file, dartUnit); } } diff --git a/pkg/analysis_server/pubspec.yaml b/pkg/analysis_server/pubspec.yaml index f769395d37fb..c35ce2564513 100644 --- a/pkg/analysis_server/pubspec.yaml +++ b/pkg/analysis_server/pubspec.yaml @@ -6,7 +6,7 @@ homepage: http://www.dartlang.org environment: sdk: '>=1.0.0 <2.0.0' dependencies: - analyzer: 0.23.0-dev.11 + analyzer: 0.23.0-dev.12 args: any logging: any path: any diff --git a/pkg/analysis_server/test/analysis/notification_outline_test.dart b/pkg/analysis_server/test/analysis/notification_outline_test.dart index 5ab518260f66..23567cbe9e82 100644 --- a/pkg/analysis_server/test/analysis/notification_outline_test.dart +++ b/pkg/analysis_server/test/analysis/notification_outline_test.dart @@ -256,6 +256,26 @@ class B { }); } + /** + * Code like this caused NPE in the past. + * + * https://code.google.com/p/dart/issues/detail?id=21373 + */ + test_invalidGetterInConstructor() { + addTestFile(''' +class A { + A() { + get badGetter { + const int CONST = 0; + } + } +} +'''); + return prepareOutline().then((_) { + expect(outline, isNotNull); + }); + } + test_localFunctions() { addTestFile(''' class A { diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart index 79220a5364e4..ea758e79a786 100644 --- a/pkg/analyzer/lib/src/generated/engine.dart +++ b/pkg/analyzer/lib/src/generated/engine.dart @@ -2010,7 +2010,6 @@ class AnalysisContextImpl implements InternalAnalysisContext { dartEntry.recordResolutionErrorInLibrary( librarySource, thrownException); - _cache.remove(source); } if (source != librarySource) { _workManager.add(source, SourcePriority.PRIORITY_PART); diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml index 6d69db6bb57b..61d046d9281b 100644 --- a/pkg/analyzer/pubspec.yaml +++ b/pkg/analyzer/pubspec.yaml @@ -1,5 +1,5 @@ name: analyzer -version: 0.23.0-dev.11 +version: 0.23.0-dev.12 author: Dart Team description: Static analyzer for Dart. homepage: http://www.dartlang.org From 6de178619902eca0efa6ac51ac888cb5d0c3360e Mon Sep 17 00:00:00 2001 From: "leafp@google.com" Date: Tue, 21 Oct 2014 20:46:55 +0000 Subject: [PATCH 75/91] Arity indexing in dart:blink entry points This CL replaces type mangling on the blink entry points with arity indexing. So overloaded methods or methods with optional arguments now dispatch to blink entries specific to their number of arguments (but not their types). This relies on C++ overload resolution being in place on the blink side (see https://codereview.chromium.org/668733002/). For the time being, the dart side overload resolution code is left in place. Resolver strings now have no type or arity info as well. BUG= R=vsm@google.com Review URL: https://codereview.chromium.org//667983002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41236 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/lib/_blink/dartium/_blink_dartium.dart | 3314 +++++++++-------- sdk/lib/html/dart2js/html_dart2js.dart | 8 +- sdk/lib/html/dartium/html_dartium.dart | 2765 +++++++------- .../dartium/indexed_db_dartium.dart | 163 +- sdk/lib/svg/dartium/svg_dartium.dart | 422 +-- .../web_audio/dartium/web_audio_dartium.dart | 142 +- sdk/lib/web_gl/dartium/web_gl_dartium.dart | 326 +- sdk/lib/web_sql/dartium/web_sql_dartium.dart | 69 +- tools/dom/scripts/css_code_generator.py | 2 +- tools/dom/scripts/htmldartgenerator.py | 5 +- tools/dom/scripts/systemhtml.py | 2 +- tools/dom/scripts/systemnative.py | 66 +- .../impl_CSSStyleDeclaration.darttemplate | 2 +- .../html/impl/impl_Element.darttemplate | 4 +- 14 files changed, 3764 insertions(+), 3526 deletions(-) diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart index fc59300b4c8e..98fae38794b5 100644 --- a/sdk/lib/_blink/dartium/_blink_dartium.dart +++ b/sdk/lib/_blink/dartium/_blink_dartium.dart @@ -15,27 +15,31 @@ library dart.dom._blink; class BlinkANGLEInstancedArrays { - static drawArraysInstancedANGLE_Callback_ul_long_long_long(mthis, mode, first, count, primcount) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback_unsigned long_long_long_long"; + static drawArraysInstancedANGLE_Callback_4(mthis, mode, first, count, primcount) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback"; - static drawElementsInstancedANGLE_Callback_ul_long_ul_ll_long(mthis, mode, count, type, offset, primcount) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback_unsigned long_long_unsigned long_long long_long"; + static drawElementsInstancedANGLE_Callback_5(mthis, mode, count, type, offset, primcount) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback"; - static vertexAttribDivisorANGLE_Callback_ul_long(mthis, index, divisor) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback_unsigned long_long"; + static vertexAttribDivisorANGLE_Callback_2(mthis, index, divisor) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback"; } class BlinkAbstractWorker {} class BlinkEventTarget { - static addEventListener_Callback_DOMString_EventListener_boolean(mthis, type, listener, useCapture) native "EventTarget_addEventListener_Callback_DOMString_EventListener_boolean"; + static addEventListener_Callback_3(mthis, type, listener, useCapture) native "EventTarget_addEventListener_Callback"; - static addEventListener_Callback_DOMString(mthis, type) native "EventTarget_addEventListener_Callback_DOMString"; + static addEventListener_Callback_2(mthis, type, listener) native "EventTarget_addEventListener_Callback"; + + static addEventListener_Callback_1(mthis, type) native "EventTarget_addEventListener_Callback"; static addEventListener_Callback(mthis) native "EventTarget_addEventListener_Callback"; - static dispatchEvent_Callback_Event(mthis, event) native "EventTarget_dispatchEvent_Callback_Event"; + static dispatchEvent_Callback_1(mthis, event) native "EventTarget_dispatchEvent_Callback"; + + static removeEventListener_Callback_3(mthis, type, listener, useCapture) native "EventTarget_removeEventListener_Callback"; - static removeEventListener_Callback_DOMString_EventListener_boolean(mthis, type, listener, useCapture) native "EventTarget_removeEventListener_Callback_DOMString_EventListener_boolean"; + static removeEventListener_Callback_2(mthis, type, listener) native "EventTarget_removeEventListener_Callback"; - static removeEventListener_Callback_DOMString(mthis, type) native "EventTarget_removeEventListener_Callback_DOMString"; + static removeEventListener_Callback_1(mthis, type) native "EventTarget_removeEventListener_Callback"; static removeEventListener_Callback(mthis) native "EventTarget_removeEventListener_Callback"; } @@ -43,15 +47,15 @@ class BlinkEventTarget { class BlinkAudioNode { static channelCount_Getter(mthis) native "AudioNode_channelCount_Getter"; - static channelCount_Setter_ul(mthis, value) native "AudioNode_channelCount_Setter"; + static channelCount_Setter(mthis, value) native "AudioNode_channelCount_Setter"; static channelCountMode_Getter(mthis) native "AudioNode_channelCountMode_Getter"; - static channelCountMode_Setter_DOMString(mthis, value) native "AudioNode_channelCountMode_Setter"; + static channelCountMode_Setter(mthis, value) native "AudioNode_channelCountMode_Setter"; static channelInterpretation_Getter(mthis) native "AudioNode_channelInterpretation_Getter"; - static channelInterpretation_Setter_DOMString(mthis, value) native "AudioNode_channelInterpretation_Setter"; + static channelInterpretation_Setter(mthis, value) native "AudioNode_channelInterpretation_Setter"; static context_Getter(mthis) native "AudioNode_context_Getter"; @@ -59,39 +63,39 @@ class BlinkAudioNode { static numberOfOutputs_Getter(mthis) native "AudioNode_numberOfOutputs_Getter"; - static connect_Callback_AudioNode_ul_ul(mthis, destination, output, input) native "AudioNode_connect_Callback_AudioNode_unsigned long_unsigned long"; + static connect_Callback_3(mthis, destination, output, input) native "AudioNode_connect_Callback"; - static connect_Callback_AudioParam_ul(mthis, destination, output) native "AudioNode_connect_Callback_AudioParam_unsigned long"; + static connect_Callback_2(mthis, destination, output) native "AudioNode_connect_Callback"; - static disconnect_Callback_ul(mthis, output) native "AudioNode_disconnect_Callback_unsigned long"; + static disconnect_Callback_1(mthis, output) native "AudioNode_disconnect_Callback"; } class BlinkAnalyserNode { static fftSize_Getter(mthis) native "AnalyserNode_fftSize_Getter"; - static fftSize_Setter_ul(mthis, value) native "AnalyserNode_fftSize_Setter"; + static fftSize_Setter(mthis, value) native "AnalyserNode_fftSize_Setter"; static frequencyBinCount_Getter(mthis) native "AnalyserNode_frequencyBinCount_Getter"; static maxDecibels_Getter(mthis) native "AnalyserNode_maxDecibels_Getter"; - static maxDecibels_Setter_double(mthis, value) native "AnalyserNode_maxDecibels_Setter"; + static maxDecibels_Setter(mthis, value) native "AnalyserNode_maxDecibels_Setter"; static minDecibels_Getter(mthis) native "AnalyserNode_minDecibels_Getter"; - static minDecibels_Setter_double(mthis, value) native "AnalyserNode_minDecibels_Setter"; + static minDecibels_Setter(mthis, value) native "AnalyserNode_minDecibels_Setter"; static smoothingTimeConstant_Getter(mthis) native "AnalyserNode_smoothingTimeConstant_Getter"; - static smoothingTimeConstant_Setter_double(mthis, value) native "AnalyserNode_smoothingTimeConstant_Setter"; + static smoothingTimeConstant_Setter(mthis, value) native "AnalyserNode_smoothingTimeConstant_Setter"; - static getByteFrequencyData_Callback_Uint8Array(mthis, array) native "AnalyserNode_getByteFrequencyData_Callback_Uint8Array"; + static getByteFrequencyData_Callback_1(mthis, array) native "AnalyserNode_getByteFrequencyData_Callback"; - static getByteTimeDomainData_Callback_Uint8Array(mthis, array) native "AnalyserNode_getByteTimeDomainData_Callback_Uint8Array"; + static getByteTimeDomainData_Callback_1(mthis, array) native "AnalyserNode_getByteTimeDomainData_Callback"; - static getFloatFrequencyData_Callback_Float32Array(mthis, array) native "AnalyserNode_getFloatFrequencyData_Callback_Float32Array"; + static getFloatFrequencyData_Callback_1(mthis, array) native "AnalyserNode_getFloatFrequencyData_Callback"; - static getFloatTimeDomainData_Callback_Float32Array(mthis, array) native "AnalyserNode_getFloatTimeDomainData_Callback_Float32Array"; + static getFloatTimeDomainData_Callback_1(mthis, array) native "AnalyserNode_getFloatTimeDomainData_Callback"; } class BlinkAnimationNode { @@ -113,11 +117,9 @@ class BlinkAnimationNode { } class BlinkAnimation { - static constructorCallback_Element_SEQ_Dictionary_SEQ(target, keyframes) native "Animation_constructorCallback_Element_sequence"; - - static constructorCallback_Element_SEQ_Dictionary_SEQ_double(target, keyframes, timingInput) native "Animation_constructorCallback_Element_sequence_double"; + static constructorCallback_2(target, keyframes) native "Animation_constructorCallback"; - static constructorCallback_Element_SEQ_Dictionary_SEQ_Dictionary(target, keyframes, timingInput) native "Animation_constructorCallback_Element_sequence_Dictionary"; + static constructorCallback_3(target, keyframes, timingInput) native "Animation_constructorCallback"; } class BlinkAnimationEffect {} @@ -125,7 +127,7 @@ class BlinkAnimationEffect {} class BlinkAnimationPlayer { static currentTime_Getter(mthis) native "AnimationPlayer_currentTime_Getter"; - static currentTime_Setter_double(mthis, value) native "AnimationPlayer_currentTime_Setter"; + static currentTime_Setter(mthis, value) native "AnimationPlayer_currentTime_Setter"; static finished_Getter(mthis) native "AnimationPlayer_finished_Getter"; @@ -133,15 +135,15 @@ class BlinkAnimationPlayer { static playbackRate_Getter(mthis) native "AnimationPlayer_playbackRate_Getter"; - static playbackRate_Setter_double(mthis, value) native "AnimationPlayer_playbackRate_Setter"; + static playbackRate_Setter(mthis, value) native "AnimationPlayer_playbackRate_Setter"; static source_Getter(mthis) native "AnimationPlayer_source_Getter"; - static source_Setter_AnimationNode(mthis, value) native "AnimationPlayer_source_Setter"; + static source_Setter(mthis, value) native "AnimationPlayer_source_Setter"; static startTime_Getter(mthis) native "AnimationPlayer_startTime_Getter"; - static startTime_Setter_double(mthis, value) native "AnimationPlayer_startTime_Setter"; + static startTime_Setter(mthis, value) native "AnimationPlayer_startTime_Setter"; static cancel_Callback(mthis) native "AnimationPlayer_cancel_Callback"; @@ -177,7 +179,7 @@ class BlinkEvent { static type_Getter(mthis) native "Event_type_Getter"; - static initEvent_Callback_DOMString_boolean_boolean(mthis, eventTypeArg, canBubbleArg, cancelableArg) native "Event_initEvent_Callback_DOMString_boolean_boolean"; + static initEvent_Callback_3(mthis, eventTypeArg, canBubbleArg, cancelableArg) native "Event_initEvent_Callback"; static preventDefault_Callback(mthis) native "Event_preventDefault_Callback"; @@ -199,7 +201,7 @@ class BlinkAnimationTimeline { static getAnimationPlayers_Callback(mthis) native "AnimationTimeline_getAnimationPlayers_Callback"; - static play_Callback_AnimationNode(mthis, source) native "AnimationTimeline_play_Callback_AnimationNode"; + static play_Callback_1(mthis, source) native "AnimationTimeline_play_Callback"; } class BlinkApplicationCache { @@ -255,21 +257,21 @@ class BlinkNode { static textContent_Getter(mthis) native "Node_textContent_Getter"; - static textContent_Setter_DOMString(mthis, value) native "Node_textContent_Setter"; + static textContent_Setter(mthis, value) native "Node_textContent_Setter"; - static appendChild_Callback_Node(mthis, newChild) native "Node_appendChild_Callback_Node"; + static appendChild_Callback_1(mthis, newChild) native "Node_appendChild_Callback"; - static cloneNode_Callback_boolean(mthis, deep) native "Node_cloneNode_Callback"; + static cloneNode_Callback_1(mthis, deep) native "Node_cloneNode_Callback"; - static contains_Callback_Node(mthis, other) native "Node_contains_Callback_Node"; + static contains_Callback_1(mthis, other) native "Node_contains_Callback"; static hasChildNodes_Callback(mthis) native "Node_hasChildNodes_Callback"; - static insertBefore_Callback_Node_Node(mthis, newChild, refChild) native "Node_insertBefore_Callback_Node_Node"; + static insertBefore_Callback_2(mthis, newChild, refChild) native "Node_insertBefore_Callback"; - static removeChild_Callback_Node(mthis, oldChild) native "Node_removeChild_Callback_Node"; + static removeChild_Callback_1(mthis, oldChild) native "Node_removeChild_Callback"; - static replaceChild_Callback_Node_Node(mthis, newChild, oldChild) native "Node_replaceChild_Callback_Node_Node"; + static replaceChild_Callback_2(mthis, newChild, oldChild) native "Node_replaceChild_Callback"; } class BlinkAttr { @@ -283,11 +285,11 @@ class BlinkAttr { static textContent_Getter(mthis) native "Attr_textContent_Getter"; - static textContent_Setter_DOMString(mthis, value) native "Attr_textContent_Setter"; + static textContent_Setter(mthis, value) native "Attr_textContent_Setter"; static value_Getter(mthis) native "Attr_value_Getter"; - static value_Setter_DOMString(mthis, value) native "Attr_value_Setter"; + static value_Setter(mthis, value) native "Attr_value_Setter"; } class BlinkAudioBuffer { @@ -299,7 +301,7 @@ class BlinkAudioBuffer { static sampleRate_Getter(mthis) native "AudioBuffer_sampleRate_Getter"; - static getChannelData_Callback_ul(mthis, channelIndex) native "AudioBuffer_getChannelData_Callback_unsigned long"; + static getChannelData_Callback_1(mthis, channelIndex) native "AudioBuffer_getChannelData_Callback"; } class BlinkAudioSourceNode {} @@ -307,31 +309,31 @@ class BlinkAudioSourceNode {} class BlinkAudioBufferSourceNode { static buffer_Getter(mthis) native "AudioBufferSourceNode_buffer_Getter"; - static buffer_Setter_AudioBuffer(mthis, value) native "AudioBufferSourceNode_buffer_Setter"; + static buffer_Setter(mthis, value) native "AudioBufferSourceNode_buffer_Setter"; static loop_Getter(mthis) native "AudioBufferSourceNode_loop_Getter"; - static loop_Setter_boolean(mthis, value) native "AudioBufferSourceNode_loop_Setter"; + static loop_Setter(mthis, value) native "AudioBufferSourceNode_loop_Setter"; static loopEnd_Getter(mthis) native "AudioBufferSourceNode_loopEnd_Getter"; - static loopEnd_Setter_double(mthis, value) native "AudioBufferSourceNode_loopEnd_Setter"; + static loopEnd_Setter(mthis, value) native "AudioBufferSourceNode_loopEnd_Setter"; static loopStart_Getter(mthis) native "AudioBufferSourceNode_loopStart_Getter"; - static loopStart_Setter_double(mthis, value) native "AudioBufferSourceNode_loopStart_Setter"; + static loopStart_Setter(mthis, value) native "AudioBufferSourceNode_loopStart_Setter"; static playbackRate_Getter(mthis) native "AudioBufferSourceNode_playbackRate_Getter"; - static start_Callback_double_double_double(mthis, when, grainOffset, grainDuration) native "AudioBufferSourceNode_start_Callback_double_double_double"; + static start_Callback_3(mthis, when, grainOffset, grainDuration) native "AudioBufferSourceNode_start_Callback"; - static start_Callback_double_double(mthis, when, grainOffset) native "AudioBufferSourceNode_start_Callback_double_double"; + static start_Callback_2(mthis, when, grainOffset) native "AudioBufferSourceNode_start_Callback"; - static start_Callback_double(mthis, when) native "AudioBufferSourceNode_start_Callback_double"; + static start_Callback_1(mthis, when) native "AudioBufferSourceNode_start_Callback"; static start_Callback(mthis) native "AudioBufferSourceNode_start_Callback"; - static stop_Callback_double(mthis, when) native "AudioBufferSourceNode_stop_Callback_double"; + static stop_Callback_1(mthis, when) native "AudioBufferSourceNode_stop_Callback"; static stop_Callback(mthis) native "AudioBufferSourceNode_stop_Callback"; } @@ -351,21 +353,21 @@ class BlinkAudioContext { static createBiquadFilter_Callback(mthis) native "AudioContext_createBiquadFilter_Callback"; - static createBuffer_Callback_ul_ul_float(mthis, numberOfChannels, numberOfFrames, sampleRate) native "AudioContext_createBuffer_Callback_unsigned long_unsigned long_float"; + static createBuffer_Callback_3(mthis, numberOfChannels, numberOfFrames, sampleRate) native "AudioContext_createBuffer_Callback"; static createBufferSource_Callback(mthis) native "AudioContext_createBufferSource_Callback"; - static createChannelMerger_Callback_ul(mthis, numberOfInputs) native "AudioContext_createChannelMerger_Callback_unsigned long"; + static createChannelMerger_Callback_1(mthis, numberOfInputs) native "AudioContext_createChannelMerger_Callback"; static createChannelMerger_Callback(mthis) native "AudioContext_createChannelMerger_Callback"; - static createChannelSplitter_Callback_ul(mthis, numberOfOutputs) native "AudioContext_createChannelSplitter_Callback_unsigned long"; + static createChannelSplitter_Callback_1(mthis, numberOfOutputs) native "AudioContext_createChannelSplitter_Callback"; static createChannelSplitter_Callback(mthis) native "AudioContext_createChannelSplitter_Callback"; static createConvolver_Callback(mthis) native "AudioContext_createConvolver_Callback"; - static createDelay_Callback_double(mthis, maxDelayTime) native "AudioContext_createDelay_Callback_double"; + static createDelay_Callback_1(mthis, maxDelayTime) native "AudioContext_createDelay_Callback"; static createDelay_Callback(mthis) native "AudioContext_createDelay_Callback"; @@ -373,29 +375,29 @@ class BlinkAudioContext { static createGain_Callback(mthis) native "AudioContext_createGain_Callback"; - static createMediaElementSource_Callback_HTMLMediaElement(mthis, mediaElement) native "AudioContext_createMediaElementSource_Callback_HTMLMediaElement"; + static createMediaElementSource_Callback_1(mthis, mediaElement) native "AudioContext_createMediaElementSource_Callback"; static createMediaStreamDestination_Callback(mthis) native "AudioContext_createMediaStreamDestination_Callback"; - static createMediaStreamSource_Callback_MediaStream(mthis, mediaStream) native "AudioContext_createMediaStreamSource_Callback_MediaStream"; + static createMediaStreamSource_Callback_1(mthis, mediaStream) native "AudioContext_createMediaStreamSource_Callback"; static createOscillator_Callback(mthis) native "AudioContext_createOscillator_Callback"; static createPanner_Callback(mthis) native "AudioContext_createPanner_Callback"; - static createPeriodicWave_Callback_Float32Array_Float32Array(mthis, real, imag) native "AudioContext_createPeriodicWave_Callback_Float32Array_Float32Array"; + static createPeriodicWave_Callback_2(mthis, real, imag) native "AudioContext_createPeriodicWave_Callback"; - static createScriptProcessor_Callback_ul_ul_ul(mthis, bufferSize, numberOfInputChannels, numberOfOutputChannels) native "AudioContext_createScriptProcessor_Callback_unsigned long_unsigned long_unsigned long"; + static createScriptProcessor_Callback_3(mthis, bufferSize, numberOfInputChannels, numberOfOutputChannels) native "AudioContext_createScriptProcessor_Callback"; - static createScriptProcessor_Callback_ul_ul(mthis, bufferSize, numberOfInputChannels) native "AudioContext_createScriptProcessor_Callback_unsigned long_unsigned long"; + static createScriptProcessor_Callback_2(mthis, bufferSize, numberOfInputChannels) native "AudioContext_createScriptProcessor_Callback"; - static createScriptProcessor_Callback_ul(mthis, bufferSize) native "AudioContext_createScriptProcessor_Callback_unsigned long"; + static createScriptProcessor_Callback_1(mthis, bufferSize) native "AudioContext_createScriptProcessor_Callback"; static createScriptProcessor_Callback(mthis) native "AudioContext_createScriptProcessor_Callback"; static createWaveShaper_Callback(mthis) native "AudioContext_createWaveShaper_Callback"; - static decodeAudioData_Callback_ArrayBuffer_AudioBufferCallback_AudioBufferCallback(mthis, audioData, successCallback, errorCallback) native "AudioContext_decodeAudioData_Callback"; + static decodeAudioData_Callback_3(mthis, audioData, successCallback, errorCallback) native "AudioContext_decodeAudioData_Callback"; static startRendering_Callback(mthis) native "AudioContext_startRendering_Callback"; } @@ -407,17 +409,17 @@ class BlinkAudioDestinationNode { class BlinkAudioListener { static dopplerFactor_Getter(mthis) native "AudioListener_dopplerFactor_Getter"; - static dopplerFactor_Setter_float(mthis, value) native "AudioListener_dopplerFactor_Setter"; + static dopplerFactor_Setter(mthis, value) native "AudioListener_dopplerFactor_Setter"; static speedOfSound_Getter(mthis) native "AudioListener_speedOfSound_Getter"; - static speedOfSound_Setter_float(mthis, value) native "AudioListener_speedOfSound_Setter"; + static speedOfSound_Setter(mthis, value) native "AudioListener_speedOfSound_Setter"; - static setOrientation_Callback_float_float_float_float_float_float(mthis, x, y, z, xUp, yUp, zUp) native "AudioListener_setOrientation_Callback_float_float_float_float_float_float"; + static setOrientation_Callback_6(mthis, x, y, z, xUp, yUp, zUp) native "AudioListener_setOrientation_Callback"; - static setPosition_Callback_float_float_float(mthis, x, y, z) native "AudioListener_setPosition_Callback_float_float_float"; + static setPosition_Callback_3(mthis, x, y, z) native "AudioListener_setPosition_Callback"; - static setVelocity_Callback_float_float_float(mthis, x, y, z) native "AudioListener_setVelocity_Callback_float_float_float"; + static setVelocity_Callback_3(mthis, x, y, z) native "AudioListener_setVelocity_Callback"; } class BlinkAudioParam { @@ -425,19 +427,19 @@ class BlinkAudioParam { static value_Getter(mthis) native "AudioParam_value_Getter"; - static value_Setter_float(mthis, value) native "AudioParam_value_Setter"; + static value_Setter(mthis, value) native "AudioParam_value_Setter"; - static cancelScheduledValues_Callback_double(mthis, startTime) native "AudioParam_cancelScheduledValues_Callback_double"; + static cancelScheduledValues_Callback_1(mthis, startTime) native "AudioParam_cancelScheduledValues_Callback"; - static exponentialRampToValueAtTime_Callback_float_double(mthis, value, time) native "AudioParam_exponentialRampToValueAtTime_Callback_float_double"; + static exponentialRampToValueAtTime_Callback_2(mthis, value, time) native "AudioParam_exponentialRampToValueAtTime_Callback"; - static linearRampToValueAtTime_Callback_float_double(mthis, value, time) native "AudioParam_linearRampToValueAtTime_Callback_float_double"; + static linearRampToValueAtTime_Callback_2(mthis, value, time) native "AudioParam_linearRampToValueAtTime_Callback"; - static setTargetAtTime_Callback_float_double_double(mthis, target, time, timeConstant) native "AudioParam_setTargetAtTime_Callback_float_double_double"; + static setTargetAtTime_Callback_3(mthis, target, time, timeConstant) native "AudioParam_setTargetAtTime_Callback"; - static setValueAtTime_Callback_float_double(mthis, value, time) native "AudioParam_setValueAtTime_Callback_float_double"; + static setValueAtTime_Callback_2(mthis, value, time) native "AudioParam_setValueAtTime_Callback"; - static setValueCurveAtTime_Callback_Float32Array_double_double(mthis, values, time, duration) native "AudioParam_setValueCurveAtTime_Callback"; + static setValueCurveAtTime_Callback_3(mthis, values, time, duration) native "AudioParam_setValueCurveAtTime_Callback"; } class BlinkAudioProcessingEvent { @@ -451,7 +453,7 @@ class BlinkAudioProcessingEvent { class BlinkAudioTrack { static enabled_Getter(mthis) native "AudioTrack_enabled_Getter"; - static enabled_Setter_boolean(mthis, value) native "AudioTrack_enabled_Setter"; + static enabled_Setter(mthis, value) native "AudioTrack_enabled_Setter"; static id_Getter(mthis) native "AudioTrack_id_Getter"; @@ -465,9 +467,9 @@ class BlinkAudioTrack { class BlinkAudioTrackList { static length_Getter(mthis) native "AudioTrackList_length_Getter"; - static $__getter___Callback_ul(mthis, index) native "AudioTrackList___getter___Callback_unsigned long"; + static $__getter___Callback_1(mthis, index) native "AudioTrackList___getter___Callback"; - static getTrackById_Callback_DOMString(mthis, id) native "AudioTrackList_getTrackById_Callback_DOMString"; + static getTrackById_Callback_1(mthis, id) native "AudioTrackList_getTrackById_Callback"; } class BlinkAutocompleteErrorEvent { @@ -493,7 +495,7 @@ class BlinkBatteryManager { class BlinkBeforeUnloadEvent { static returnValue_Getter(mthis) native "BeforeUnloadEvent_returnValue_Getter"; - static returnValue_Setter_DOMString(mthis, value) native "BeforeUnloadEvent_returnValue_Setter"; + static returnValue_Setter(mthis, value) native "BeforeUnloadEvent_returnValue_Setter"; } class BlinkBiquadFilterNode { @@ -507,13 +509,13 @@ class BlinkBiquadFilterNode { static type_Getter(mthis) native "BiquadFilterNode_type_Getter"; - static type_Setter_DOMString(mthis, value) native "BiquadFilterNode_type_Setter"; + static type_Setter(mthis, value) native "BiquadFilterNode_type_Setter"; - static getFrequencyResponse_Callback_Float32Array_Float32Array_Float32Array(mthis, frequencyHz, magResponse, phaseResponse) native "BiquadFilterNode_getFrequencyResponse_Callback_Float32Array_Float32Array_Float32Array"; + static getFrequencyResponse_Callback_3(mthis, frequencyHz, magResponse, phaseResponse) native "BiquadFilterNode_getFrequencyResponse_Callback"; } class BlinkBlob { - static constructorCallback_Array_DOMString_DOMString(blobParts, type, endings) native "Blob_constructorCallback"; + static constructorCallback_3(blobParts, type, endings) native "Blob_constructorCallback"; static size_Getter(mthis) native "Blob_size_Getter"; @@ -521,11 +523,11 @@ class BlinkBlob { static close_Callback(mthis) native "Blob_close_Callback"; - static slice_Callback_ll_ll_DOMString(mthis, start, end, contentType) native "Blob_slice_Callback_long long_long long_DOMString"; + static slice_Callback_3(mthis, start, end, contentType) native "Blob_slice_Callback"; - static slice_Callback_ll_ll(mthis, start, end) native "Blob_slice_Callback_long long_long long"; + static slice_Callback_2(mthis, start, end) native "Blob_slice_Callback"; - static slice_Callback_ll(mthis, start) native "Blob_slice_Callback_long long"; + static slice_Callback_1(mthis, start) native "Blob_slice_Callback"; static slice_Callback(mthis) native "Blob_slice_Callback"; } @@ -541,19 +543,19 @@ class BlinkChildNode { class BlinkCharacterData { static data_Getter(mthis) native "CharacterData_data_Getter"; - static data_Setter_DOMString(mthis, value) native "CharacterData_data_Setter"; + static data_Setter(mthis, value) native "CharacterData_data_Setter"; static length_Getter(mthis) native "CharacterData_length_Getter"; - static appendData_Callback_DOMString(mthis, data) native "CharacterData_appendData_Callback_DOMString"; + static appendData_Callback_1(mthis, data) native "CharacterData_appendData_Callback"; - static deleteData_Callback_ul_ul(mthis, offset, length) native "CharacterData_deleteData_Callback_unsigned long_unsigned long"; + static deleteData_Callback_2(mthis, offset, length) native "CharacterData_deleteData_Callback"; - static insertData_Callback_ul_DOMString(mthis, offset, data) native "CharacterData_insertData_Callback_unsigned long_DOMString"; + static insertData_Callback_2(mthis, offset, data) native "CharacterData_insertData_Callback"; - static replaceData_Callback_ul_ul_DOMString(mthis, offset, length, data) native "CharacterData_replaceData_Callback_unsigned long_unsigned long_DOMString"; + static replaceData_Callback_3(mthis, offset, length, data) native "CharacterData_replaceData_Callback"; - static substringData_Callback_ul_ul(mthis, offset, length) native "CharacterData_substringData_Callback_unsigned long_unsigned long"; + static substringData_Callback_2(mthis, offset, length) native "CharacterData_substringData_Callback"; static nextElementSibling_Getter(mthis) native "CharacterData_nextElementSibling_Getter"; @@ -565,21 +567,21 @@ class BlinkText { static getDestinationInsertionPoints_Callback(mthis) native "Text_getDestinationInsertionPoints_Callback"; - static splitText_Callback_ul(mthis, offset) native "Text_splitText_Callback_unsigned long"; + static splitText_Callback_1(mthis, offset) native "Text_splitText_Callback"; } class BlinkCDATASection {} class BlinkCSS { - static supports_Callback_DOMString_DOMString(mthis, property, value) native "CSS_supports_Callback_DOMString_DOMString"; + static supports_Callback_2(mthis, property, value) native "CSS_supports_Callback"; - static supports_Callback_DOMString(mthis, conditionText) native "CSS_supports_Callback_DOMString"; + static supports_Callback_1(mthis, conditionText) native "CSS_supports_Callback"; } class BlinkCSSRule { static cssText_Getter(mthis) native "CSSRule_cssText_Getter"; - static cssText_Setter_DOMString(mthis, value) native "CSSRule_cssText_Setter"; + static cssText_Setter(mthis, value) native "CSSRule_cssText_Setter"; static parentRule_Getter(mthis) native "CSSRule_parentRule_Getter"; @@ -591,7 +593,7 @@ class BlinkCSSRule { class BlinkCSSCharsetRule { static encoding_Getter(mthis) native "CSSCharsetRule_encoding_Getter"; - static encoding_Setter_DOMString(mthis, value) native "CSSCharsetRule_encoding_Setter"; + static encoding_Setter(mthis, value) native "CSSCharsetRule_encoding_Setter"; } class BlinkCSSFontFaceRule { @@ -609,7 +611,7 @@ class BlinkCSSImportRule { class BlinkCSSKeyframeRule { static keyText_Getter(mthis) native "CSSKeyframeRule_keyText_Getter"; - static keyText_Setter_DOMString(mthis, value) native "CSSKeyframeRule_keyText_Setter"; + static keyText_Setter(mthis, value) native "CSSKeyframeRule_keyText_Setter"; static style_Getter(mthis) native "CSSKeyframeRule_style_Getter"; } @@ -619,15 +621,15 @@ class BlinkCSSKeyframesRule { static name_Getter(mthis) native "CSSKeyframesRule_name_Getter"; - static name_Setter_DOMString(mthis, value) native "CSSKeyframesRule_name_Setter"; + static name_Setter(mthis, value) native "CSSKeyframesRule_name_Setter"; - static $__getter___Callback_ul(mthis, index) native "CSSKeyframesRule___getter___Callback_unsigned long"; + static $__getter___Callback_1(mthis, index) native "CSSKeyframesRule___getter___Callback"; - static deleteRule_Callback_DOMString(mthis, key) native "CSSKeyframesRule_deleteRule_Callback_DOMString"; + static deleteRule_Callback_1(mthis, key) native "CSSKeyframesRule_deleteRule_Callback"; - static findRule_Callback_DOMString(mthis, key) native "CSSKeyframesRule_findRule_Callback_DOMString"; + static findRule_Callback_1(mthis, key) native "CSSKeyframesRule_findRule_Callback"; - static insertRule_Callback_DOMString(mthis, rule) native "CSSKeyframesRule_insertRule_Callback_DOMString"; + static insertRule_Callback_1(mthis, rule) native "CSSKeyframesRule_insertRule_Callback"; } class BlinkCSSMediaRule { @@ -635,15 +637,15 @@ class BlinkCSSMediaRule { static media_Getter(mthis) native "CSSMediaRule_media_Getter"; - static deleteRule_Callback_ul(mthis, index) native "CSSMediaRule_deleteRule_Callback_unsigned long"; + static deleteRule_Callback_1(mthis, index) native "CSSMediaRule_deleteRule_Callback"; - static insertRule_Callback_DOMString_ul(mthis, rule, index) native "CSSMediaRule_insertRule_Callback_DOMString_unsigned long"; + static insertRule_Callback_2(mthis, rule, index) native "CSSMediaRule_insertRule_Callback"; } class BlinkCSSPageRule { static selectorText_Getter(mthis) native "CSSPageRule_selectorText_Getter"; - static selectorText_Setter_DOMString(mthis, value) native "CSSPageRule_selectorText_Setter"; + static selectorText_Setter(mthis, value) native "CSSPageRule_selectorText_Setter"; static style_Getter(mthis) native "CSSPageRule_style_Getter"; } @@ -655,39 +657,39 @@ class BlinkCSSPrimitiveValue {} class BlinkCSSRuleList { static length_Getter(mthis) native "CSSRuleList_length_Getter"; - static item_Callback_ul(mthis, index) native "CSSRuleList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "CSSRuleList_item_Callback"; } class BlinkCSSStyleDeclaration { static cssText_Getter(mthis) native "CSSStyleDeclaration_cssText_Getter"; - static cssText_Setter_DOMString(mthis, value) native "CSSStyleDeclaration_cssText_Setter"; + static cssText_Setter(mthis, value) native "CSSStyleDeclaration_cssText_Setter"; static length_Getter(mthis) native "CSSStyleDeclaration_length_Getter"; static parentRule_Getter(mthis) native "CSSStyleDeclaration_parentRule_Getter"; - static $__getter___Callback_DOMString(mthis, name) native "CSSStyleDeclaration___getter___Callback"; + static $__getter___Callback_1(mthis, name) native "CSSStyleDeclaration___getter___Callback"; - static $__propertyQuery___Callback_DOMString(mthis, name) native "CSSStyleDeclaration___propertyQuery___Callback"; + static $__propertyQuery___Callback_1(mthis, name) native "CSSStyleDeclaration___propertyQuery___Callback"; - static $__setter___Callback_DOMString_DOMString(mthis, propertyName, propertyValue) native "CSSStyleDeclaration___setter___Callback"; + static $__setter___Callback_2(mthis, propertyName, propertyValue) native "CSSStyleDeclaration___setter___Callback"; - static getPropertyPriority_Callback_DOMString(mthis, propertyName) native "CSSStyleDeclaration_getPropertyPriority_Callback_DOMString"; + static getPropertyPriority_Callback_1(mthis, propertyName) native "CSSStyleDeclaration_getPropertyPriority_Callback"; - static getPropertyValue_Callback_DOMString(mthis, propertyName) native "CSSStyleDeclaration_getPropertyValue_Callback_DOMString"; + static getPropertyValue_Callback_1(mthis, propertyName) native "CSSStyleDeclaration_getPropertyValue_Callback"; - static item_Callback_ul(mthis, index) native "CSSStyleDeclaration_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "CSSStyleDeclaration_item_Callback"; - static removeProperty_Callback_DOMString(mthis, propertyName) native "CSSStyleDeclaration_removeProperty_Callback_DOMString"; + static removeProperty_Callback_1(mthis, propertyName) native "CSSStyleDeclaration_removeProperty_Callback"; - static setProperty_Callback_DOMString_DOMString_DOMString(mthis, propertyName, value, priority) native "CSSStyleDeclaration_setProperty_Callback_DOMString_DOMString_DOMString"; + static setProperty_Callback_3(mthis, propertyName, value, priority) native "CSSStyleDeclaration_setProperty_Callback"; } class BlinkCSSStyleRule { static selectorText_Getter(mthis) native "CSSStyleRule_selectorText_Getter"; - static selectorText_Setter_DOMString(mthis, value) native "CSSStyleRule_selectorText_Setter"; + static selectorText_Setter(mthis, value) native "CSSStyleRule_selectorText_Setter"; static style_Getter(mthis) native "CSSStyleRule_style_Getter"; } @@ -695,7 +697,7 @@ class BlinkCSSStyleRule { class BlinkStyleSheet { static disabled_Getter(mthis) native "StyleSheet_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "StyleSheet_disabled_Setter"; + static disabled_Setter(mthis, value) native "StyleSheet_disabled_Setter"; static href_Getter(mthis) native "StyleSheet_href_Getter"; @@ -717,17 +719,17 @@ class BlinkCSSStyleSheet { static rules_Getter(mthis) native "CSSStyleSheet_rules_Getter"; - static addRule_Callback_DOMString_DOMString_ul(mthis, selector, style, index) native "CSSStyleSheet_addRule_Callback_DOMString_DOMString_unsigned long"; + static addRule_Callback_3(mthis, selector, style, index) native "CSSStyleSheet_addRule_Callback"; - static addRule_Callback_DOMString_DOMString(mthis, selector, style) native "CSSStyleSheet_addRule_Callback_DOMString_DOMString"; + static addRule_Callback_2(mthis, selector, style) native "CSSStyleSheet_addRule_Callback"; - static deleteRule_Callback_ul(mthis, index) native "CSSStyleSheet_deleteRule_Callback_unsigned long"; + static deleteRule_Callback_1(mthis, index) native "CSSStyleSheet_deleteRule_Callback"; - static insertRule_Callback_DOMString_ul(mthis, rule, index) native "CSSStyleSheet_insertRule_Callback_DOMString_unsigned long"; + static insertRule_Callback_2(mthis, rule, index) native "CSSStyleSheet_insertRule_Callback"; - static insertRule_Callback_DOMString(mthis, rule) native "CSSStyleSheet_insertRule_Callback_DOMString"; + static insertRule_Callback_1(mthis, rule) native "CSSStyleSheet_insertRule_Callback"; - static removeRule_Callback_ul(mthis, index) native "CSSStyleSheet_removeRule_Callback_unsigned long"; + static removeRule_Callback_1(mthis, index) native "CSSStyleSheet_removeRule_Callback"; } class BlinkCSSSupportsRule { @@ -735,9 +737,9 @@ class BlinkCSSSupportsRule { static cssRules_Getter(mthis) native "CSSSupportsRule_cssRules_Getter"; - static deleteRule_Callback_ul(mthis, index) native "CSSSupportsRule_deleteRule_Callback_unsigned long"; + static deleteRule_Callback_1(mthis, index) native "CSSSupportsRule_deleteRule_Callback"; - static insertRule_Callback_DOMString_ul(mthis, rule, index) native "CSSSupportsRule_insertRule_Callback_DOMString_unsigned long"; + static insertRule_Callback_2(mthis, rule, index) native "CSSSupportsRule_insertRule_Callback"; } class BlinkCSSUnknownRule {} @@ -745,7 +747,7 @@ class BlinkCSSUnknownRule {} class BlinkCSSValueList { static length_Getter(mthis) native "CSSValueList_length_Getter"; - static item_Callback_ul(mthis, index) native "CSSValueList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "CSSValueList_item_Callback"; } class BlinkCSSViewportRule { @@ -755,13 +757,13 @@ class BlinkCSSViewportRule { class BlinkCache {} class BlinkCacheStorage { - static create_Callback_DOMString(mthis, cacheName) native "CacheStorage_create_Callback_DOMString"; + static create_Callback_1(mthis, cacheName) native "CacheStorage_create_Callback"; - static delete_Callback_DOMString(mthis, cacheName) native "CacheStorage_delete_Callback_DOMString"; + static delete_Callback_1(mthis, cacheName) native "CacheStorage_delete_Callback"; - static get_Callback_DOMString(mthis, cacheName) native "CacheStorage_get_Callback_DOMString"; + static get_Callback_1(mthis, cacheName) native "CacheStorage_get_Callback"; - static has_Callback_DOMString(mthis, cacheName) native "CacheStorage_has_Callback_DOMString"; + static has_Callback_1(mthis, cacheName) native "CacheStorage_has_Callback"; static keys_Callback(mthis) native "CacheStorage_keys_Callback"; } @@ -769,15 +771,15 @@ class BlinkCacheStorage { class BlinkCanvas2DContextAttributes { static alpha_Getter(mthis) native "Canvas2DContextAttributes_alpha_Getter"; - static alpha_Setter_boolean(mthis, value) native "Canvas2DContextAttributes_alpha_Setter"; + static alpha_Setter(mthis, value) native "Canvas2DContextAttributes_alpha_Setter"; static storage_Getter(mthis) native "Canvas2DContextAttributes_storage_Getter"; - static storage_Setter_DOMString(mthis, value) native "Canvas2DContextAttributes_storage_Setter"; + static storage_Setter(mthis, value) native "Canvas2DContextAttributes_storage_Setter"; } class BlinkCanvasGradient { - static addColorStop_Callback_float_DOMString(mthis, offset, color) native "CanvasGradient_addColorStop_Callback_float_DOMString"; + static addColorStop_Callback_2(mthis, offset, color) native "CanvasGradient_addColorStop_Callback"; } class BlinkCanvasPathMethods {} @@ -789,225 +791,199 @@ class BlinkCanvasRenderingContext2D { static currentTransform_Getter(mthis) native "CanvasRenderingContext2D_currentTransform_Getter"; - static currentTransform_Setter_SVGMatrix(mthis, value) native "CanvasRenderingContext2D_currentTransform_Setter"; + static currentTransform_Setter(mthis, value) native "CanvasRenderingContext2D_currentTransform_Setter"; static fillStyle_Getter(mthis) native "CanvasRenderingContext2D_fillStyle_Getter"; - static fillStyle_Setter_object(mthis, value) native "CanvasRenderingContext2D_fillStyle_Setter"; + static fillStyle_Setter(mthis, value) native "CanvasRenderingContext2D_fillStyle_Setter"; static font_Getter(mthis) native "CanvasRenderingContext2D_font_Getter"; - static font_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_font_Setter"; + static font_Setter(mthis, value) native "CanvasRenderingContext2D_font_Setter"; static globalAlpha_Getter(mthis) native "CanvasRenderingContext2D_globalAlpha_Getter"; - static globalAlpha_Setter_float(mthis, value) native "CanvasRenderingContext2D_globalAlpha_Setter"; + static globalAlpha_Setter(mthis, value) native "CanvasRenderingContext2D_globalAlpha_Setter"; static globalCompositeOperation_Getter(mthis) native "CanvasRenderingContext2D_globalCompositeOperation_Getter"; - static globalCompositeOperation_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_globalCompositeOperation_Setter"; + static globalCompositeOperation_Setter(mthis, value) native "CanvasRenderingContext2D_globalCompositeOperation_Setter"; static imageSmoothingEnabled_Getter(mthis) native "CanvasRenderingContext2D_imageSmoothingEnabled_Getter"; - static imageSmoothingEnabled_Setter_boolean(mthis, value) native "CanvasRenderingContext2D_imageSmoothingEnabled_Setter"; + static imageSmoothingEnabled_Setter(mthis, value) native "CanvasRenderingContext2D_imageSmoothingEnabled_Setter"; static lineCap_Getter(mthis) native "CanvasRenderingContext2D_lineCap_Getter"; - static lineCap_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_lineCap_Setter"; + static lineCap_Setter(mthis, value) native "CanvasRenderingContext2D_lineCap_Setter"; static lineDashOffset_Getter(mthis) native "CanvasRenderingContext2D_lineDashOffset_Getter"; - static lineDashOffset_Setter_float(mthis, value) native "CanvasRenderingContext2D_lineDashOffset_Setter"; + static lineDashOffset_Setter(mthis, value) native "CanvasRenderingContext2D_lineDashOffset_Setter"; static lineJoin_Getter(mthis) native "CanvasRenderingContext2D_lineJoin_Getter"; - static lineJoin_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_lineJoin_Setter"; + static lineJoin_Setter(mthis, value) native "CanvasRenderingContext2D_lineJoin_Setter"; static lineWidth_Getter(mthis) native "CanvasRenderingContext2D_lineWidth_Getter"; - static lineWidth_Setter_float(mthis, value) native "CanvasRenderingContext2D_lineWidth_Setter"; + static lineWidth_Setter(mthis, value) native "CanvasRenderingContext2D_lineWidth_Setter"; static miterLimit_Getter(mthis) native "CanvasRenderingContext2D_miterLimit_Getter"; - static miterLimit_Setter_float(mthis, value) native "CanvasRenderingContext2D_miterLimit_Setter"; + static miterLimit_Setter(mthis, value) native "CanvasRenderingContext2D_miterLimit_Setter"; static shadowBlur_Getter(mthis) native "CanvasRenderingContext2D_shadowBlur_Getter"; - static shadowBlur_Setter_float(mthis, value) native "CanvasRenderingContext2D_shadowBlur_Setter"; + static shadowBlur_Setter(mthis, value) native "CanvasRenderingContext2D_shadowBlur_Setter"; static shadowColor_Getter(mthis) native "CanvasRenderingContext2D_shadowColor_Getter"; - static shadowColor_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_shadowColor_Setter"; + static shadowColor_Setter(mthis, value) native "CanvasRenderingContext2D_shadowColor_Setter"; static shadowOffsetX_Getter(mthis) native "CanvasRenderingContext2D_shadowOffsetX_Getter"; - static shadowOffsetX_Setter_float(mthis, value) native "CanvasRenderingContext2D_shadowOffsetX_Setter"; + static shadowOffsetX_Setter(mthis, value) native "CanvasRenderingContext2D_shadowOffsetX_Setter"; static shadowOffsetY_Getter(mthis) native "CanvasRenderingContext2D_shadowOffsetY_Getter"; - static shadowOffsetY_Setter_float(mthis, value) native "CanvasRenderingContext2D_shadowOffsetY_Setter"; + static shadowOffsetY_Setter(mthis, value) native "CanvasRenderingContext2D_shadowOffsetY_Setter"; static strokeStyle_Getter(mthis) native "CanvasRenderingContext2D_strokeStyle_Getter"; - static strokeStyle_Setter_object(mthis, value) native "CanvasRenderingContext2D_strokeStyle_Setter"; + static strokeStyle_Setter(mthis, value) native "CanvasRenderingContext2D_strokeStyle_Setter"; static textAlign_Getter(mthis) native "CanvasRenderingContext2D_textAlign_Getter"; - static textAlign_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_textAlign_Setter"; + static textAlign_Setter(mthis, value) native "CanvasRenderingContext2D_textAlign_Setter"; static textBaseline_Getter(mthis) native "CanvasRenderingContext2D_textBaseline_Getter"; - static textBaseline_Setter_DOMString(mthis, value) native "CanvasRenderingContext2D_textBaseline_Setter"; + static textBaseline_Setter(mthis, value) native "CanvasRenderingContext2D_textBaseline_Setter"; - static addHitRegion_Callback_Dictionary(mthis, options) native "CanvasRenderingContext2D_addHitRegion_Callback_Dictionary"; + static addHitRegion_Callback_1(mthis, options) native "CanvasRenderingContext2D_addHitRegion_Callback"; + + static addHitRegion_Callback(mthis) native "CanvasRenderingContext2D_addHitRegion_Callback"; static beginPath_Callback(mthis) native "CanvasRenderingContext2D_beginPath_Callback"; static clearHitRegions_Callback(mthis) native "CanvasRenderingContext2D_clearHitRegions_Callback"; - static clearRect_Callback_float_float_float_float(mthis, x, y, width, height) native "CanvasRenderingContext2D_clearRect_Callback_float_float_float_float"; + static clearRect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_clearRect_Callback"; static clip_Callback(mthis) native "CanvasRenderingContext2D_clip_Callback"; - static clip_Callback_DOMString(mthis, path_OR_winding) native "CanvasRenderingContext2D_clip_Callback_DOMString"; - - static clip_Callback_Path2D(mthis, path_OR_winding) native "CanvasRenderingContext2D_clip_Callback_Path2D"; - - static clip_Callback_Path2D_DOMString(mthis, path_OR_winding, winding) native "CanvasRenderingContext2D_clip_Callback_Path2D_DOMString"; - - static createImageData_Callback_float_float(mthis, sw, sh) native "CanvasRenderingContext2D_createImageData_Callback_float_float"; - - static createImageData_Callback_ImageData(mthis, imagedata) native "CanvasRenderingContext2D_createImageData_Callback_ImageData"; - - static createLinearGradient_Callback_float_float_float_float(mthis, x0, y0, x1, y1) native "CanvasRenderingContext2D_createLinearGradient_Callback_float_float_float_float"; + static clip_Callback_1(mthis, path_OR_winding) native "CanvasRenderingContext2D_clip_Callback"; - static createPattern_Callback_HTMLCanvasElement_DOMString(mthis, canvas_OR_image, repetitionType) native "CanvasRenderingContext2D_createPattern_Callback_HTMLCanvasElement_DOMString"; + static clip_Callback_2(mthis, path_OR_winding, winding) native "CanvasRenderingContext2D_clip_Callback"; - static createPattern_Callback_HTMLVideoElement_DOMString(mthis, canvas_OR_image, repetitionType) native "CanvasRenderingContext2D_createPattern_Callback_HTMLVideoElement_DOMString"; + static createImageData_Callback_2(mthis, sw, sh) native "CanvasRenderingContext2D_createImageData_Callback"; - static createPattern_Callback_HTMLImageElement_DOMString(mthis, image, repetitionType) native "CanvasRenderingContext2D_createPattern_Callback_HTMLImageElement_DOMString"; + static createImageData_Callback_1(mthis, imagedata) native "CanvasRenderingContext2D_createImageData_Callback"; - static createRadialGradient_Callback_float_float_float_float_float_float(mthis, x0, y0, r0, x1, y1, r1) native "CanvasRenderingContext2D_createRadialGradient_Callback_float_float_float_float_float_float"; + static createLinearGradient_Callback_4(mthis, x0, y0, x1, y1) native "CanvasRenderingContext2D_createLinearGradient_Callback"; - static drawFocusIfNeeded_Callback_Element(mthis, element_OR_path) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback_Element"; + static createPattern_Callback_2(mthis, canvas_OR_image, repetitionType) native "CanvasRenderingContext2D_createPattern_Callback"; - static drawFocusIfNeeded_Callback_Path2D_Element(mthis, element_OR_path, element) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback_Path2D_Element"; + static createRadialGradient_Callback_6(mthis, x0, y0, r0, x1, y1, r1) native "CanvasRenderingContext2D_createRadialGradient_Callback"; - static drawImage_Callback_HTMLImageElement_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D_drawImage_Callback_HTMLImageElement_float_float"; + static drawFocusIfNeeded_Callback_1(mthis, element_OR_path) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback"; - static drawImage_Callback_HTMLImageElement_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D_drawImage_Callback_HTMLImageElement_float_float_float_float"; + static drawFocusIfNeeded_Callback_2(mthis, element_OR_path, element) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback"; - static drawImage_Callback_HTMLImageElement_float_float_float_float_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D_drawImage_Callback_HTMLImageElement_float_float_float_float_float_float_float_float"; + static drawImage_Callback_3(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D_drawImage_Callback"; - static drawImage_Callback_HTMLCanvasElement_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D_drawImage_Callback_HTMLCanvasElement_float_float"; + static drawImage_Callback_5(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D_drawImage_Callback"; - static drawImage_Callback_HTMLCanvasElement_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D_drawImage_Callback_HTMLCanvasElement_float_float_float_float"; - - static drawImage_Callback_HTMLCanvasElement_float_float_float_float_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D_drawImage_Callback_HTMLCanvasElement_float_float_float_float_float_float_float_float"; - - static drawImage_Callback_HTMLVideoElement_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D_drawImage_Callback_HTMLVideoElement_float_float"; - - static drawImage_Callback_HTMLVideoElement_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D_drawImage_Callback_HTMLVideoElement_float_float_float_float"; - - static drawImage_Callback_HTMLVideoElement_float_float_float_float_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D_drawImage_Callback_HTMLVideoElement_float_float_float_float_float_float_float_float"; - - static drawImage_Callback_ImageBitmap_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D_drawImage_Callback_ImageBitmap_float_float"; - - static drawImage_Callback_ImageBitmap_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D_drawImage_Callback_ImageBitmap_float_float_float_float"; - - static drawImage_Callback_ImageBitmap_float_float_float_float_float_float_float_float(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D_drawImage_Callback_ImageBitmap_float_float_float_float_float_float_float_float"; + static drawImage_Callback_9(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D_drawImage_Callback"; static fill_Callback(mthis) native "CanvasRenderingContext2D_fill_Callback"; - static fill_Callback_DOMString(mthis, path_OR_winding) native "CanvasRenderingContext2D_fill_Callback_DOMString"; - - static fill_Callback_Path2D(mthis, path_OR_winding) native "CanvasRenderingContext2D_fill_Callback_Path2D"; + static fill_Callback_1(mthis, path_OR_winding) native "CanvasRenderingContext2D_fill_Callback"; - static fill_Callback_Path2D_DOMString(mthis, path_OR_winding, winding) native "CanvasRenderingContext2D_fill_Callback_Path2D_DOMString"; + static fill_Callback_2(mthis, path_OR_winding, winding) native "CanvasRenderingContext2D_fill_Callback"; - static fillRect_Callback_float_float_float_float(mthis, x, y, width, height) native "CanvasRenderingContext2D_fillRect_Callback_float_float_float_float"; + static fillRect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_fillRect_Callback"; - static fillText_Callback_DOMString_float_float_float(mthis, text, x, y, maxWidth) native "CanvasRenderingContext2D_fillText_Callback_DOMString_float_float_float"; + static fillText_Callback_4(mthis, text, x, y, maxWidth) native "CanvasRenderingContext2D_fillText_Callback"; - static fillText_Callback_DOMString_float_float(mthis, text, x, y) native "CanvasRenderingContext2D_fillText_Callback_DOMString_float_float"; + static fillText_Callback_3(mthis, text, x, y) native "CanvasRenderingContext2D_fillText_Callback"; static getContextAttributes_Callback(mthis) native "CanvasRenderingContext2D_getContextAttributes_Callback"; - static getImageData_Callback_float_float_float_float(mthis, sx, sy, sw, sh) native "CanvasRenderingContext2D_getImageData_Callback_float_float_float_float"; + static getImageData_Callback_4(mthis, sx, sy, sw, sh) native "CanvasRenderingContext2D_getImageData_Callback"; static getLineDash_Callback(mthis) native "CanvasRenderingContext2D_getLineDash_Callback"; static isContextLost_Callback(mthis) native "CanvasRenderingContext2D_isContextLost_Callback"; - static isPointInPath_Callback_float_float(mthis, path_OR_x, x_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback_float_float"; + static isPointInPath_Callback_2(mthis, path_OR_x, x_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback"; - static isPointInPath_Callback_float_float_DOMString(mthis, path_OR_x, x_OR_y, winding_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback_float_float_DOMString"; + static isPointInPath_Callback_3(mthis, path_OR_x, x_OR_y, winding_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback"; - static isPointInPath_Callback_Path2D_float_float(mthis, path_OR_x, x_OR_y, winding_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback_Path2D_float_float"; + static isPointInPath_Callback_4(mthis, path_OR_x, x_OR_y, winding_OR_y, winding) native "CanvasRenderingContext2D_isPointInPath_Callback"; - static isPointInPath_Callback_Path2D_float_float_DOMString(mthis, path_OR_x, x_OR_y, winding_OR_y, winding) native "CanvasRenderingContext2D_isPointInPath_Callback_Path2D_float_float_DOMString"; + static isPointInStroke_Callback_2(mthis, path_OR_x, x_OR_y) native "CanvasRenderingContext2D_isPointInStroke_Callback"; - static isPointInStroke_Callback_float_float(mthis, path_OR_x, x_OR_y) native "CanvasRenderingContext2D_isPointInStroke_Callback_float_float"; + static isPointInStroke_Callback_3(mthis, path_OR_x, x_OR_y, y) native "CanvasRenderingContext2D_isPointInStroke_Callback"; - static isPointInStroke_Callback_Path2D_float_float(mthis, path_OR_x, x_OR_y, y) native "CanvasRenderingContext2D_isPointInStroke_Callback_Path2D_float_float"; + static measureText_Callback_1(mthis, text) native "CanvasRenderingContext2D_measureText_Callback"; - static measureText_Callback_DOMString(mthis, text) native "CanvasRenderingContext2D_measureText_Callback_DOMString"; + static putImageData_Callback_3(mthis, imagedata, dx, dy) native "CanvasRenderingContext2D_putImageData_Callback"; - static putImageData_Callback_ImageData_float_float(mthis, imagedata, dx, dy) native "CanvasRenderingContext2D_putImageData_Callback_ImageData_float_float"; + static putImageData_Callback_7(mthis, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "CanvasRenderingContext2D_putImageData_Callback"; - static putImageData_Callback_ImageData_float_float_float_float_float_float(mthis, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "CanvasRenderingContext2D_putImageData_Callback_ImageData_float_float_float_float_float_float"; - - static removeHitRegion_Callback_DOMString(mthis, id) native "CanvasRenderingContext2D_removeHitRegion_Callback_DOMString"; + static removeHitRegion_Callback_1(mthis, id) native "CanvasRenderingContext2D_removeHitRegion_Callback"; static resetTransform_Callback(mthis) native "CanvasRenderingContext2D_resetTransform_Callback"; static restore_Callback(mthis) native "CanvasRenderingContext2D_restore_Callback"; - static rotate_Callback_float(mthis, angle) native "CanvasRenderingContext2D_rotate_Callback_float"; + static rotate_Callback_1(mthis, angle) native "CanvasRenderingContext2D_rotate_Callback"; static save_Callback(mthis) native "CanvasRenderingContext2D_save_Callback"; - static scale_Callback_float_float(mthis, x, y) native "CanvasRenderingContext2D_scale_Callback_float_float"; + static scale_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_scale_Callback"; - static scrollPathIntoView_Callback_Path2D(mthis, path) native "CanvasRenderingContext2D_scrollPathIntoView_Callback_Path2D"; + static scrollPathIntoView_Callback_1(mthis, path) native "CanvasRenderingContext2D_scrollPathIntoView_Callback"; static scrollPathIntoView_Callback(mthis) native "CanvasRenderingContext2D_scrollPathIntoView_Callback"; - static setLineDash_Callback_SEQ_float_SEQ(mthis, dash) native "CanvasRenderingContext2D_setLineDash_Callback_sequence"; + static setLineDash_Callback_1(mthis, dash) native "CanvasRenderingContext2D_setLineDash_Callback"; - static setTransform_Callback_float_float_float_float_float_float(mthis, a, b, c, d, e, f) native "CanvasRenderingContext2D_setTransform_Callback_float_float_float_float_float_float"; + static setTransform_Callback_6(mthis, a, b, c, d, e, f) native "CanvasRenderingContext2D_setTransform_Callback"; static stroke_Callback(mthis) native "CanvasRenderingContext2D_stroke_Callback"; - static stroke_Callback_Path2D(mthis, path) native "CanvasRenderingContext2D_stroke_Callback_Path2D"; + static stroke_Callback_1(mthis, path) native "CanvasRenderingContext2D_stroke_Callback"; - static strokeRect_Callback_float_float_float_float(mthis, x, y, width, height) native "CanvasRenderingContext2D_strokeRect_Callback_float_float_float_float"; + static strokeRect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_strokeRect_Callback"; - static strokeText_Callback_DOMString_float_float_float(mthis, text, x, y, maxWidth) native "CanvasRenderingContext2D_strokeText_Callback_DOMString_float_float_float"; + static strokeText_Callback_4(mthis, text, x, y, maxWidth) native "CanvasRenderingContext2D_strokeText_Callback"; - static strokeText_Callback_DOMString_float_float(mthis, text, x, y) native "CanvasRenderingContext2D_strokeText_Callback_DOMString_float_float"; + static strokeText_Callback_3(mthis, text, x, y) native "CanvasRenderingContext2D_strokeText_Callback"; - static transform_Callback_float_float_float_float_float_float(mthis, a, b, c, d, e, f) native "CanvasRenderingContext2D_transform_Callback_float_float_float_float_float_float"; + static transform_Callback_6(mthis, a, b, c, d, e, f) native "CanvasRenderingContext2D_transform_Callback"; - static translate_Callback_float_float(mthis, x, y) native "CanvasRenderingContext2D_translate_Callback_float_float"; + static translate_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_translate_Callback"; - static arc_Callback_float_float_float_float_float_boolean(mthis, x, y, radius, startAngle, endAngle, anticlockwise) native "CanvasRenderingContext2D_arc_Callback_float_float_float_float_float_boolean"; + static arc_Callback_6(mthis, x, y, radius, startAngle, endAngle, anticlockwise) native "CanvasRenderingContext2D_arc_Callback"; - static arcTo_Callback_float_float_float_float_float(mthis, x1, y1, x2, y2, radius) native "CanvasRenderingContext2D_arcTo_Callback_float_float_float_float_float"; + static arcTo_Callback_5(mthis, x1, y1, x2, y2, radius) native "CanvasRenderingContext2D_arcTo_Callback"; - static bezierCurveTo_Callback_float_float_float_float_float_float(mthis, cp1x, cp1y, cp2x, cp2y, x, y) native "CanvasRenderingContext2D_bezierCurveTo_Callback_float_float_float_float_float_float"; + static bezierCurveTo_Callback_6(mthis, cp1x, cp1y, cp2x, cp2y, x, y) native "CanvasRenderingContext2D_bezierCurveTo_Callback"; static closePath_Callback(mthis) native "CanvasRenderingContext2D_closePath_Callback"; - static ellipse_Callback_float_float_float_float_float_float_float_boolean(mthis, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) native "CanvasRenderingContext2D_ellipse_Callback_float_float_float_float_float_float_float_boolean"; + static ellipse_Callback_8(mthis, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) native "CanvasRenderingContext2D_ellipse_Callback"; - static lineTo_Callback_float_float(mthis, x, y) native "CanvasRenderingContext2D_lineTo_Callback_float_float"; + static lineTo_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_lineTo_Callback"; - static moveTo_Callback_float_float(mthis, x, y) native "CanvasRenderingContext2D_moveTo_Callback_float_float"; + static moveTo_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_moveTo_Callback"; - static quadraticCurveTo_Callback_float_float_float_float(mthis, cpx, cpy, x, y) native "CanvasRenderingContext2D_quadraticCurveTo_Callback_float_float_float_float"; + static quadraticCurveTo_Callback_4(mthis, cpx, cpy, x, y) native "CanvasRenderingContext2D_quadraticCurveTo_Callback"; - static rect_Callback_float_float_float_float(mthis, x, y, width, height) native "CanvasRenderingContext2D_rect_Callback_float_float_float_float"; + static rect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_rect_Callback"; } class BlinkChannelMergerNode {} @@ -1019,7 +995,7 @@ class BlinkGeofencingRegion { } class BlinkCircularRegion { - static constructorCallback_Dictionary(init) native "CircularRegion_constructorCallback_Dictionary"; + static constructorCallback_1(init) native "CircularRegion_constructorCallback"; static latitude_Getter(mthis) native "CircularRegion_latitude_Getter"; @@ -1045,7 +1021,7 @@ class BlinkClientRect { class BlinkClientRectList { static length_Getter(mthis) native "ClientRectList_length_Getter"; - static item_Callback_ul(mthis, index) native "ClientRectList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "ClientRectList_item_Callback"; } class BlinkCloseEvent { @@ -1059,7 +1035,7 @@ class BlinkCloseEvent { } class BlinkComment { - static constructorCallback_DOMString(data) native "Comment_constructorCallback_DOMString"; + static constructorCallback_1(data) native "Comment_constructorCallback"; static constructorCallback() native "Comment_constructorCallback"; } @@ -1085,7 +1061,7 @@ class BlinkUIEvent { static which_Getter(mthis) native "UIEvent_which_Getter"; - static initUIEvent_Callback_DOMString_boolean_boolean_Window_long(mthis, type, canBubble, cancelable, view, detail) native "UIEvent_initUIEvent_Callback_DOMString_boolean_boolean_Window_long"; + static initUIEvent_Callback_5(mthis, type, canBubble, cancelable, view, detail) native "UIEvent_initUIEvent_Callback"; } class BlinkCompositionEvent { @@ -1099,55 +1075,55 @@ class BlinkCompositionEvent { static getSegments_Callback(mthis) native "CompositionEvent_getSegments_Callback"; - static initCompositionEvent_Callback_DOMString_boolean_boolean_Window_DOMString(mthis, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg) native "CompositionEvent_initCompositionEvent_Callback_DOMString_boolean_boolean_Window_DOMString"; + static initCompositionEvent_Callback_5(mthis, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg) native "CompositionEvent_initCompositionEvent_Callback"; } class BlinkConsoleBase { - static assert_Callback_boolean_object(mthis, condition, arg) native "ConsoleBase_assert_Callback_boolean_object"; + static assert_Callback_2(mthis, condition, arg) native "ConsoleBase_assert_Callback"; - static clear_Callback_object(mthis, arg) native "ConsoleBase_clear_Callback_object"; + static clear_Callback_1(mthis, arg) native "ConsoleBase_clear_Callback"; - static count_Callback_object(mthis, arg) native "ConsoleBase_count_Callback_object"; + static count_Callback_1(mthis, arg) native "ConsoleBase_count_Callback"; - static debug_Callback_object(mthis, arg) native "ConsoleBase_debug_Callback_object"; + static debug_Callback_1(mthis, arg) native "ConsoleBase_debug_Callback"; - static dir_Callback_object(mthis, arg) native "ConsoleBase_dir_Callback_object"; + static dir_Callback_1(mthis, arg) native "ConsoleBase_dir_Callback"; - static dirxml_Callback_object(mthis, arg) native "ConsoleBase_dirxml_Callback_object"; + static dirxml_Callback_1(mthis, arg) native "ConsoleBase_dirxml_Callback"; - static error_Callback_object(mthis, arg) native "ConsoleBase_error_Callback_object"; + static error_Callback_1(mthis, arg) native "ConsoleBase_error_Callback"; - static group_Callback_object(mthis, arg) native "ConsoleBase_group_Callback_object"; + static group_Callback_1(mthis, arg) native "ConsoleBase_group_Callback"; - static groupCollapsed_Callback_object(mthis, arg) native "ConsoleBase_groupCollapsed_Callback_object"; + static groupCollapsed_Callback_1(mthis, arg) native "ConsoleBase_groupCollapsed_Callback"; static groupEnd_Callback(mthis) native "ConsoleBase_groupEnd_Callback"; - static info_Callback_object(mthis, arg) native "ConsoleBase_info_Callback_object"; + static info_Callback_1(mthis, arg) native "ConsoleBase_info_Callback"; - static log_Callback_object(mthis, arg) native "ConsoleBase_log_Callback_object"; + static log_Callback_1(mthis, arg) native "ConsoleBase_log_Callback"; - static markTimeline_Callback_DOMString(mthis, title) native "ConsoleBase_markTimeline_Callback_DOMString"; + static markTimeline_Callback_1(mthis, title) native "ConsoleBase_markTimeline_Callback"; - static profile_Callback_DOMString(mthis, title) native "ConsoleBase_profile_Callback_DOMString"; + static profile_Callback_1(mthis, title) native "ConsoleBase_profile_Callback"; - static profileEnd_Callback_DOMString(mthis, title) native "ConsoleBase_profileEnd_Callback_DOMString"; + static profileEnd_Callback_1(mthis, title) native "ConsoleBase_profileEnd_Callback"; - static table_Callback_object(mthis, arg) native "ConsoleBase_table_Callback_object"; + static table_Callback_1(mthis, arg) native "ConsoleBase_table_Callback"; - static time_Callback_DOMString(mthis, title) native "ConsoleBase_time_Callback_DOMString"; + static time_Callback_1(mthis, title) native "ConsoleBase_time_Callback"; - static timeEnd_Callback_DOMString(mthis, title) native "ConsoleBase_timeEnd_Callback_DOMString"; + static timeEnd_Callback_1(mthis, title) native "ConsoleBase_timeEnd_Callback"; - static timeStamp_Callback_DOMString(mthis, title) native "ConsoleBase_timeStamp_Callback_DOMString"; + static timeStamp_Callback_1(mthis, title) native "ConsoleBase_timeStamp_Callback"; - static timeline_Callback_DOMString(mthis, title) native "ConsoleBase_timeline_Callback_DOMString"; + static timeline_Callback_1(mthis, title) native "ConsoleBase_timeline_Callback"; - static timelineEnd_Callback_DOMString(mthis, title) native "ConsoleBase_timelineEnd_Callback_DOMString"; + static timelineEnd_Callback_1(mthis, title) native "ConsoleBase_timelineEnd_Callback"; - static trace_Callback_object(mthis, arg) native "ConsoleBase_trace_Callback_object"; + static trace_Callback_1(mthis, arg) native "ConsoleBase_trace_Callback"; - static warn_Callback_object(mthis, arg) native "ConsoleBase_warn_Callback_object"; + static warn_Callback_1(mthis, arg) native "ConsoleBase_warn_Callback"; } class BlinkConsole { @@ -1157,11 +1133,11 @@ class BlinkConsole { class BlinkConvolverNode { static buffer_Getter(mthis) native "ConvolverNode_buffer_Getter"; - static buffer_Setter_AudioBuffer(mthis, value) native "ConvolverNode_buffer_Setter"; + static buffer_Setter(mthis, value) native "ConvolverNode_buffer_Setter"; static normalize_Getter(mthis) native "ConvolverNode_normalize_Getter"; - static normalize_Setter_boolean(mthis, value) native "ConvolverNode_normalize_Setter"; + static normalize_Setter(mthis, value) native "ConvolverNode_normalize_Setter"; } class BlinkCoordinates { @@ -1191,23 +1167,25 @@ class BlinkCredential { } class BlinkCredentialsContainer { - static notifyFailedSignIn_Callback_Credential(mthis, credential) native "CredentialsContainer_notifyFailedSignIn_Callback_Credential"; + static notifyFailedSignIn_Callback_1(mthis, credential) native "CredentialsContainer_notifyFailedSignIn_Callback"; static notifyFailedSignIn_Callback(mthis) native "CredentialsContainer_notifyFailedSignIn_Callback"; - static notifySignedIn_Callback_Credential(mthis, credential) native "CredentialsContainer_notifySignedIn_Callback_Credential"; + static notifySignedIn_Callback_1(mthis, credential) native "CredentialsContainer_notifySignedIn_Callback"; static notifySignedIn_Callback(mthis) native "CredentialsContainer_notifySignedIn_Callback"; static notifySignedOut_Callback(mthis) native "CredentialsContainer_notifySignedOut_Callback"; - static request_Callback_Dictionary(mthis, options) native "CredentialsContainer_request_Callback_Dictionary"; + static request_Callback_1(mthis, options) native "CredentialsContainer_request_Callback"; + + static request_Callback(mthis) native "CredentialsContainer_request_Callback"; } class BlinkCrypto { static subtle_Getter(mthis) native "Crypto_subtle_Getter"; - static getRandomValues_Callback_ArrayBufferView(mthis, array) native "Crypto_getRandomValues_Callback"; + static getRandomValues_Callback_1(mthis, array) native "Crypto_getRandomValues_Callback"; } class BlinkCryptoKey { @@ -1225,11 +1203,11 @@ class BlinkCustomEvent { static detail_Getter(mthis) native "CustomEvent_detail_Getter"; - static initCustomEvent_Callback_DOMString_boolean_boolean_ScriptValue(mthis, typeArg, canBubbleArg, cancelableArg, detailArg) native "CustomEvent_initCustomEvent_Callback"; + static initCustomEvent_Callback_4(mthis, typeArg, canBubbleArg, cancelableArg, detailArg) native "CustomEvent_initCustomEvent_Callback"; } class BlinkDOMError { - static constructorCallback_DOMString_DOMString(name, message) native "DOMError_constructorCallback_DOMString_DOMString"; + static constructorCallback_2(name, message) native "DOMError_constructorCallback"; static message_Getter(mthis) native "DOMError_message_Getter"; @@ -1253,13 +1231,13 @@ class BlinkDOMFileSystem { class BlinkDOMFileSystemSync {} class BlinkDOMImplementation { - static createDocument_Callback_DOMString_DOMString_DocumentType(mthis, namespaceURI, qualifiedName, doctype) native "DOMImplementation_createDocument_Callback_DOMString_DOMString_DocumentType"; + static createDocument_Callback_3(mthis, namespaceURI, qualifiedName, doctype) native "DOMImplementation_createDocument_Callback"; - static createDocumentType_Callback_DOMString_DOMString_DOMString(mthis, qualifiedName, publicId, systemId) native "DOMImplementation_createDocumentType_Callback_DOMString_DOMString_DOMString"; + static createDocumentType_Callback_3(mthis, qualifiedName, publicId, systemId) native "DOMImplementation_createDocumentType_Callback"; - static createHTMLDocument_Callback_DOMString(mthis, title) native "DOMImplementation_createHTMLDocument_Callback_DOMString"; + static createHTMLDocument_Callback_1(mthis, title) native "DOMImplementation_createHTMLDocument_Callback"; - static hasFeature_Callback_DOMString_DOMString(mthis, feature, version) native "DOMImplementation_hasFeature_Callback_DOMString_DOMString"; + static hasFeature_Callback_2(mthis, feature, version) native "DOMImplementation_hasFeature_Callback"; } class BlinkDOMMatrixReadOnly { @@ -1315,105 +1293,105 @@ class BlinkDOMMatrixReadOnly { class BlinkDOMMatrix { static constructorCallback() native "DOMMatrix_constructorCallback"; - static constructorCallback_DOMMatrixReadOnly(other) native "DOMMatrix_constructorCallback_DOMMatrixReadOnly"; + static constructorCallback_1(other) native "DOMMatrix_constructorCallback"; static a_Getter(mthis) native "DOMMatrix_a_Getter"; - static a_Setter_double(mthis, value) native "DOMMatrix_a_Setter"; + static a_Setter(mthis, value) native "DOMMatrix_a_Setter"; static b_Getter(mthis) native "DOMMatrix_b_Getter"; - static b_Setter_double(mthis, value) native "DOMMatrix_b_Setter"; + static b_Setter(mthis, value) native "DOMMatrix_b_Setter"; static c_Getter(mthis) native "DOMMatrix_c_Getter"; - static c_Setter_double(mthis, value) native "DOMMatrix_c_Setter"; + static c_Setter(mthis, value) native "DOMMatrix_c_Setter"; static d_Getter(mthis) native "DOMMatrix_d_Getter"; - static d_Setter_double(mthis, value) native "DOMMatrix_d_Setter"; + static d_Setter(mthis, value) native "DOMMatrix_d_Setter"; static e_Getter(mthis) native "DOMMatrix_e_Getter"; - static e_Setter_double(mthis, value) native "DOMMatrix_e_Setter"; + static e_Setter(mthis, value) native "DOMMatrix_e_Setter"; static f_Getter(mthis) native "DOMMatrix_f_Getter"; - static f_Setter_double(mthis, value) native "DOMMatrix_f_Setter"; + static f_Setter(mthis, value) native "DOMMatrix_f_Setter"; static m11_Getter(mthis) native "DOMMatrix_m11_Getter"; - static m11_Setter_double(mthis, value) native "DOMMatrix_m11_Setter"; + static m11_Setter(mthis, value) native "DOMMatrix_m11_Setter"; static m12_Getter(mthis) native "DOMMatrix_m12_Getter"; - static m12_Setter_double(mthis, value) native "DOMMatrix_m12_Setter"; + static m12_Setter(mthis, value) native "DOMMatrix_m12_Setter"; static m13_Getter(mthis) native "DOMMatrix_m13_Getter"; - static m13_Setter_double(mthis, value) native "DOMMatrix_m13_Setter"; + static m13_Setter(mthis, value) native "DOMMatrix_m13_Setter"; static m14_Getter(mthis) native "DOMMatrix_m14_Getter"; - static m14_Setter_double(mthis, value) native "DOMMatrix_m14_Setter"; + static m14_Setter(mthis, value) native "DOMMatrix_m14_Setter"; static m21_Getter(mthis) native "DOMMatrix_m21_Getter"; - static m21_Setter_double(mthis, value) native "DOMMatrix_m21_Setter"; + static m21_Setter(mthis, value) native "DOMMatrix_m21_Setter"; static m22_Getter(mthis) native "DOMMatrix_m22_Getter"; - static m22_Setter_double(mthis, value) native "DOMMatrix_m22_Setter"; + static m22_Setter(mthis, value) native "DOMMatrix_m22_Setter"; static m23_Getter(mthis) native "DOMMatrix_m23_Getter"; - static m23_Setter_double(mthis, value) native "DOMMatrix_m23_Setter"; + static m23_Setter(mthis, value) native "DOMMatrix_m23_Setter"; static m24_Getter(mthis) native "DOMMatrix_m24_Getter"; - static m24_Setter_double(mthis, value) native "DOMMatrix_m24_Setter"; + static m24_Setter(mthis, value) native "DOMMatrix_m24_Setter"; static m31_Getter(mthis) native "DOMMatrix_m31_Getter"; - static m31_Setter_double(mthis, value) native "DOMMatrix_m31_Setter"; + static m31_Setter(mthis, value) native "DOMMatrix_m31_Setter"; static m32_Getter(mthis) native "DOMMatrix_m32_Getter"; - static m32_Setter_double(mthis, value) native "DOMMatrix_m32_Setter"; + static m32_Setter(mthis, value) native "DOMMatrix_m32_Setter"; static m33_Getter(mthis) native "DOMMatrix_m33_Getter"; - static m33_Setter_double(mthis, value) native "DOMMatrix_m33_Setter"; + static m33_Setter(mthis, value) native "DOMMatrix_m33_Setter"; static m34_Getter(mthis) native "DOMMatrix_m34_Getter"; - static m34_Setter_double(mthis, value) native "DOMMatrix_m34_Setter"; + static m34_Setter(mthis, value) native "DOMMatrix_m34_Setter"; static m41_Getter(mthis) native "DOMMatrix_m41_Getter"; - static m41_Setter_double(mthis, value) native "DOMMatrix_m41_Setter"; + static m41_Setter(mthis, value) native "DOMMatrix_m41_Setter"; static m42_Getter(mthis) native "DOMMatrix_m42_Getter"; - static m42_Setter_double(mthis, value) native "DOMMatrix_m42_Setter"; + static m42_Setter(mthis, value) native "DOMMatrix_m42_Setter"; static m43_Getter(mthis) native "DOMMatrix_m43_Getter"; - static m43_Setter_double(mthis, value) native "DOMMatrix_m43_Setter"; + static m43_Setter(mthis, value) native "DOMMatrix_m43_Setter"; static m44_Getter(mthis) native "DOMMatrix_m44_Getter"; - static m44_Setter_double(mthis, value) native "DOMMatrix_m44_Setter"; + static m44_Setter(mthis, value) native "DOMMatrix_m44_Setter"; } class BlinkDOMParser { static constructorCallback() native "DOMParser_constructorCallback"; - static parseFromString_Callback_DOMString_DOMString(mthis, str, contentType) native "DOMParser_parseFromString_Callback_DOMString_DOMString"; + static parseFromString_Callback_2(mthis, str, contentType) native "DOMParser_parseFromString_Callback"; } class BlinkDOMPointReadOnly { - static constructorCallback_double_double_double_double(x, y, z, w) native "DOMPointReadOnly_constructorCallback_double_double_double_double"; + static constructorCallback_4(x, y, z, w) native "DOMPointReadOnly_constructorCallback"; static w_Getter(mthis) native "DOMPointReadOnly_w_Getter"; @@ -1427,33 +1405,33 @@ class BlinkDOMPointReadOnly { class BlinkDOMPoint { static constructorCallback() native "DOMPoint_constructorCallback"; - static constructorCallback_Dictionary(point_OR_x) native "DOMPoint_constructorCallback_Dictionary"; + static constructorCallback_1(point_OR_x) native "DOMPoint_constructorCallback"; - static constructorCallback_double_double(point_OR_x, y) native "DOMPoint_constructorCallback_double_double"; + static constructorCallback_2(point_OR_x, y) native "DOMPoint_constructorCallback"; - static constructorCallback_double_double_double(point_OR_x, y, z) native "DOMPoint_constructorCallback_double_double_double"; + static constructorCallback_3(point_OR_x, y, z) native "DOMPoint_constructorCallback"; - static constructorCallback_double_double_double_double(point_OR_x, y, z, w) native "DOMPoint_constructorCallback_double_double_double_double"; + static constructorCallback_4(point_OR_x, y, z, w) native "DOMPoint_constructorCallback"; static w_Getter(mthis) native "DOMPoint_w_Getter"; - static w_Setter_double(mthis, value) native "DOMPoint_w_Setter"; + static w_Setter(mthis, value) native "DOMPoint_w_Setter"; static x_Getter(mthis) native "DOMPoint_x_Getter"; - static x_Setter_double(mthis, value) native "DOMPoint_x_Setter"; + static x_Setter(mthis, value) native "DOMPoint_x_Setter"; static y_Getter(mthis) native "DOMPoint_y_Getter"; - static y_Setter_double(mthis, value) native "DOMPoint_y_Setter"; + static y_Setter(mthis, value) native "DOMPoint_y_Setter"; static z_Getter(mthis) native "DOMPoint_z_Getter"; - static z_Setter_double(mthis, value) native "DOMPoint_z_Setter"; + static z_Setter(mthis, value) native "DOMPoint_z_Setter"; } class BlinkDOMRectReadOnly { - static constructorCallback_double_double_double_double(x, y, width, height) native "DOMRectReadOnly_constructorCallback_double_double_double_double"; + static constructorCallback_4(x, y, width, height) native "DOMRectReadOnly_constructorCallback"; static bottom_Getter(mthis) native "DOMRectReadOnly_bottom_Getter"; @@ -1473,87 +1451,81 @@ class BlinkDOMRectReadOnly { } class BlinkDOMRect { - static constructorCallback_double_double_double_double(x, y, width, height) native "DOMRect_constructorCallback_double_double_double_double"; + static constructorCallback_4(x, y, width, height) native "DOMRect_constructorCallback"; - static constructorCallback_double_double_double(x, y, width) native "DOMRect_constructorCallback_double_double_double"; + static constructorCallback_3(x, y, width) native "DOMRect_constructorCallback"; - static constructorCallback_double_double(x, y) native "DOMRect_constructorCallback_double_double"; + static constructorCallback_2(x, y) native "DOMRect_constructorCallback"; - static constructorCallback_double(x) native "DOMRect_constructorCallback_double"; + static constructorCallback_1(x) native "DOMRect_constructorCallback"; static constructorCallback() native "DOMRect_constructorCallback"; static height_Getter(mthis) native "DOMRect_height_Getter"; - static height_Setter_double(mthis, value) native "DOMRect_height_Setter"; + static height_Setter(mthis, value) native "DOMRect_height_Setter"; static width_Getter(mthis) native "DOMRect_width_Getter"; - static width_Setter_double(mthis, value) native "DOMRect_width_Setter"; + static width_Setter(mthis, value) native "DOMRect_width_Setter"; static x_Getter(mthis) native "DOMRect_x_Getter"; - static x_Setter_double(mthis, value) native "DOMRect_x_Setter"; + static x_Setter(mthis, value) native "DOMRect_x_Setter"; static y_Getter(mthis) native "DOMRect_y_Getter"; - static y_Setter_double(mthis, value) native "DOMRect_y_Setter"; + static y_Setter(mthis, value) native "DOMRect_y_Setter"; } class BlinkDOMTokenList { static length_Getter(mthis) native "DOMTokenList_length_Getter"; - static add_Callback_DOMString(mthis, tokens) native "DOMTokenList_add_Callback_DOMString"; + static add_Callback_1(mthis, tokens) native "DOMTokenList_add_Callback"; - static contains_Callback_DOMString(mthis, token) native "DOMTokenList_contains_Callback_DOMString"; + static contains_Callback_1(mthis, token) native "DOMTokenList_contains_Callback"; - static item_Callback_ul(mthis, index) native "DOMTokenList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "DOMTokenList_item_Callback"; - static remove_Callback_DOMString(mthis, tokens) native "DOMTokenList_remove_Callback_DOMString"; + static remove_Callback_1(mthis, tokens) native "DOMTokenList_remove_Callback"; - static toggle_Callback_DOMString_boolean(mthis, token, force) native "DOMTokenList_toggle_Callback_DOMString_boolean"; + static toggle_Callback_2(mthis, token, force) native "DOMTokenList_toggle_Callback"; - static toggle_Callback_DOMString(mthis, token) native "DOMTokenList_toggle_Callback_DOMString"; + static toggle_Callback_1(mthis, token) native "DOMTokenList_toggle_Callback"; } class BlinkDOMSettableTokenList { static value_Getter(mthis) native "DOMSettableTokenList_value_Getter"; - static value_Setter_DOMString(mthis, value) native "DOMSettableTokenList_value_Setter"; + static value_Setter(mthis, value) native "DOMSettableTokenList_value_Setter"; - static $__getter___Callback_ul(mthis, index) native "DOMSettableTokenList___getter___Callback_unsigned long"; + static $__getter___Callback_1(mthis, index) native "DOMSettableTokenList___getter___Callback"; } class BlinkDOMStringList { static length_Getter(mthis) native "DOMStringList_length_Getter"; - static contains_Callback_DOMString(mthis, string) native "DOMStringList_contains_Callback_DOMString"; + static contains_Callback_1(mthis, string) native "DOMStringList_contains_Callback"; - static item_Callback_ul(mthis, index) native "DOMStringList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "DOMStringList_item_Callback"; } class BlinkDOMStringMap { - static $__delete___Callback_ul(mthis, index_OR_name) native "DOMStringMap___delete___Callback_unsigned long"; - - static $__delete___Callback_DOMString(mthis, index_OR_name) native "DOMStringMap___delete___Callback_DOMString"; - - static $__getter___Callback_ul(mthis, index_OR_name) native "DOMStringMap___getter___Callback_unsigned long"; + static $__delete___Callback_1(mthis, index_OR_name) native "DOMStringMap___delete___Callback"; - static $__getter___Callback_DOMString(mthis, index_OR_name) native "DOMStringMap___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, index_OR_name) native "DOMStringMap___getter___Callback"; - static $__setter___Callback_ul_DOMString(mthis, index_OR_name, value) native "DOMStringMap___setter___Callback_unsigned long_DOMString"; - - static $__setter___Callback_DOMString_DOMString(mthis, index_OR_name, value) native "DOMStringMap___setter___Callback_DOMString_DOMString"; + static $__setter___Callback_2(mthis, index_OR_name, value) native "DOMStringMap___setter___Callback"; } class BlinkDataTransfer { static dropEffect_Getter(mthis) native "DataTransfer_dropEffect_Getter"; - static dropEffect_Setter_DOMString(mthis, value) native "DataTransfer_dropEffect_Setter"; + static dropEffect_Setter(mthis, value) native "DataTransfer_dropEffect_Setter"; static effectAllowed_Getter(mthis) native "DataTransfer_effectAllowed_Getter"; - static effectAllowed_Setter_DOMString(mthis, value) native "DataTransfer_effectAllowed_Setter"; + static effectAllowed_Setter(mthis, value) native "DataTransfer_effectAllowed_Setter"; static files_Getter(mthis) native "DataTransfer_files_Getter"; @@ -1561,15 +1533,15 @@ class BlinkDataTransfer { static types_Getter(mthis) native "DataTransfer_types_Getter"; - static clearData_Callback_DOMString(mthis, type) native "DataTransfer_clearData_Callback_DOMString"; + static clearData_Callback_1(mthis, type) native "DataTransfer_clearData_Callback"; static clearData_Callback(mthis) native "DataTransfer_clearData_Callback"; - static getData_Callback_DOMString(mthis, type) native "DataTransfer_getData_Callback_DOMString"; + static getData_Callback_1(mthis, type) native "DataTransfer_getData_Callback"; - static setData_Callback_DOMString_DOMString(mthis, type, data) native "DataTransfer_setData_Callback_DOMString_DOMString"; + static setData_Callback_2(mthis, type, data) native "DataTransfer_setData_Callback"; - static setDragImage_Callback_Element_long_long(mthis, image, x, y) native "DataTransfer_setDragImage_Callback_Element_long_long"; + static setDragImage_Callback_3(mthis, image, x, y) native "DataTransfer_setDragImage_Callback"; } class BlinkDataTransferItem { @@ -1579,7 +1551,7 @@ class BlinkDataTransferItem { static getAsFile_Callback(mthis) native "DataTransferItem_getAsFile_Callback"; - static getAsString_Callback_StringCallback(mthis, callback) native "DataTransferItem_getAsString_Callback_StringCallback"; + static getAsString_Callback_1(mthis, callback) native "DataTransferItem_getAsString_Callback"; static webkitGetAsEntry_Callback(mthis) native "DataTransferItem_webkitGetAsEntry_Callback"; } @@ -1587,43 +1559,57 @@ class BlinkDataTransferItem { class BlinkDataTransferItemList { static length_Getter(mthis) native "DataTransferItemList_length_Getter"; - static $__getter___Callback_ul(mthis, index) native "DataTransferItemList___getter___Callback_unsigned long"; + static $__getter___Callback_1(mthis, index) native "DataTransferItemList___getter___Callback"; - static add_Callback_DOMString_DOMString(mthis, data_OR_file, type) native "DataTransferItemList_add_Callback_DOMString_DOMString"; + static add_Callback_2(mthis, data_OR_file, type) native "DataTransferItemList_add_Callback"; - static add_Callback_File(mthis, data_OR_file) native "DataTransferItemList_add_Callback_File"; + static add_Callback_1(mthis, data_OR_file) native "DataTransferItemList_add_Callback"; static clear_Callback(mthis) native "DataTransferItemList_clear_Callback"; - static remove_Callback_ul(mthis, index) native "DataTransferItemList_remove_Callback_unsigned long"; + static remove_Callback_1(mthis, index) native "DataTransferItemList_remove_Callback"; } class BlinkDatabase { static version_Getter(mthis) native "Database_version_Getter"; - static changeVersion_Callback_DOMString_DOMString_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback(mthis, oldVersion, newVersion, callback, errorCallback, successCallback) native "Database_changeVersion_Callback_DOMString_DOMString_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback"; + static changeVersion_Callback_5(mthis, oldVersion, newVersion, callback, errorCallback, successCallback) native "Database_changeVersion_Callback"; + + static changeVersion_Callback_4(mthis, oldVersion, newVersion, callback, errorCallback) native "Database_changeVersion_Callback"; + + static changeVersion_Callback_3(mthis, oldVersion, newVersion, callback) native "Database_changeVersion_Callback"; + + static changeVersion_Callback_2(mthis, oldVersion, newVersion) native "Database_changeVersion_Callback"; - static readTransaction_Callback_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback(mthis, callback, errorCallback, successCallback) native "Database_readTransaction_Callback_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback"; + static readTransaction_Callback_3(mthis, callback, errorCallback, successCallback) native "Database_readTransaction_Callback"; - static transaction_Callback_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback(mthis, callback, errorCallback, successCallback) native "Database_transaction_Callback_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback"; + static readTransaction_Callback_2(mthis, callback, errorCallback) native "Database_readTransaction_Callback"; + + static readTransaction_Callback_1(mthis, callback) native "Database_readTransaction_Callback"; + + static transaction_Callback_3(mthis, callback, errorCallback, successCallback) native "Database_transaction_Callback"; + + static transaction_Callback_2(mthis, callback, errorCallback) native "Database_transaction_Callback"; + + static transaction_Callback_1(mthis, callback) native "Database_transaction_Callback"; } class BlinkDatabaseSync {} class BlinkWindowBase64 { - static atob_Callback_DOMString(mthis, string) native "WindowBase64_atob_Callback_DOMString"; + static atob_Callback_1(mthis, string) native "WindowBase64_atob_Callback"; - static btoa_Callback_DOMString(mthis, string) native "WindowBase64_btoa_Callback_DOMString"; + static btoa_Callback_1(mthis, string) native "WindowBase64_btoa_Callback"; } class BlinkWindowTimers { - static clearInterval_Callback_long(mthis, handle) native "WindowTimers_clearInterval_Callback_long"; + static clearInterval_Callback_1(mthis, handle) native "WindowTimers_clearInterval_Callback"; - static clearTimeout_Callback_long(mthis, handle) native "WindowTimers_clearTimeout_Callback_long"; + static clearTimeout_Callback_1(mthis, handle) native "WindowTimers_clearTimeout_Callback"; - static setInterval_Callback_ScriptValue_long(mthis, handler, timeout) native "WindowTimers_setInterval_Callback"; + static setInterval_Callback_2(mthis, handler, timeout) native "WindowTimers_setInterval_Callback"; - static setTimeout_Callback_ScriptValue_long(mthis, handler, timeout) native "WindowTimers_setTimeout_Callback"; + static setTimeout_Callback_2(mthis, handler, timeout) native "WindowTimers_setTimeout_Callback"; } class BlinkWorkerGlobalScope { @@ -1643,35 +1629,45 @@ class BlinkWorkerGlobalScope { static close_Callback(mthis) native "WorkerGlobalScope_close_Callback"; - static importScripts_Callback_DOMString(mthis, urls) native "WorkerGlobalScope_importScripts_Callback_DOMString"; + static importScripts_Callback_1(mthis, urls) native "WorkerGlobalScope_importScripts_Callback"; + + static openDatabase_Callback_5(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabase_Callback"; + + static openDatabase_Callback_4(mthis, name, version, displayName, estimatedSize) native "WorkerGlobalScope_openDatabase_Callback"; + + static openDatabaseSync_Callback_5(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabaseSync_Callback"; + + static openDatabaseSync_Callback_4(mthis, name, version, displayName, estimatedSize) native "WorkerGlobalScope_openDatabaseSync_Callback"; - static openDatabase_Callback_DOMString_DOMString_DOMString_ul_DatabaseCallback(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabase_Callback_DOMString_DOMString_DOMString_unsigned long_DatabaseCallback"; + static webkitRequestFileSystem_Callback_4(mthis, type, size, successCallback, errorCallback) native "WorkerGlobalScope_webkitRequestFileSystem_Callback"; - static openDatabaseSync_Callback_DOMString_DOMString_DOMString_ul_DatabaseCallback(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabaseSync_Callback_DOMString_DOMString_DOMString_unsigned long_DatabaseCallback"; + static webkitRequestFileSystem_Callback_3(mthis, type, size, successCallback) native "WorkerGlobalScope_webkitRequestFileSystem_Callback"; - static webkitRequestFileSystem_Callback_us_ll_FileSystemCallback_ErrorCallback(mthis, type, size, successCallback, errorCallback) native "WorkerGlobalScope_webkitRequestFileSystem_Callback_unsigned short_long long_FileSystemCallback_ErrorCallback"; + static webkitRequestFileSystem_Callback_2(mthis, type, size) native "WorkerGlobalScope_webkitRequestFileSystem_Callback"; - static webkitRequestFileSystemSync_Callback_us_ll(mthis, type, size) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback_unsigned short_long long"; + static webkitRequestFileSystemSync_Callback_2(mthis, type, size) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback"; - static webkitResolveLocalFileSystemSyncURL_Callback_DOMString(mthis, url) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback_DOMString"; + static webkitResolveLocalFileSystemSyncURL_Callback_1(mthis, url) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback"; - static webkitResolveLocalFileSystemURL_Callback_DOMString_EntryCallback_ErrorCallback(mthis, url, successCallback, errorCallback) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback_DOMString_EntryCallback_ErrorCallback"; + static webkitResolveLocalFileSystemURL_Callback_3(mthis, url, successCallback, errorCallback) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback"; - static atob_Callback_DOMString(mthis, string) native "WorkerGlobalScope_atob_Callback_DOMString"; + static webkitResolveLocalFileSystemURL_Callback_2(mthis, url, successCallback) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback"; - static btoa_Callback_DOMString(mthis, string) native "WorkerGlobalScope_btoa_Callback_DOMString"; + static atob_Callback_1(mthis, string) native "WorkerGlobalScope_atob_Callback"; - static clearInterval_Callback_long(mthis, handle) native "WorkerGlobalScope_clearInterval_Callback_long"; + static btoa_Callback_1(mthis, string) native "WorkerGlobalScope_btoa_Callback"; - static clearTimeout_Callback_long(mthis, handle) native "WorkerGlobalScope_clearTimeout_Callback_long"; + static clearInterval_Callback_1(mthis, handle) native "WorkerGlobalScope_clearInterval_Callback"; - static setInterval_Callback_ScriptValue_long(mthis, handler, timeout) native "WorkerGlobalScope_setInterval_Callback"; + static clearTimeout_Callback_1(mthis, handle) native "WorkerGlobalScope_clearTimeout_Callback"; - static setTimeout_Callback_ScriptValue_long(mthis, handler, timeout) native "WorkerGlobalScope_setTimeout_Callback"; + static setInterval_Callback_2(mthis, handler, timeout) native "WorkerGlobalScope_setInterval_Callback"; + + static setTimeout_Callback_2(mthis, handler, timeout) native "WorkerGlobalScope_setTimeout_Callback"; } class BlinkDedicatedWorkerGlobalScope { - static postMessage_Callback_ScriptValue_SEQ_MessagePort_SEQ(mthis, message, transfer) native "DedicatedWorkerGlobalScope_postMessage_Callback"; + static postMessage_Callback_2(mthis, message, transfer) native "DedicatedWorkerGlobalScope_postMessage_Callback"; } class BlinkDelayNode { @@ -1679,15 +1675,29 @@ class BlinkDelayNode { } class BlinkDeprecatedStorageInfo { - static queryUsageAndQuota_Callback_us_StorageUsageCallback_StorageErrorCallback(mthis, storageType, usageCallback, errorCallback) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback_unsigned short_StorageUsageCallback_StorageErrorCallback"; + static queryUsageAndQuota_Callback_3(mthis, storageType, usageCallback, errorCallback) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback"; + + static queryUsageAndQuota_Callback_2(mthis, storageType, usageCallback) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback"; + + static queryUsageAndQuota_Callback_1(mthis, storageType) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback"; + + static requestQuota_Callback_4(mthis, storageType, newQuotaInBytes, quotaCallback, errorCallback) native "DeprecatedStorageInfo_requestQuota_Callback"; - static requestQuota_Callback_us_ull_StorageQuotaCallback_StorageErrorCallback(mthis, storageType, newQuotaInBytes, quotaCallback, errorCallback) native "DeprecatedStorageInfo_requestQuota_Callback_unsigned short_unsigned long long_StorageQuotaCallback_StorageErrorCallback"; + static requestQuota_Callback_3(mthis, storageType, newQuotaInBytes, quotaCallback) native "DeprecatedStorageInfo_requestQuota_Callback"; + + static requestQuota_Callback_2(mthis, storageType, newQuotaInBytes) native "DeprecatedStorageInfo_requestQuota_Callback"; } class BlinkDeprecatedStorageQuota { - static queryUsageAndQuota_Callback_StorageUsageCallback_StorageErrorCallback(mthis, usageCallback, errorCallback) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback_StorageUsageCallback_StorageErrorCallback"; + static queryUsageAndQuota_Callback_2(mthis, usageCallback, errorCallback) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback"; + + static queryUsageAndQuota_Callback_1(mthis, usageCallback) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback"; + + static requestQuota_Callback_3(mthis, newQuotaInBytes, quotaCallback, errorCallback) native "DeprecatedStorageQuota_requestQuota_Callback"; + + static requestQuota_Callback_2(mthis, newQuotaInBytes, quotaCallback) native "DeprecatedStorageQuota_requestQuota_Callback"; - static requestQuota_Callback_ull_StorageQuotaCallback_StorageErrorCallback(mthis, newQuotaInBytes, quotaCallback, errorCallback) native "DeprecatedStorageQuota_requestQuota_Callback_unsigned long long_StorageQuotaCallback_StorageErrorCallback"; + static requestQuota_Callback_1(mthis, newQuotaInBytes) native "DeprecatedStorageQuota_requestQuota_Callback"; } class BlinkDeviceAcceleration { @@ -1713,7 +1723,7 @@ class BlinkDeviceMotionEvent { static rotationRate_Getter(mthis) native "DeviceMotionEvent_rotationRate_Getter"; - static initDeviceMotionEvent_Callback_DOMString_boolean_boolean_DeviceAcceleration_DeviceAcceleration_DeviceRotationRate_double(mthis, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval) native "DeviceMotionEvent_initDeviceMotionEvent_Callback"; + static initDeviceMotionEvent_Callback_7(mthis, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval) native "DeviceMotionEvent_initDeviceMotionEvent_Callback"; } class BlinkDeviceOrientationEvent { @@ -1725,7 +1735,7 @@ class BlinkDeviceOrientationEvent { static gamma_Getter(mthis) native "DeviceOrientationEvent_gamma_Getter"; - static initDeviceOrientationEvent_Callback_DOMString_boolean_boolean_double_double_double_boolean(mthis, type, bubbles, cancelable, alpha, beta, gamma, absolute) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback"; + static initDeviceOrientationEvent_Callback_7(mthis, type, bubbles, cancelable, alpha, beta, gamma, absolute) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback"; } class BlinkDeviceRotationRate { @@ -1747,19 +1757,35 @@ class BlinkEntry { static name_Getter(mthis) native "Entry_name_Getter"; - static copyTo_Callback_DirectoryEntry_DOMString_EntryCallback_ErrorCallback(mthis, parent, name, successCallback, errorCallback) native "Entry_copyTo_Callback_DirectoryEntry_DOMString_EntryCallback_ErrorCallback"; + static copyTo_Callback_4(mthis, parent, name, successCallback, errorCallback) native "Entry_copyTo_Callback"; + + static copyTo_Callback_3(mthis, parent, name, successCallback) native "Entry_copyTo_Callback"; + + static copyTo_Callback_2(mthis, parent, name) native "Entry_copyTo_Callback"; + + static copyTo_Callback_1(mthis, parent) native "Entry_copyTo_Callback"; + + static getMetadata_Callback_2(mthis, successCallback, errorCallback) native "Entry_getMetadata_Callback"; + + static getMetadata_Callback_1(mthis, successCallback) native "Entry_getMetadata_Callback"; + + static getParent_Callback_2(mthis, successCallback, errorCallback) native "Entry_getParent_Callback"; + + static getParent_Callback_1(mthis, successCallback) native "Entry_getParent_Callback"; + + static getParent_Callback(mthis) native "Entry_getParent_Callback"; - static copyTo_Callback_DirectoryEntry(mthis, parent) native "Entry_copyTo_Callback_DirectoryEntry"; + static moveTo_Callback_4(mthis, parent, name, successCallback, errorCallback) native "Entry_moveTo_Callback"; - static getMetadata_Callback_MetadataCallback_ErrorCallback(mthis, successCallback, errorCallback) native "Entry_getMetadata_Callback_MetadataCallback_ErrorCallback"; + static moveTo_Callback_3(mthis, parent, name, successCallback) native "Entry_moveTo_Callback"; - static getParent_Callback_EntryCallback_ErrorCallback(mthis, successCallback, errorCallback) native "Entry_getParent_Callback_EntryCallback_ErrorCallback"; + static moveTo_Callback_2(mthis, parent, name) native "Entry_moveTo_Callback"; - static moveTo_Callback_DirectoryEntry_DOMString_EntryCallback_ErrorCallback(mthis, parent, name, successCallback, errorCallback) native "Entry_moveTo_Callback_DirectoryEntry_DOMString_EntryCallback_ErrorCallback"; + static moveTo_Callback_1(mthis, parent) native "Entry_moveTo_Callback"; - static moveTo_Callback_DirectoryEntry(mthis, parent) native "Entry_moveTo_Callback_DirectoryEntry"; + static remove_Callback_2(mthis, successCallback, errorCallback) native "Entry_remove_Callback"; - static remove_Callback_VoidCallback_ErrorCallback(mthis, successCallback, errorCallback) native "Entry_remove_Callback_VoidCallback_ErrorCallback"; + static remove_Callback_1(mthis, successCallback) native "Entry_remove_Callback"; static toURL_Callback(mthis) native "Entry_toURL_Callback"; } @@ -1767,11 +1793,25 @@ class BlinkEntry { class BlinkDirectoryEntry { static createReader_Callback(mthis) native "DirectoryEntry_createReader_Callback"; - static getDirectory_Callback_DOMString_Dictionary_EntryCallback_ErrorCallback(mthis, path, options, successCallback, errorCallback) native "DirectoryEntry_getDirectory_Callback_DOMString_Dictionary_EntryCallback_ErrorCallback"; + static getDirectory_Callback_4(mthis, path, options, successCallback, errorCallback) native "DirectoryEntry_getDirectory_Callback"; - static getFile_Callback_DOMString_Dictionary_EntryCallback_ErrorCallback(mthis, path, options, successCallback, errorCallback) native "DirectoryEntry_getFile_Callback_DOMString_Dictionary_EntryCallback_ErrorCallback"; + static getDirectory_Callback_3(mthis, path, options, successCallback) native "DirectoryEntry_getDirectory_Callback"; - static removeRecursively_Callback_VoidCallback_ErrorCallback(mthis, successCallback, errorCallback) native "DirectoryEntry_removeRecursively_Callback_VoidCallback_ErrorCallback"; + static getDirectory_Callback_2(mthis, path, options) native "DirectoryEntry_getDirectory_Callback"; + + static getDirectory_Callback_1(mthis, path) native "DirectoryEntry_getDirectory_Callback"; + + static getFile_Callback_4(mthis, path, options, successCallback, errorCallback) native "DirectoryEntry_getFile_Callback"; + + static getFile_Callback_3(mthis, path, options, successCallback) native "DirectoryEntry_getFile_Callback"; + + static getFile_Callback_2(mthis, path, options) native "DirectoryEntry_getFile_Callback"; + + static getFile_Callback_1(mthis, path) native "DirectoryEntry_getFile_Callback"; + + static removeRecursively_Callback_2(mthis, successCallback, errorCallback) native "DirectoryEntry_removeRecursively_Callback"; + + static removeRecursively_Callback_1(mthis, successCallback) native "DirectoryEntry_removeRecursively_Callback"; } class BlinkEntrySync {} @@ -1779,7 +1819,9 @@ class BlinkEntrySync {} class BlinkDirectoryEntrySync {} class BlinkDirectoryReader { - static readEntries_Callback_EntriesCallback_ErrorCallback(mthis, successCallback, errorCallback) native "DirectoryReader_readEntries_Callback_EntriesCallback_ErrorCallback"; + static readEntries_Callback_2(mthis, successCallback, errorCallback) native "DirectoryReader_readEntries_Callback"; + + static readEntries_Callback_1(mthis, successCallback) native "DirectoryReader_readEntries_Callback"; } class BlinkDirectoryReaderSync {} @@ -1795,9 +1837,9 @@ class BlinkParentNode { static lastElementChild_Getter(mthis) native "ParentNode_lastElementChild_Getter"; - static querySelector_Callback_DOMString(mthis, selectors) native "ParentNode_querySelector_Callback_DOMString"; + static querySelector_Callback_1(mthis, selectors) native "ParentNode_querySelector_Callback"; - static querySelectorAll_Callback_DOMString(mthis, selectors) native "ParentNode_querySelectorAll_Callback_DOMString"; + static querySelectorAll_Callback_1(mthis, selectors) native "ParentNode_querySelectorAll_Callback"; } class BlinkDocument { @@ -1805,13 +1847,13 @@ class BlinkDocument { static body_Getter(mthis) native "Document_body_Getter"; - static body_Setter_HTMLElement(mthis, value) native "Document_body_Setter"; + static body_Setter(mthis, value) native "Document_body_Setter"; static contentType_Getter(mthis) native "Document_contentType_Getter"; static cookie_Getter(mthis) native "Document_cookie_Getter"; - static cookie_Setter_DOMString(mthis, value) native "Document_cookie_Setter"; + static cookie_Setter(mthis, value) native "Document_cookie_Setter"; static currentScript_Getter(mthis) native "Document_currentScript_Getter"; @@ -1847,7 +1889,7 @@ class BlinkDocument { static selectedStylesheetSet_Getter(mthis) native "Document_selectedStylesheetSet_Getter"; - static selectedStylesheetSet_Setter_DOMString(mthis, value) native "Document_selectedStylesheetSet_Setter"; + static selectedStylesheetSet_Setter(mthis, value) native "Document_selectedStylesheetSet_Setter"; static styleSheets_Getter(mthis) native "Document_styleSheets_Getter"; @@ -1855,7 +1897,7 @@ class BlinkDocument { static title_Getter(mthis) native "Document_title_Getter"; - static title_Setter_DOMString(mthis, value) native "Document_title_Setter"; + static title_Setter(mthis, value) native "Document_title_Setter"; static visibilityState_Getter(mthis) native "Document_visibilityState_Getter"; @@ -1867,65 +1909,65 @@ class BlinkDocument { static webkitVisibilityState_Getter(mthis) native "Document_webkitVisibilityState_Getter"; - static adoptNode_Callback_Node(mthis, node) native "Document_adoptNode_Callback_Node"; + static adoptNode_Callback_1(mthis, node) native "Document_adoptNode_Callback"; - static caretRangeFromPoint_Callback_long_long(mthis, x, y) native "Document_caretRangeFromPoint_Callback_long_long"; + static caretRangeFromPoint_Callback_2(mthis, x, y) native "Document_caretRangeFromPoint_Callback"; static createDocumentFragment_Callback(mthis) native "Document_createDocumentFragment_Callback"; - static createElement_Callback_DOMString(mthis, localName_OR_tagName, typeExtension) native "Document_createElement_Callback"; + static createElement_Callback_2(mthis, localName_OR_tagName, typeExtension) native "Document_createElement_Callback"; - static createElementNS_Callback_DOMString_DOMString(mthis, namespaceURI, qualifiedName, typeExtension) native "Document_createElementNS_Callback"; + static createElementNS_Callback_3(mthis, namespaceURI, qualifiedName, typeExtension) native "Document_createElementNS_Callback"; - static createEvent_Callback_DOMString(mthis, eventType) native "Document_createEvent_Callback_DOMString"; + static createEvent_Callback_1(mthis, eventType) native "Document_createEvent_Callback"; - static createNodeIterator_Callback_Node_ul_NodeFilter(mthis, root, whatToShow, filter) native "Document_createNodeIterator_Callback_Node_unsigned long_NodeFilter"; + static createNodeIterator_Callback_3(mthis, root, whatToShow, filter) native "Document_createNodeIterator_Callback"; - static createNodeIterator_Callback_Node(mthis, root) native "Document_createNodeIterator_Callback_Node"; + static createNodeIterator_Callback_1(mthis, root) native "Document_createNodeIterator_Callback"; static createRange_Callback(mthis) native "Document_createRange_Callback"; - static createTextNode_Callback_DOMString(mthis, data) native "Document_createTextNode_Callback_DOMString"; + static createTextNode_Callback_1(mthis, data) native "Document_createTextNode_Callback"; - static createTouch_Callback_Window_EventTarget_long_double_double_double_double_double_double_float_float(mthis, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce) native "Document_createTouch_Callback_Window_EventTarget_long_double_double_double_double_double_double_float_float"; + static createTouch_Callback_11(mthis, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce) native "Document_createTouch_Callback"; - static createTouchList_Callback_Touch(mthis, touches) native "Document_createTouchList_Callback_Touch"; + static createTouchList_Callback_1(mthis, touches) native "Document_createTouchList_Callback"; - static createTreeWalker_Callback_Node_ul_NodeFilter(mthis, root, whatToShow, filter) native "Document_createTreeWalker_Callback_Node_unsigned long_NodeFilter"; + static createTreeWalker_Callback_3(mthis, root, whatToShow, filter) native "Document_createTreeWalker_Callback"; - static createTreeWalker_Callback_Node(mthis, root) native "Document_createTreeWalker_Callback_Node"; + static createTreeWalker_Callback_1(mthis, root) native "Document_createTreeWalker_Callback"; - static elementFromPoint_Callback_long_long(mthis, x, y) native "Document_elementFromPoint_Callback_long_long"; + static elementFromPoint_Callback_2(mthis, x, y) native "Document_elementFromPoint_Callback"; - static execCommand_Callback_DOMString_boolean_DOMString(mthis, command, userInterface, value) native "Document_execCommand_Callback_DOMString_boolean_DOMString"; + static execCommand_Callback_3(mthis, command, userInterface, value) native "Document_execCommand_Callback"; static exitFullscreen_Callback(mthis) native "Document_exitFullscreen_Callback"; static exitPointerLock_Callback(mthis) native "Document_exitPointerLock_Callback"; - static getCSSCanvasContext_Callback_DOMString_DOMString_long_long(mthis, contextId, name, width, height) native "Document_getCSSCanvasContext_Callback_DOMString_DOMString_long_long"; + static getCSSCanvasContext_Callback_4(mthis, contextId, name, width, height) native "Document_getCSSCanvasContext_Callback"; - static getElementById_Callback_DOMString(mthis, elementId) native "Document_getElementById_Callback_DOMString"; + static getElementById_Callback_1(mthis, elementId) native "Document_getElementById_Callback"; - static getElementsByClassName_Callback_DOMString(mthis, classNames) native "Document_getElementsByClassName_Callback_DOMString"; + static getElementsByClassName_Callback_1(mthis, classNames) native "Document_getElementsByClassName_Callback"; - static getElementsByName_Callback_DOMString(mthis, elementName) native "Document_getElementsByName_Callback_DOMString"; + static getElementsByName_Callback_1(mthis, elementName) native "Document_getElementsByName_Callback"; - static getElementsByTagName_Callback_DOMString(mthis, localName) native "Document_getElementsByTagName_Callback_DOMString"; + static getElementsByTagName_Callback_1(mthis, localName) native "Document_getElementsByTagName_Callback"; - static importNode_Callback_Node_boolean(mthis, node, deep) native "Document_importNode_Callback_Node_boolean"; + static importNode_Callback_2(mthis, node, deep) native "Document_importNode_Callback"; - static importNode_Callback_Node(mthis, node) native "Document_importNode_Callback_Node"; + static importNode_Callback_1(mthis, node) native "Document_importNode_Callback"; - static queryCommandEnabled_Callback_DOMString(mthis, command) native "Document_queryCommandEnabled_Callback_DOMString"; + static queryCommandEnabled_Callback_1(mthis, command) native "Document_queryCommandEnabled_Callback"; - static queryCommandIndeterm_Callback_DOMString(mthis, command) native "Document_queryCommandIndeterm_Callback_DOMString"; + static queryCommandIndeterm_Callback_1(mthis, command) native "Document_queryCommandIndeterm_Callback"; - static queryCommandState_Callback_DOMString(mthis, command) native "Document_queryCommandState_Callback_DOMString"; + static queryCommandState_Callback_1(mthis, command) native "Document_queryCommandState_Callback"; - static queryCommandSupported_Callback_DOMString(mthis, command) native "Document_queryCommandSupported_Callback_DOMString"; + static queryCommandSupported_Callback_1(mthis, command) native "Document_queryCommandSupported_Callback"; - static queryCommandValue_Callback_DOMString(mthis, command) native "Document_queryCommandValue_Callback_DOMString"; + static queryCommandValue_Callback_1(mthis, command) native "Document_queryCommandValue_Callback"; static webkitExitFullscreen_Callback(mthis) native "Document_webkitExitFullscreen_Callback"; @@ -1937,13 +1979,13 @@ class BlinkDocument { static lastElementChild_Getter(mthis) native "Document_lastElementChild_Getter"; - static querySelector_Callback_DOMString(mthis, selectors) native "Document_querySelector_Callback_DOMString"; + static querySelector_Callback_1(mthis, selectors) native "Document_querySelector_Callback"; - static querySelectorAll_Callback_DOMString(mthis, selectors) native "Document_querySelectorAll_Callback_DOMString"; + static querySelectorAll_Callback_1(mthis, selectors) native "Document_querySelectorAll_Callback"; } class BlinkDocumentFragment { - static getElementById_Callback_DOMString(mthis, elementId) native "DocumentFragment_getElementById_Callback_DOMString"; + static getElementById_Callback_1(mthis, elementId) native "DocumentFragment_getElementById_Callback"; static childElementCount_Getter(mthis) native "DocumentFragment_childElementCount_Getter"; @@ -1951,9 +1993,9 @@ class BlinkDocumentFragment { static lastElementChild_Getter(mthis) native "DocumentFragment_lastElementChild_Getter"; - static querySelector_Callback_DOMString(mthis, selectors) native "DocumentFragment_querySelector_Callback_DOMString"; + static querySelector_Callback_1(mthis, selectors) native "DocumentFragment_querySelector_Callback"; - static querySelectorAll_Callback_DOMString(mthis, selectors) native "DocumentFragment_querySelectorAll_Callback_DOMString"; + static querySelectorAll_Callback_1(mthis, selectors) native "DocumentFragment_querySelectorAll_Callback"; } class BlinkDocumentType {} @@ -1985,7 +2027,7 @@ class BlinkElement { static className_Getter(mthis) native "Element_className_Getter"; - static className_Setter_DOMString(mthis, value) native "Element_className_Setter"; + static className_Setter(mthis, value) native "Element_className_Setter"; static clientHeight_Getter(mthis) native "Element_clientHeight_Getter"; @@ -1997,11 +2039,11 @@ class BlinkElement { static id_Getter(mthis) native "Element_id_Getter"; - static id_Setter_DOMString(mthis, value) native "Element_id_Setter"; + static id_Setter(mthis, value) native "Element_id_Setter"; static innerHTML_Getter(mthis) native "Element_innerHTML_Getter"; - static innerHTML_Setter_DOMString(mthis, value) native "Element_innerHTML_Setter"; + static innerHTML_Setter(mthis, value) native "Element_innerHTML_Setter"; static localName_Getter(mthis) native "Element_localName_Getter"; @@ -2023,11 +2065,11 @@ class BlinkElement { static scrollLeft_Getter(mthis) native "Element_scrollLeft_Getter"; - static scrollLeft_Setter_long(mthis, value) native "Element_scrollLeft_Setter"; + static scrollLeft_Setter(mthis, value) native "Element_scrollLeft_Setter"; static scrollTop_Getter(mthis) native "Element_scrollTop_Getter"; - static scrollTop_Setter_long(mthis, value) native "Element_scrollTop_Setter"; + static scrollTop_Setter(mthis, value) native "Element_scrollTop_Setter"; static scrollWidth_Getter(mthis) native "Element_scrollWidth_Getter"; @@ -2037,7 +2079,7 @@ class BlinkElement { static tagName_Getter(mthis) native "Element_tagName_Getter"; - static animate_Callback_object_object(mthis, effect, timing) native "Element_animate_Callback"; + static animate_Callback_2(mthis, effect, timing) native "Element_animate_Callback"; static blur_Callback(mthis) native "Element_blur_Callback"; @@ -2047,9 +2089,9 @@ class BlinkElement { static getAnimationPlayers_Callback(mthis) native "Element_getAnimationPlayers_Callback"; - static getAttribute_Callback_DOMString(mthis, name) native "Element_getAttribute_Callback_DOMString"; + static getAttribute_Callback_1(mthis, name) native "Element_getAttribute_Callback"; - static getAttributeNS_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "Element_getAttributeNS_Callback_DOMString_DOMString"; + static getAttributeNS_Callback_2(mthis, namespaceURI, localName) native "Element_getAttributeNS_Callback"; static getBoundingClientRect_Callback(mthis) native "Element_getBoundingClientRect_Callback"; @@ -2057,41 +2099,41 @@ class BlinkElement { static getDestinationInsertionPoints_Callback(mthis) native "Element_getDestinationInsertionPoints_Callback"; - static getElementsByClassName_Callback_DOMString(mthis, classNames) native "Element_getElementsByClassName_Callback_DOMString"; + static getElementsByClassName_Callback_1(mthis, classNames) native "Element_getElementsByClassName_Callback"; - static getElementsByTagName_Callback_DOMString(mthis, name) native "Element_getElementsByTagName_Callback_DOMString"; + static getElementsByTagName_Callback_1(mthis, name) native "Element_getElementsByTagName_Callback"; - static hasAttribute_Callback_DOMString(mthis, name) native "Element_hasAttribute_Callback_DOMString"; + static hasAttribute_Callback_1(mthis, name) native "Element_hasAttribute_Callback"; - static hasAttributeNS_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "Element_hasAttributeNS_Callback_DOMString_DOMString"; + static hasAttributeNS_Callback_2(mthis, namespaceURI, localName) native "Element_hasAttributeNS_Callback"; - static insertAdjacentElement_Callback_DOMString_Element(mthis, where, element) native "Element_insertAdjacentElement_Callback_DOMString_Element"; + static insertAdjacentElement_Callback_2(mthis, where, element) native "Element_insertAdjacentElement_Callback"; - static insertAdjacentHTML_Callback_DOMString_DOMString(mthis, where, html) native "Element_insertAdjacentHTML_Callback_DOMString_DOMString"; + static insertAdjacentHTML_Callback_2(mthis, where, html) native "Element_insertAdjacentHTML_Callback"; - static insertAdjacentText_Callback_DOMString_DOMString(mthis, where, text) native "Element_insertAdjacentText_Callback_DOMString_DOMString"; + static insertAdjacentText_Callback_2(mthis, where, text) native "Element_insertAdjacentText_Callback"; - static matches_Callback_DOMString(mthis, selectors) native "Element_matches_Callback_DOMString"; + static matches_Callback_1(mthis, selectors) native "Element_matches_Callback"; - static removeAttribute_Callback_DOMString(mthis, name) native "Element_removeAttribute_Callback_DOMString"; + static removeAttribute_Callback_1(mthis, name) native "Element_removeAttribute_Callback"; - static removeAttributeNS_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "Element_removeAttributeNS_Callback_DOMString_DOMString"; + static removeAttributeNS_Callback_2(mthis, namespaceURI, localName) native "Element_removeAttributeNS_Callback"; static requestFullscreen_Callback(mthis) native "Element_requestFullscreen_Callback"; static requestPointerLock_Callback(mthis) native "Element_requestPointerLock_Callback"; - static scrollIntoView_Callback_boolean(mthis, alignWithTop) native "Element_scrollIntoView_Callback_boolean"; + static scrollIntoView_Callback_1(mthis, alignWithTop) native "Element_scrollIntoView_Callback"; static scrollIntoView_Callback(mthis) native "Element_scrollIntoView_Callback"; - static scrollIntoViewIfNeeded_Callback_boolean(mthis, centerIfNeeded) native "Element_scrollIntoViewIfNeeded_Callback_boolean"; + static scrollIntoViewIfNeeded_Callback_1(mthis, centerIfNeeded) native "Element_scrollIntoViewIfNeeded_Callback"; static scrollIntoViewIfNeeded_Callback(mthis) native "Element_scrollIntoViewIfNeeded_Callback"; - static setAttribute_Callback_DOMString_DOMString(mthis, name, value) native "Element_setAttribute_Callback_DOMString_DOMString"; + static setAttribute_Callback_2(mthis, name, value) native "Element_setAttribute_Callback"; - static setAttributeNS_Callback_DOMString_DOMString_DOMString(mthis, namespaceURI, qualifiedName, value) native "Element_setAttributeNS_Callback_DOMString_DOMString_DOMString"; + static setAttributeNS_Callback_3(mthis, namespaceURI, qualifiedName, value) native "Element_setAttributeNS_Callback"; static nextElementSibling_Getter(mthis) native "Element_nextElementSibling_Getter"; @@ -2107,9 +2149,9 @@ class BlinkElement { static lastElementChild_Getter(mthis) native "Element_lastElementChild_Getter"; - static querySelector_Callback_DOMString(mthis, selectors) native "Element_querySelector_Callback_DOMString"; + static querySelector_Callback_1(mthis, selectors) native "Element_querySelector_Callback"; - static querySelectorAll_Callback_DOMString(mthis, selectors) native "Element_querySelectorAll_Callback_DOMString"; + static querySelectorAll_Callback_1(mthis, selectors) native "Element_querySelectorAll_Callback"; } class BlinkErrorEvent { @@ -2127,9 +2169,9 @@ class BlinkErrorEvent { } class BlinkEventSource { - static constructorCallback_DOMString_Dictionary(url, eventSourceInit) native "EventSource_constructorCallback_DOMString_Dictionary"; + static constructorCallback_2(url, eventSourceInit) native "EventSource_constructorCallback"; - static constructorCallback_DOMString(url) native "EventSource_constructorCallback_DOMString"; + static constructorCallback_1(url) native "EventSource_constructorCallback"; static readyState_Getter(mthis) native "EventSource_readyState_Getter"; @@ -2141,7 +2183,7 @@ class BlinkEventSource { } class BlinkFederatedCredential { - static constructorCallback_DOMString_DOMString_DOMString_DOMString(id, name, avatarURL, federation) native "FederatedCredential_constructorCallback_DOMString_DOMString_DOMString_DOMString"; + static constructorCallback_4(id, name, avatarURL, federation) native "FederatedCredential_constructorCallback"; static federation_Getter(mthis) native "FederatedCredential_federation_Getter"; } @@ -2161,7 +2203,7 @@ class BlinkFetchEvent { static request_Getter(mthis) native "FetchEvent_request_Getter"; - static respondWith_Callback_ScriptValue(mthis, value) native "FetchEvent_respondWith_Callback_ScriptValue"; + static respondWith_Callback_1(mthis, value) native "FetchEvent_respondWith_Callback"; } class BlinkFile { @@ -2175,9 +2217,13 @@ class BlinkFile { } class BlinkFileEntry { - static createWriter_Callback_FileWriterCallback_ErrorCallback(mthis, successCallback, errorCallback) native "FileEntry_createWriter_Callback_FileWriterCallback_ErrorCallback"; + static createWriter_Callback_2(mthis, successCallback, errorCallback) native "FileEntry_createWriter_Callback"; - static file_Callback_FileCallback_ErrorCallback(mthis, successCallback, errorCallback) native "FileEntry_file_Callback_FileCallback_ErrorCallback"; + static createWriter_Callback_1(mthis, successCallback) native "FileEntry_createWriter_Callback"; + + static file_Callback_2(mthis, successCallback, errorCallback) native "FileEntry_file_Callback"; + + static file_Callback_1(mthis, successCallback) native "FileEntry_file_Callback"; } class BlinkFileEntrySync {} @@ -2189,7 +2235,7 @@ class BlinkFileError { class BlinkFileList { static length_Getter(mthis) native "FileList_length_Getter"; - static item_Callback_ul(mthis, index) native "FileList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "FileList_item_Callback"; } class BlinkFileReader { @@ -2203,13 +2249,13 @@ class BlinkFileReader { static abort_Callback(mthis) native "FileReader_abort_Callback"; - static readAsArrayBuffer_Callback_Blob(mthis, blob) native "FileReader_readAsArrayBuffer_Callback_Blob"; + static readAsArrayBuffer_Callback_1(mthis, blob) native "FileReader_readAsArrayBuffer_Callback"; - static readAsDataURL_Callback_Blob(mthis, blob) native "FileReader_readAsDataURL_Callback_Blob"; + static readAsDataURL_Callback_1(mthis, blob) native "FileReader_readAsDataURL_Callback"; - static readAsText_Callback_Blob_DOMString(mthis, blob, encoding) native "FileReader_readAsText_Callback_Blob_DOMString"; + static readAsText_Callback_2(mthis, blob, encoding) native "FileReader_readAsText_Callback"; - static readAsText_Callback_Blob(mthis, blob) native "FileReader_readAsText_Callback_Blob"; + static readAsText_Callback_1(mthis, blob) native "FileReader_readAsText_Callback"; } class BlinkFileReaderSync { @@ -2227,11 +2273,11 @@ class BlinkFileWriter { static abort_Callback(mthis) native "FileWriter_abort_Callback"; - static seek_Callback_ll(mthis, position) native "FileWriter_seek_Callback_long long"; + static seek_Callback_1(mthis, position) native "FileWriter_seek_Callback"; - static truncate_Callback_ll(mthis, size) native "FileWriter_truncate_Callback_long long"; + static truncate_Callback_1(mthis, size) native "FileWriter_truncate_Callback"; - static write_Callback_Blob(mthis, data) native "FileWriter_write_Callback_Blob"; + static write_Callback_1(mthis, data) native "FileWriter_write_Callback"; } class BlinkFileWriterSync {} @@ -2243,25 +2289,17 @@ class BlinkFocusEvent { } class BlinkFontFace { - static constructorCallback_DOMString_DOMString(family, source) native "FontFace_constructorCallback_DOMString_DOMString"; - - static constructorCallback_DOMString_DOMString_Dictionary(family, source, descriptors) native "FontFace_constructorCallback_DOMString_DOMString_Dictionary"; - - static constructorCallback_DOMString_ArrayBufferView(family, source) native "FontFace_constructorCallback_DOMString_ArrayBufferView"; + static constructorCallback_2(family, source) native "FontFace_constructorCallback"; - static constructorCallback_DOMString_ArrayBufferView_Dictionary(family, source, descriptors) native "FontFace_constructorCallback_DOMString_ArrayBufferView_Dictionary"; - - static constructorCallback_DOMString_ArrayBuffer(family, source) native "FontFace_constructorCallback_DOMString_ArrayBuffer"; - - static constructorCallback_DOMString_ArrayBuffer_Dictionary(family, source, descriptors) native "FontFace_constructorCallback_DOMString_ArrayBuffer_Dictionary"; + static constructorCallback_3(family, source, descriptors) native "FontFace_constructorCallback"; static family_Getter(mthis) native "FontFace_family_Getter"; - static family_Setter_DOMString(mthis, value) native "FontFace_family_Setter"; + static family_Setter(mthis, value) native "FontFace_family_Setter"; static featureSettings_Getter(mthis) native "FontFace_featureSettings_Getter"; - static featureSettings_Setter_DOMString(mthis, value) native "FontFace_featureSettings_Setter"; + static featureSettings_Setter(mthis, value) native "FontFace_featureSettings_Setter"; static loaded_Getter(mthis) native "FontFace_loaded_Getter"; @@ -2269,23 +2307,23 @@ class BlinkFontFace { static stretch_Getter(mthis) native "FontFace_stretch_Getter"; - static stretch_Setter_DOMString(mthis, value) native "FontFace_stretch_Setter"; + static stretch_Setter(mthis, value) native "FontFace_stretch_Setter"; static style_Getter(mthis) native "FontFace_style_Getter"; - static style_Setter_DOMString(mthis, value) native "FontFace_style_Setter"; + static style_Setter(mthis, value) native "FontFace_style_Setter"; static unicodeRange_Getter(mthis) native "FontFace_unicodeRange_Getter"; - static unicodeRange_Setter_DOMString(mthis, value) native "FontFace_unicodeRange_Setter"; + static unicodeRange_Setter(mthis, value) native "FontFace_unicodeRange_Setter"; static variant_Getter(mthis) native "FontFace_variant_Getter"; - static variant_Setter_DOMString(mthis, value) native "FontFace_variant_Setter"; + static variant_Setter(mthis, value) native "FontFace_variant_Setter"; static weight_Getter(mthis) native "FontFace_weight_Getter"; - static weight_Setter_DOMString(mthis, value) native "FontFace_weight_Setter"; + static weight_Setter(mthis, value) native "FontFace_weight_Setter"; static load_Callback(mthis) native "FontFace_load_Callback"; } @@ -2295,19 +2333,19 @@ class BlinkFontFaceSet { static status_Getter(mthis) native "FontFaceSet_status_Getter"; - static add_Callback_FontFace(mthis, fontFace) native "FontFaceSet_add_Callback_FontFace"; + static add_Callback_1(mthis, fontFace) native "FontFaceSet_add_Callback"; - static check_Callback_DOMString_DOMString(mthis, font, text) native "FontFaceSet_check_Callback_DOMString_DOMString"; + static check_Callback_2(mthis, font, text) native "FontFaceSet_check_Callback"; static clear_Callback(mthis) native "FontFaceSet_clear_Callback"; - static delete_Callback_FontFace(mthis, fontFace) native "FontFaceSet_delete_Callback_FontFace"; + static delete_Callback_1(mthis, fontFace) native "FontFaceSet_delete_Callback"; - static forEach_Callback_FontFaceSetForEachCallback_ScriptValue(mthis, callback, thisArg) native "FontFaceSet_forEach_Callback_FontFaceSetForEachCallback_ScriptValue"; + static forEach_Callback_2(mthis, callback, thisArg) native "FontFaceSet_forEach_Callback"; - static forEach_Callback_FontFaceSetForEachCallback(mthis, callback) native "FontFaceSet_forEach_Callback_FontFaceSetForEachCallback"; + static forEach_Callback_1(mthis, callback) native "FontFaceSet_forEach_Callback"; - static has_Callback_FontFace(mthis, fontFace) native "FontFaceSet_has_Callback_FontFace"; + static has_Callback_1(mthis, fontFace) native "FontFaceSet_has_Callback"; } class BlinkFontFaceSetLoadEvent { @@ -2315,11 +2353,11 @@ class BlinkFontFaceSetLoadEvent { } class BlinkFormData { - static constructorCallback_HTMLFormElement(form) native "FormData_constructorCallback_HTMLFormElement"; + static constructorCallback_1(form) native "FormData_constructorCallback_HTMLFormElement"; - static append_Callback_DOMString_DOMString(mthis, name, value) native "FormData_append_Callback"; + static append_Callback_2(mthis, name, value) native "FormData_append_Callback"; - static append_Callback_DOMString_Blob_DOMString(mthis, name, value, filename) native "FormData_append_Callback"; + static append_Callback_3(mthis, name, value, filename) native "FormData_append_Callback"; } class BlinkGainNode { @@ -2355,23 +2393,31 @@ class BlinkGamepadEvent { class BlinkGamepadList { static length_Getter(mthis) native "GamepadList_length_Getter"; - static item_Callback_ul(mthis, index) native "GamepadList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "GamepadList_item_Callback"; } class BlinkGeofencing { static getRegisteredRegions_Callback(mthis) native "Geofencing_getRegisteredRegions_Callback"; - static registerRegion_Callback_GeofencingRegion(mthis, region) native "Geofencing_registerRegion_Callback_GeofencingRegion"; + static registerRegion_Callback_1(mthis, region) native "Geofencing_registerRegion_Callback"; - static unregisterRegion_Callback_DOMString(mthis, regionId) native "Geofencing_unregisterRegion_Callback_DOMString"; + static unregisterRegion_Callback_1(mthis, regionId) native "Geofencing_unregisterRegion_Callback"; } class BlinkGeolocation { - static clearWatch_Callback_long(mthis, watchID) native "Geolocation_clearWatch_Callback_long"; + static clearWatch_Callback_1(mthis, watchID) native "Geolocation_clearWatch_Callback"; + + static getCurrentPosition_Callback_3(mthis, successCallback, errorCallback, options) native "Geolocation_getCurrentPosition_Callback"; + + static getCurrentPosition_Callback_2(mthis, successCallback, errorCallback) native "Geolocation_getCurrentPosition_Callback"; - static getCurrentPosition_Callback_PositionCallback_PositionErrorCallback_Dictionary(mthis, successCallback, errorCallback, options) native "Geolocation_getCurrentPosition_Callback_PositionCallback_PositionErrorCallback_Dictionary"; + static getCurrentPosition_Callback_1(mthis, successCallback) native "Geolocation_getCurrentPosition_Callback"; - static watchPosition_Callback_PositionCallback_PositionErrorCallback_Dictionary(mthis, successCallback, errorCallback, options) native "Geolocation_watchPosition_Callback_PositionCallback_PositionErrorCallback_Dictionary"; + static watchPosition_Callback_3(mthis, successCallback, errorCallback, options) native "Geolocation_watchPosition_Callback"; + + static watchPosition_Callback_2(mthis, successCallback, errorCallback) native "Geolocation_watchPosition_Callback"; + + static watchPosition_Callback_1(mthis, successCallback) native "Geolocation_watchPosition_Callback"; } class BlinkGeoposition { @@ -2381,25 +2427,25 @@ class BlinkGeoposition { } class BlinkHTMLAllCollection { - static item_Callback_ul(mthis, index) native "HTMLAllCollection_item_Callback"; + static item_Callback_1(mthis, index) native "HTMLAllCollection_item_Callback"; } class BlinkHTMLElement { static contentEditable_Getter(mthis) native "HTMLElement_contentEditable_Getter"; - static contentEditable_Setter_DOMString(mthis, value) native "HTMLElement_contentEditable_Setter"; + static contentEditable_Setter(mthis, value) native "HTMLElement_contentEditable_Setter"; static dir_Getter(mthis) native "HTMLElement_dir_Getter"; - static dir_Setter_DOMString(mthis, value) native "HTMLElement_dir_Setter"; + static dir_Setter(mthis, value) native "HTMLElement_dir_Setter"; static draggable_Getter(mthis) native "HTMLElement_draggable_Getter"; - static draggable_Setter_boolean(mthis, value) native "HTMLElement_draggable_Setter"; + static draggable_Setter(mthis, value) native "HTMLElement_draggable_Setter"; static hidden_Getter(mthis) native "HTMLElement_hidden_Getter"; - static hidden_Setter_boolean(mthis, value) native "HTMLElement_hidden_Setter"; + static hidden_Setter(mthis, value) native "HTMLElement_hidden_Setter"; static inputMethodContext_Getter(mthis) native "HTMLElement_inputMethodContext_Getter"; @@ -2407,27 +2453,27 @@ class BlinkHTMLElement { static lang_Getter(mthis) native "HTMLElement_lang_Getter"; - static lang_Setter_DOMString(mthis, value) native "HTMLElement_lang_Setter"; + static lang_Setter(mthis, value) native "HTMLElement_lang_Setter"; static spellcheck_Getter(mthis) native "HTMLElement_spellcheck_Getter"; - static spellcheck_Setter_boolean(mthis, value) native "HTMLElement_spellcheck_Setter"; + static spellcheck_Setter(mthis, value) native "HTMLElement_spellcheck_Setter"; static tabIndex_Getter(mthis) native "HTMLElement_tabIndex_Getter"; - static tabIndex_Setter_long(mthis, value) native "HTMLElement_tabIndex_Setter"; + static tabIndex_Setter(mthis, value) native "HTMLElement_tabIndex_Setter"; static title_Getter(mthis) native "HTMLElement_title_Getter"; - static title_Setter_DOMString(mthis, value) native "HTMLElement_title_Setter"; + static title_Setter(mthis, value) native "HTMLElement_title_Setter"; static translate_Getter(mthis) native "HTMLElement_translate_Getter"; - static translate_Setter_boolean(mthis, value) native "HTMLElement_translate_Setter"; + static translate_Setter(mthis, value) native "HTMLElement_translate_Setter"; static webkitdropzone_Getter(mthis) native "HTMLElement_webkitdropzone_Getter"; - static webkitdropzone_Setter_DOMString(mthis, value) native "HTMLElement_webkitdropzone_Setter"; + static webkitdropzone_Setter(mthis, value) native "HTMLElement_webkitdropzone_Setter"; static click_Callback(mthis) native "HTMLElement_click_Callback"; } @@ -2435,45 +2481,45 @@ class BlinkHTMLElement { class BlinkURLUtils { static hash_Getter(mthis) native "URL_hash_Getter"; - static hash_Setter_DOMString(mthis, value) native "URL_hash_Setter"; + static hash_Setter(mthis, value) native "URL_hash_Setter"; static host_Getter(mthis) native "URL_host_Getter"; - static host_Setter_DOMString(mthis, value) native "URL_host_Setter"; + static host_Setter(mthis, value) native "URL_host_Setter"; static hostname_Getter(mthis) native "URL_hostname_Getter"; - static hostname_Setter_DOMString(mthis, value) native "URL_hostname_Setter"; + static hostname_Setter(mthis, value) native "URL_hostname_Setter"; static href_Getter(mthis) native "URL_href_Getter"; - static href_Setter_DOMString(mthis, value) native "URL_href_Setter"; + static href_Setter(mthis, value) native "URL_href_Setter"; static origin_Getter(mthis) native "URL_origin_Getter"; static password_Getter(mthis) native "URL_password_Getter"; - static password_Setter_DOMString(mthis, value) native "URL_password_Setter"; + static password_Setter(mthis, value) native "URL_password_Setter"; static pathname_Getter(mthis) native "URL_pathname_Getter"; - static pathname_Setter_DOMString(mthis, value) native "URL_pathname_Setter"; + static pathname_Setter(mthis, value) native "URL_pathname_Setter"; static port_Getter(mthis) native "URL_port_Getter"; - static port_Setter_DOMString(mthis, value) native "URL_port_Setter"; + static port_Setter(mthis, value) native "URL_port_Setter"; static protocol_Getter(mthis) native "URL_protocol_Getter"; - static protocol_Setter_DOMString(mthis, value) native "URL_protocol_Setter"; + static protocol_Setter(mthis, value) native "URL_protocol_Setter"; static search_Getter(mthis) native "URL_search_Getter"; - static search_Setter_DOMString(mthis, value) native "URL_search_Setter"; + static search_Setter(mthis, value) native "URL_search_Setter"; static username_Getter(mthis) native "URL_username_Getter"; - static username_Setter_DOMString(mthis, value) native "URL_username_Setter"; + static username_Setter(mthis, value) native "URL_username_Setter"; static toString_Callback(mthis) native "URL_toString_Callback"; } @@ -2481,69 +2527,69 @@ class BlinkURLUtils { class BlinkHTMLAnchorElement { static download_Getter(mthis) native "HTMLAnchorElement_download_Getter"; - static download_Setter_DOMString(mthis, value) native "HTMLAnchorElement_download_Setter"; + static download_Setter(mthis, value) native "HTMLAnchorElement_download_Setter"; static hreflang_Getter(mthis) native "HTMLAnchorElement_hreflang_Getter"; - static hreflang_Setter_DOMString(mthis, value) native "HTMLAnchorElement_hreflang_Setter"; + static hreflang_Setter(mthis, value) native "HTMLAnchorElement_hreflang_Setter"; static integrity_Getter(mthis) native "HTMLAnchorElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLAnchorElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLAnchorElement_integrity_Setter"; static rel_Getter(mthis) native "HTMLAnchorElement_rel_Getter"; - static rel_Setter_DOMString(mthis, value) native "HTMLAnchorElement_rel_Setter"; + static rel_Setter(mthis, value) native "HTMLAnchorElement_rel_Setter"; static target_Getter(mthis) native "HTMLAnchorElement_target_Getter"; - static target_Setter_DOMString(mthis, value) native "HTMLAnchorElement_target_Setter"; + static target_Setter(mthis, value) native "HTMLAnchorElement_target_Setter"; static type_Getter(mthis) native "HTMLAnchorElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLAnchorElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLAnchorElement_type_Setter"; static hash_Getter(mthis) native "HTMLAnchorElement_hash_Getter"; - static hash_Setter_DOMString(mthis, value) native "HTMLAnchorElement_hash_Setter"; + static hash_Setter(mthis, value) native "HTMLAnchorElement_hash_Setter"; static host_Getter(mthis) native "HTMLAnchorElement_host_Getter"; - static host_Setter_DOMString(mthis, value) native "HTMLAnchorElement_host_Setter"; + static host_Setter(mthis, value) native "HTMLAnchorElement_host_Setter"; static hostname_Getter(mthis) native "HTMLAnchorElement_hostname_Getter"; - static hostname_Setter_DOMString(mthis, value) native "HTMLAnchorElement_hostname_Setter"; + static hostname_Setter(mthis, value) native "HTMLAnchorElement_hostname_Setter"; static href_Getter(mthis) native "HTMLAnchorElement_href_Getter"; - static href_Setter_DOMString(mthis, value) native "HTMLAnchorElement_href_Setter"; + static href_Setter(mthis, value) native "HTMLAnchorElement_href_Setter"; static origin_Getter(mthis) native "HTMLAnchorElement_origin_Getter"; static password_Getter(mthis) native "HTMLAnchorElement_password_Getter"; - static password_Setter_DOMString(mthis, value) native "HTMLAnchorElement_password_Setter"; + static password_Setter(mthis, value) native "HTMLAnchorElement_password_Setter"; static pathname_Getter(mthis) native "HTMLAnchorElement_pathname_Getter"; - static pathname_Setter_DOMString(mthis, value) native "HTMLAnchorElement_pathname_Setter"; + static pathname_Setter(mthis, value) native "HTMLAnchorElement_pathname_Setter"; static port_Getter(mthis) native "HTMLAnchorElement_port_Getter"; - static port_Setter_DOMString(mthis, value) native "HTMLAnchorElement_port_Setter"; + static port_Setter(mthis, value) native "HTMLAnchorElement_port_Setter"; static protocol_Getter(mthis) native "HTMLAnchorElement_protocol_Getter"; - static protocol_Setter_DOMString(mthis, value) native "HTMLAnchorElement_protocol_Setter"; + static protocol_Setter(mthis, value) native "HTMLAnchorElement_protocol_Setter"; static search_Getter(mthis) native "HTMLAnchorElement_search_Getter"; - static search_Setter_DOMString(mthis, value) native "HTMLAnchorElement_search_Setter"; + static search_Setter(mthis, value) native "HTMLAnchorElement_search_Setter"; static username_Getter(mthis) native "HTMLAnchorElement_username_Getter"; - static username_Setter_DOMString(mthis, value) native "HTMLAnchorElement_username_Setter"; + static username_Setter(mthis, value) native "HTMLAnchorElement_username_Setter"; static toString_Callback(mthis) native "HTMLAnchorElement_toString_Callback"; } @@ -2553,61 +2599,61 @@ class BlinkHTMLAppletElement {} class BlinkHTMLAreaElement { static alt_Getter(mthis) native "HTMLAreaElement_alt_Getter"; - static alt_Setter_DOMString(mthis, value) native "HTMLAreaElement_alt_Setter"; + static alt_Setter(mthis, value) native "HTMLAreaElement_alt_Setter"; static coords_Getter(mthis) native "HTMLAreaElement_coords_Getter"; - static coords_Setter_DOMString(mthis, value) native "HTMLAreaElement_coords_Setter"; + static coords_Setter(mthis, value) native "HTMLAreaElement_coords_Setter"; static shape_Getter(mthis) native "HTMLAreaElement_shape_Getter"; - static shape_Setter_DOMString(mthis, value) native "HTMLAreaElement_shape_Setter"; + static shape_Setter(mthis, value) native "HTMLAreaElement_shape_Setter"; static target_Getter(mthis) native "HTMLAreaElement_target_Getter"; - static target_Setter_DOMString(mthis, value) native "HTMLAreaElement_target_Setter"; + static target_Setter(mthis, value) native "HTMLAreaElement_target_Setter"; static hash_Getter(mthis) native "HTMLAreaElement_hash_Getter"; - static hash_Setter_DOMString(mthis, value) native "HTMLAreaElement_hash_Setter"; + static hash_Setter(mthis, value) native "HTMLAreaElement_hash_Setter"; static host_Getter(mthis) native "HTMLAreaElement_host_Getter"; - static host_Setter_DOMString(mthis, value) native "HTMLAreaElement_host_Setter"; + static host_Setter(mthis, value) native "HTMLAreaElement_host_Setter"; static hostname_Getter(mthis) native "HTMLAreaElement_hostname_Getter"; - static hostname_Setter_DOMString(mthis, value) native "HTMLAreaElement_hostname_Setter"; + static hostname_Setter(mthis, value) native "HTMLAreaElement_hostname_Setter"; static href_Getter(mthis) native "HTMLAreaElement_href_Getter"; - static href_Setter_DOMString(mthis, value) native "HTMLAreaElement_href_Setter"; + static href_Setter(mthis, value) native "HTMLAreaElement_href_Setter"; static origin_Getter(mthis) native "HTMLAreaElement_origin_Getter"; static password_Getter(mthis) native "HTMLAreaElement_password_Getter"; - static password_Setter_DOMString(mthis, value) native "HTMLAreaElement_password_Setter"; + static password_Setter(mthis, value) native "HTMLAreaElement_password_Setter"; static pathname_Getter(mthis) native "HTMLAreaElement_pathname_Getter"; - static pathname_Setter_DOMString(mthis, value) native "HTMLAreaElement_pathname_Setter"; + static pathname_Setter(mthis, value) native "HTMLAreaElement_pathname_Setter"; static port_Getter(mthis) native "HTMLAreaElement_port_Getter"; - static port_Setter_DOMString(mthis, value) native "HTMLAreaElement_port_Setter"; + static port_Setter(mthis, value) native "HTMLAreaElement_port_Setter"; static protocol_Getter(mthis) native "HTMLAreaElement_protocol_Getter"; - static protocol_Setter_DOMString(mthis, value) native "HTMLAreaElement_protocol_Setter"; + static protocol_Setter(mthis, value) native "HTMLAreaElement_protocol_Setter"; static search_Getter(mthis) native "HTMLAreaElement_search_Getter"; - static search_Setter_DOMString(mthis, value) native "HTMLAreaElement_search_Setter"; + static search_Setter(mthis, value) native "HTMLAreaElement_search_Setter"; static username_Getter(mthis) native "HTMLAreaElement_username_Getter"; - static username_Setter_DOMString(mthis, value) native "HTMLAreaElement_username_Setter"; + static username_Setter(mthis, value) native "HTMLAreaElement_username_Setter"; static toString_Callback(mthis) native "HTMLAreaElement_toString_Callback"; } @@ -2617,35 +2663,35 @@ class BlinkHTMLMediaElement { static autoplay_Getter(mthis) native "HTMLMediaElement_autoplay_Getter"; - static autoplay_Setter_boolean(mthis, value) native "HTMLMediaElement_autoplay_Setter"; + static autoplay_Setter(mthis, value) native "HTMLMediaElement_autoplay_Setter"; static buffered_Getter(mthis) native "HTMLMediaElement_buffered_Getter"; static controller_Getter(mthis) native "HTMLMediaElement_controller_Getter"; - static controller_Setter_MediaController(mthis, value) native "HTMLMediaElement_controller_Setter"; + static controller_Setter(mthis, value) native "HTMLMediaElement_controller_Setter"; static controls_Getter(mthis) native "HTMLMediaElement_controls_Getter"; - static controls_Setter_boolean(mthis, value) native "HTMLMediaElement_controls_Setter"; + static controls_Setter(mthis, value) native "HTMLMediaElement_controls_Setter"; static crossOrigin_Getter(mthis) native "HTMLMediaElement_crossOrigin_Getter"; - static crossOrigin_Setter_DOMString(mthis, value) native "HTMLMediaElement_crossOrigin_Setter"; + static crossOrigin_Setter(mthis, value) native "HTMLMediaElement_crossOrigin_Setter"; static currentSrc_Getter(mthis) native "HTMLMediaElement_currentSrc_Getter"; static currentTime_Getter(mthis) native "HTMLMediaElement_currentTime_Getter"; - static currentTime_Setter_double(mthis, value) native "HTMLMediaElement_currentTime_Setter"; + static currentTime_Setter(mthis, value) native "HTMLMediaElement_currentTime_Setter"; static defaultMuted_Getter(mthis) native "HTMLMediaElement_defaultMuted_Getter"; - static defaultMuted_Setter_boolean(mthis, value) native "HTMLMediaElement_defaultMuted_Setter"; + static defaultMuted_Setter(mthis, value) native "HTMLMediaElement_defaultMuted_Setter"; static defaultPlaybackRate_Getter(mthis) native "HTMLMediaElement_defaultPlaybackRate_Getter"; - static defaultPlaybackRate_Setter_double(mthis, value) native "HTMLMediaElement_defaultPlaybackRate_Setter"; + static defaultPlaybackRate_Setter(mthis, value) native "HTMLMediaElement_defaultPlaybackRate_Setter"; static duration_Getter(mthis) native "HTMLMediaElement_duration_Getter"; @@ -2655,21 +2701,21 @@ class BlinkHTMLMediaElement { static integrity_Getter(mthis) native "HTMLMediaElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLMediaElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLMediaElement_integrity_Setter"; static loop_Getter(mthis) native "HTMLMediaElement_loop_Getter"; - static loop_Setter_boolean(mthis, value) native "HTMLMediaElement_loop_Setter"; + static loop_Setter(mthis, value) native "HTMLMediaElement_loop_Setter"; static mediaGroup_Getter(mthis) native "HTMLMediaElement_mediaGroup_Getter"; - static mediaGroup_Setter_DOMString(mthis, value) native "HTMLMediaElement_mediaGroup_Setter"; + static mediaGroup_Setter(mthis, value) native "HTMLMediaElement_mediaGroup_Setter"; static mediaKeys_Getter(mthis) native "HTMLMediaElement_mediaKeys_Getter"; static muted_Getter(mthis) native "HTMLMediaElement_muted_Getter"; - static muted_Setter_boolean(mthis, value) native "HTMLMediaElement_muted_Setter"; + static muted_Setter(mthis, value) native "HTMLMediaElement_muted_Setter"; static networkState_Getter(mthis) native "HTMLMediaElement_networkState_Getter"; @@ -2677,13 +2723,13 @@ class BlinkHTMLMediaElement { static playbackRate_Getter(mthis) native "HTMLMediaElement_playbackRate_Getter"; - static playbackRate_Setter_double(mthis, value) native "HTMLMediaElement_playbackRate_Setter"; + static playbackRate_Setter(mthis, value) native "HTMLMediaElement_playbackRate_Setter"; static played_Getter(mthis) native "HTMLMediaElement_played_Getter"; static preload_Getter(mthis) native "HTMLMediaElement_preload_Getter"; - static preload_Setter_DOMString(mthis, value) native "HTMLMediaElement_preload_Setter"; + static preload_Setter(mthis, value) native "HTMLMediaElement_preload_Setter"; static readyState_Getter(mthis) native "HTMLMediaElement_readyState_Getter"; @@ -2693,7 +2739,7 @@ class BlinkHTMLMediaElement { static src_Getter(mthis) native "HTMLMediaElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLMediaElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLMediaElement_src_Setter"; static textTracks_Getter(mthis) native "HTMLMediaElement_textTracks_Getter"; @@ -2701,19 +2747,21 @@ class BlinkHTMLMediaElement { static volume_Getter(mthis) native "HTMLMediaElement_volume_Getter"; - static volume_Setter_double(mthis, value) native "HTMLMediaElement_volume_Setter"; + static volume_Setter(mthis, value) native "HTMLMediaElement_volume_Setter"; static webkitAudioDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitAudioDecodedByteCount_Getter"; static webkitVideoDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitVideoDecodedByteCount_Getter"; - static addTextTrack_Callback_DOMString_DOMString_DOMString(mthis, kind, label, language) native "HTMLMediaElement_addTextTrack_Callback_DOMString_DOMString_DOMString"; + static addTextTrack_Callback_3(mthis, kind, label, language) native "HTMLMediaElement_addTextTrack_Callback"; + + static addTextTrack_Callback_2(mthis, kind, label) native "HTMLMediaElement_addTextTrack_Callback"; - static addTextTrack_Callback_DOMString_DOMString(mthis, kind, label) native "HTMLMediaElement_addTextTrack_Callback_DOMString_DOMString"; + static addTextTrack_Callback_1(mthis, kind) native "HTMLMediaElement_addTextTrack_Callback"; - static addTextTrack_Callback_DOMString(mthis, kind) native "HTMLMediaElement_addTextTrack_Callback_DOMString"; + static canPlayType_Callback_2(mthis, type, keySystem) native "HTMLMediaElement_canPlayType_Callback"; - static canPlayType_Callback_DOMString_DOMString(mthis, type, keySystem) native "HTMLMediaElement_canPlayType_Callback_DOMString_DOMString"; + static canPlayType_Callback_1(mthis, type) native "HTMLMediaElement_canPlayType_Callback"; static load_Callback(mthis) native "HTMLMediaElement_load_Callback"; @@ -2721,21 +2769,21 @@ class BlinkHTMLMediaElement { static play_Callback(mthis) native "HTMLMediaElement_play_Callback"; - static setMediaKeys_Callback_MediaKeys(mthis, mediaKeys) native "HTMLMediaElement_setMediaKeys_Callback_MediaKeys"; + static setMediaKeys_Callback_1(mthis, mediaKeys) native "HTMLMediaElement_setMediaKeys_Callback"; - static webkitAddKey_Callback_DOMString_Uint8Array_Uint8Array_DOMString(mthis, keySystem, key, initData, sessionId) native "HTMLMediaElement_webkitAddKey_Callback_DOMString_Uint8Array_Uint8Array_DOMString"; + static webkitAddKey_Callback_4(mthis, keySystem, key, initData, sessionId) native "HTMLMediaElement_webkitAddKey_Callback"; - static webkitAddKey_Callback_DOMString_Uint8Array(mthis, keySystem, key) native "HTMLMediaElement_webkitAddKey_Callback_DOMString_Uint8Array"; + static webkitAddKey_Callback_2(mthis, keySystem, key) native "HTMLMediaElement_webkitAddKey_Callback"; - static webkitCancelKeyRequest_Callback_DOMString_DOMString(mthis, keySystem, sessionId) native "HTMLMediaElement_webkitCancelKeyRequest_Callback_DOMString_DOMString"; + static webkitCancelKeyRequest_Callback_2(mthis, keySystem, sessionId) native "HTMLMediaElement_webkitCancelKeyRequest_Callback"; - static webkitGenerateKeyRequest_Callback_DOMString_Uint8Array(mthis, keySystem, initData) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback_DOMString_Uint8Array"; + static webkitGenerateKeyRequest_Callback_2(mthis, keySystem, initData) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback"; - static webkitGenerateKeyRequest_Callback_DOMString(mthis, keySystem) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback_DOMString"; + static webkitGenerateKeyRequest_Callback_1(mthis, keySystem) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback"; } class BlinkHTMLAudioElement { - static constructorCallback_DOMString(src) native "HTMLAudioElement_constructorCallback_DOMString"; + static constructorCallback_1(src) native "HTMLAudioElement_constructorCallback"; } class BlinkHTMLBRElement {} @@ -2743,11 +2791,11 @@ class BlinkHTMLBRElement {} class BlinkHTMLBaseElement { static href_Getter(mthis) native "HTMLBaseElement_href_Getter"; - static href_Setter_DOMString(mthis, value) native "HTMLBaseElement_href_Setter"; + static href_Setter(mthis, value) native "HTMLBaseElement_href_Setter"; static target_Getter(mthis) native "HTMLBaseElement_target_Getter"; - static target_Setter_DOMString(mthis, value) native "HTMLBaseElement_target_Setter"; + static target_Setter(mthis, value) native "HTMLBaseElement_target_Setter"; } class BlinkWindowEventHandlers {} @@ -2757,43 +2805,43 @@ class BlinkHTMLBodyElement {} class BlinkHTMLButtonElement { static autofocus_Getter(mthis) native "HTMLButtonElement_autofocus_Getter"; - static autofocus_Setter_boolean(mthis, value) native "HTMLButtonElement_autofocus_Setter"; + static autofocus_Setter(mthis, value) native "HTMLButtonElement_autofocus_Setter"; static disabled_Getter(mthis) native "HTMLButtonElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLButtonElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLButtonElement_disabled_Setter"; static form_Getter(mthis) native "HTMLButtonElement_form_Getter"; static formAction_Getter(mthis) native "HTMLButtonElement_formAction_Getter"; - static formAction_Setter_DOMString(mthis, value) native "HTMLButtonElement_formAction_Setter"; + static formAction_Setter(mthis, value) native "HTMLButtonElement_formAction_Setter"; static formEnctype_Getter(mthis) native "HTMLButtonElement_formEnctype_Getter"; - static formEnctype_Setter_DOMString(mthis, value) native "HTMLButtonElement_formEnctype_Setter"; + static formEnctype_Setter(mthis, value) native "HTMLButtonElement_formEnctype_Setter"; static formMethod_Getter(mthis) native "HTMLButtonElement_formMethod_Getter"; - static formMethod_Setter_DOMString(mthis, value) native "HTMLButtonElement_formMethod_Setter"; + static formMethod_Setter(mthis, value) native "HTMLButtonElement_formMethod_Setter"; static formNoValidate_Getter(mthis) native "HTMLButtonElement_formNoValidate_Getter"; - static formNoValidate_Setter_boolean(mthis, value) native "HTMLButtonElement_formNoValidate_Setter"; + static formNoValidate_Setter(mthis, value) native "HTMLButtonElement_formNoValidate_Setter"; static formTarget_Getter(mthis) native "HTMLButtonElement_formTarget_Getter"; - static formTarget_Setter_DOMString(mthis, value) native "HTMLButtonElement_formTarget_Setter"; + static formTarget_Setter(mthis, value) native "HTMLButtonElement_formTarget_Setter"; static labels_Getter(mthis) native "HTMLButtonElement_labels_Getter"; static name_Getter(mthis) native "HTMLButtonElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLButtonElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLButtonElement_name_Setter"; static type_Getter(mthis) native "HTMLButtonElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLButtonElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLButtonElement_type_Setter"; static validationMessage_Getter(mthis) native "HTMLButtonElement_validationMessage_Getter"; @@ -2801,41 +2849,41 @@ class BlinkHTMLButtonElement { static value_Getter(mthis) native "HTMLButtonElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLButtonElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLButtonElement_value_Setter"; static willValidate_Getter(mthis) native "HTMLButtonElement_willValidate_Getter"; static checkValidity_Callback(mthis) native "HTMLButtonElement_checkValidity_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLButtonElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLButtonElement_setCustomValidity_Callback"; } class BlinkHTMLCanvasElement { static height_Getter(mthis) native "HTMLCanvasElement_height_Getter"; - static height_Setter_long(mthis, value) native "HTMLCanvasElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLCanvasElement_height_Setter"; static width_Getter(mthis) native "HTMLCanvasElement_width_Getter"; - static width_Setter_long(mthis, value) native "HTMLCanvasElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLCanvasElement_width_Setter"; - static getContext_Callback_DOMString_Dictionary(mthis, contextId, attrs) native "HTMLCanvasElement_getContext_Callback"; + static getContext_Callback_2(mthis, contextId, attrs) native "HTMLCanvasElement_getContext_Callback"; - static toDataURL_Callback_DOMString_float(mthis, type, quality) native "HTMLCanvasElement_toDataURL_Callback"; + static toDataURL_Callback_2(mthis, type, quality) native "HTMLCanvasElement_toDataURL_Callback"; } class BlinkHTMLCollection { static length_Getter(mthis) native "HTMLCollection_length_Getter"; - static item_Callback_ul(mthis, index) native "HTMLCollection_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "HTMLCollection_item_Callback"; - static namedItem_Callback_DOMString(mthis, name) native "HTMLCollection_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "HTMLCollection_namedItem_Callback"; } class BlinkHTMLContentElement { static select_Getter(mthis) native "HTMLContentElement_select_Getter"; - static select_Setter_DOMString(mthis, value) native "HTMLContentElement_select_Setter"; + static select_Setter(mthis, value) native "HTMLContentElement_select_Setter"; static getDistributedNodes_Callback(mthis) native "HTMLContentElement_getDistributedNodes_Callback"; } @@ -2849,19 +2897,19 @@ class BlinkHTMLDataListElement { class BlinkHTMLDetailsElement { static open_Getter(mthis) native "HTMLDetailsElement_open_Getter"; - static open_Setter_boolean(mthis, value) native "HTMLDetailsElement_open_Setter"; + static open_Setter(mthis, value) native "HTMLDetailsElement_open_Setter"; } class BlinkHTMLDialogElement { static open_Getter(mthis) native "HTMLDialogElement_open_Getter"; - static open_Setter_boolean(mthis, value) native "HTMLDialogElement_open_Setter"; + static open_Setter(mthis, value) native "HTMLDialogElement_open_Setter"; static returnValue_Getter(mthis) native "HTMLDialogElement_returnValue_Getter"; - static returnValue_Setter_DOMString(mthis, value) native "HTMLDialogElement_returnValue_Setter"; + static returnValue_Setter(mthis, value) native "HTMLDialogElement_returnValue_Setter"; - static close_Callback_DOMString(mthis, returnValue) native "HTMLDialogElement_close_Callback_DOMString"; + static close_Callback_1(mthis, returnValue) native "HTMLDialogElement_close_Callback"; static show_Callback(mthis) native "HTMLDialogElement_show_Callback"; @@ -2877,37 +2925,37 @@ class BlinkHTMLDocument {} class BlinkHTMLEmbedElement { static height_Getter(mthis) native "HTMLEmbedElement_height_Getter"; - static height_Setter_DOMString(mthis, value) native "HTMLEmbedElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLEmbedElement_height_Setter"; static integrity_Getter(mthis) native "HTMLEmbedElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLEmbedElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLEmbedElement_integrity_Setter"; static name_Getter(mthis) native "HTMLEmbedElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLEmbedElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLEmbedElement_name_Setter"; static src_Getter(mthis) native "HTMLEmbedElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLEmbedElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLEmbedElement_src_Setter"; static type_Getter(mthis) native "HTMLEmbedElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLEmbedElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLEmbedElement_type_Setter"; static width_Getter(mthis) native "HTMLEmbedElement_width_Getter"; - static width_Setter_DOMString(mthis, value) native "HTMLEmbedElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLEmbedElement_width_Setter"; - static $__getter___Callback_ul(mthis, index_OR_name) native "HTMLEmbedElement___getter___Callback"; + static $__getter___Callback_1(mthis, index_OR_name) native "HTMLEmbedElement___getter___Callback"; - static $__setter___Callback_ul_Node(mthis, index_OR_name, value) native "HTMLEmbedElement___setter___Callback"; + static $__setter___Callback_2(mthis, index_OR_name, value) native "HTMLEmbedElement___setter___Callback"; } class BlinkHTMLFieldSetElement { static disabled_Getter(mthis) native "HTMLFieldSetElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLFieldSetElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLFieldSetElement_disabled_Setter"; static elements_Getter(mthis) native "HTMLFieldSetElement_elements_Getter"; @@ -2915,7 +2963,7 @@ class BlinkHTMLFieldSetElement { static name_Getter(mthis) native "HTMLFieldSetElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLFieldSetElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLFieldSetElement_name_Setter"; static type_Getter(mthis) native "HTMLFieldSetElement_type_Getter"; @@ -2927,61 +2975,59 @@ class BlinkHTMLFieldSetElement { static checkValidity_Callback(mthis) native "HTMLFieldSetElement_checkValidity_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLFieldSetElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLFieldSetElement_setCustomValidity_Callback"; } class BlinkHTMLFontElement {} class BlinkHTMLFormControlsCollection { - static namedItem_Callback_DOMString(mthis, name) native "HTMLFormControlsCollection_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "HTMLFormControlsCollection_namedItem_Callback"; } class BlinkHTMLFormElement { static acceptCharset_Getter(mthis) native "HTMLFormElement_acceptCharset_Getter"; - static acceptCharset_Setter_DOMString(mthis, value) native "HTMLFormElement_acceptCharset_Setter"; + static acceptCharset_Setter(mthis, value) native "HTMLFormElement_acceptCharset_Setter"; static action_Getter(mthis) native "HTMLFormElement_action_Getter"; - static action_Setter_DOMString(mthis, value) native "HTMLFormElement_action_Setter"; + static action_Setter(mthis, value) native "HTMLFormElement_action_Setter"; static autocomplete_Getter(mthis) native "HTMLFormElement_autocomplete_Getter"; - static autocomplete_Setter_DOMString(mthis, value) native "HTMLFormElement_autocomplete_Setter"; + static autocomplete_Setter(mthis, value) native "HTMLFormElement_autocomplete_Setter"; static encoding_Getter(mthis) native "HTMLFormElement_encoding_Getter"; - static encoding_Setter_DOMString(mthis, value) native "HTMLFormElement_encoding_Setter"; + static encoding_Setter(mthis, value) native "HTMLFormElement_encoding_Setter"; static enctype_Getter(mthis) native "HTMLFormElement_enctype_Getter"; - static enctype_Setter_DOMString(mthis, value) native "HTMLFormElement_enctype_Setter"; + static enctype_Setter(mthis, value) native "HTMLFormElement_enctype_Setter"; static length_Getter(mthis) native "HTMLFormElement_length_Getter"; static method_Getter(mthis) native "HTMLFormElement_method_Getter"; - static method_Setter_DOMString(mthis, value) native "HTMLFormElement_method_Setter"; + static method_Setter(mthis, value) native "HTMLFormElement_method_Setter"; static name_Getter(mthis) native "HTMLFormElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLFormElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLFormElement_name_Setter"; static noValidate_Getter(mthis) native "HTMLFormElement_noValidate_Getter"; - static noValidate_Setter_boolean(mthis, value) native "HTMLFormElement_noValidate_Setter"; + static noValidate_Setter(mthis, value) native "HTMLFormElement_noValidate_Setter"; static target_Getter(mthis) native "HTMLFormElement_target_Getter"; - static target_Setter_DOMString(mthis, value) native "HTMLFormElement_target_Setter"; + static target_Setter(mthis, value) native "HTMLFormElement_target_Setter"; - static $__getter___Callback_ul(mthis, index_OR_name) native "HTMLFormElement___getter___Callback_unsigned long"; - - static $__getter___Callback_DOMString(mthis, index_OR_name) native "HTMLFormElement___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, index_OR_name) native "HTMLFormElement___getter___Callback"; static checkValidity_Callback(mthis) native "HTMLFormElement_checkValidity_Callback"; - static requestAutocomplete_Callback_Dictionary(mthis, details) native "HTMLFormElement_requestAutocomplete_Callback_Dictionary"; + static requestAutocomplete_Callback_1(mthis, details) native "HTMLFormElement_requestAutocomplete_Callback"; static reset_Callback(mthis) native "HTMLFormElement_reset_Callback"; @@ -2995,7 +3041,7 @@ class BlinkHTMLFrameSetElement {} class BlinkHTMLHRElement { static color_Getter(mthis) native "HTMLHRElement_color_Getter"; - static color_Setter_DOMString(mthis, value) native "HTMLHRElement_color_Setter"; + static color_Setter(mthis, value) native "HTMLHRElement_color_Setter"; } class BlinkHTMLHeadElement {} @@ -3007,63 +3053,63 @@ class BlinkHTMLHtmlElement {} class BlinkHTMLIFrameElement { static allowFullscreen_Getter(mthis) native "HTMLIFrameElement_allowFullscreen_Getter"; - static allowFullscreen_Setter_boolean(mthis, value) native "HTMLIFrameElement_allowFullscreen_Setter"; + static allowFullscreen_Setter(mthis, value) native "HTMLIFrameElement_allowFullscreen_Setter"; static contentWindow_Getter(mthis) native "HTMLIFrameElement_contentWindow_Getter"; static height_Getter(mthis) native "HTMLIFrameElement_height_Getter"; - static height_Setter_DOMString(mthis, value) native "HTMLIFrameElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLIFrameElement_height_Setter"; static integrity_Getter(mthis) native "HTMLIFrameElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLIFrameElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLIFrameElement_integrity_Setter"; static name_Getter(mthis) native "HTMLIFrameElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLIFrameElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLIFrameElement_name_Setter"; static sandbox_Getter(mthis) native "HTMLIFrameElement_sandbox_Getter"; - static sandbox_Setter_DOMString(mthis, value) native "HTMLIFrameElement_sandbox_Setter"; + static sandbox_Setter(mthis, value) native "HTMLIFrameElement_sandbox_Setter"; static src_Getter(mthis) native "HTMLIFrameElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLIFrameElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLIFrameElement_src_Setter"; static srcdoc_Getter(mthis) native "HTMLIFrameElement_srcdoc_Getter"; - static srcdoc_Setter_DOMString(mthis, value) native "HTMLIFrameElement_srcdoc_Setter"; + static srcdoc_Setter(mthis, value) native "HTMLIFrameElement_srcdoc_Setter"; static width_Getter(mthis) native "HTMLIFrameElement_width_Getter"; - static width_Setter_DOMString(mthis, value) native "HTMLIFrameElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLIFrameElement_width_Setter"; } class BlinkHTMLImageElement { static alt_Getter(mthis) native "HTMLImageElement_alt_Getter"; - static alt_Setter_DOMString(mthis, value) native "HTMLImageElement_alt_Setter"; + static alt_Setter(mthis, value) native "HTMLImageElement_alt_Setter"; static complete_Getter(mthis) native "HTMLImageElement_complete_Getter"; static crossOrigin_Getter(mthis) native "HTMLImageElement_crossOrigin_Getter"; - static crossOrigin_Setter_DOMString(mthis, value) native "HTMLImageElement_crossOrigin_Setter"; + static crossOrigin_Setter(mthis, value) native "HTMLImageElement_crossOrigin_Setter"; static currentSrc_Getter(mthis) native "HTMLImageElement_currentSrc_Getter"; static height_Getter(mthis) native "HTMLImageElement_height_Getter"; - static height_Setter_long(mthis, value) native "HTMLImageElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLImageElement_height_Setter"; static integrity_Getter(mthis) native "HTMLImageElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLImageElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLImageElement_integrity_Setter"; static isMap_Getter(mthis) native "HTMLImageElement_isMap_Getter"; - static isMap_Setter_boolean(mthis, value) native "HTMLImageElement_isMap_Setter"; + static isMap_Setter(mthis, value) native "HTMLImageElement_isMap_Setter"; static naturalHeight_Getter(mthis) native "HTMLImageElement_naturalHeight_Getter"; @@ -3071,107 +3117,107 @@ class BlinkHTMLImageElement { static sizes_Getter(mthis) native "HTMLImageElement_sizes_Getter"; - static sizes_Setter_DOMString(mthis, value) native "HTMLImageElement_sizes_Setter"; + static sizes_Setter(mthis, value) native "HTMLImageElement_sizes_Setter"; static src_Getter(mthis) native "HTMLImageElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLImageElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLImageElement_src_Setter"; static srcset_Getter(mthis) native "HTMLImageElement_srcset_Getter"; - static srcset_Setter_DOMString(mthis, value) native "HTMLImageElement_srcset_Setter"; + static srcset_Setter(mthis, value) native "HTMLImageElement_srcset_Setter"; static useMap_Getter(mthis) native "HTMLImageElement_useMap_Getter"; - static useMap_Setter_DOMString(mthis, value) native "HTMLImageElement_useMap_Setter"; + static useMap_Setter(mthis, value) native "HTMLImageElement_useMap_Setter"; static width_Getter(mthis) native "HTMLImageElement_width_Getter"; - static width_Setter_long(mthis, value) native "HTMLImageElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLImageElement_width_Setter"; } class BlinkHTMLInputElement { static accept_Getter(mthis) native "HTMLInputElement_accept_Getter"; - static accept_Setter_DOMString(mthis, value) native "HTMLInputElement_accept_Setter"; + static accept_Setter(mthis, value) native "HTMLInputElement_accept_Setter"; static alt_Getter(mthis) native "HTMLInputElement_alt_Getter"; - static alt_Setter_DOMString(mthis, value) native "HTMLInputElement_alt_Setter"; + static alt_Setter(mthis, value) native "HTMLInputElement_alt_Setter"; static autocomplete_Getter(mthis) native "HTMLInputElement_autocomplete_Getter"; - static autocomplete_Setter_DOMString(mthis, value) native "HTMLInputElement_autocomplete_Setter"; + static autocomplete_Setter(mthis, value) native "HTMLInputElement_autocomplete_Setter"; static autofocus_Getter(mthis) native "HTMLInputElement_autofocus_Getter"; - static autofocus_Setter_boolean(mthis, value) native "HTMLInputElement_autofocus_Setter"; + static autofocus_Setter(mthis, value) native "HTMLInputElement_autofocus_Setter"; static capture_Getter(mthis) native "HTMLInputElement_capture_Getter"; - static capture_Setter_boolean(mthis, value) native "HTMLInputElement_capture_Setter"; + static capture_Setter(mthis, value) native "HTMLInputElement_capture_Setter"; static checked_Getter(mthis) native "HTMLInputElement_checked_Getter"; - static checked_Setter_boolean(mthis, value) native "HTMLInputElement_checked_Setter"; + static checked_Setter(mthis, value) native "HTMLInputElement_checked_Setter"; static defaultChecked_Getter(mthis) native "HTMLInputElement_defaultChecked_Getter"; - static defaultChecked_Setter_boolean(mthis, value) native "HTMLInputElement_defaultChecked_Setter"; + static defaultChecked_Setter(mthis, value) native "HTMLInputElement_defaultChecked_Setter"; static defaultValue_Getter(mthis) native "HTMLInputElement_defaultValue_Getter"; - static defaultValue_Setter_DOMString(mthis, value) native "HTMLInputElement_defaultValue_Setter"; + static defaultValue_Setter(mthis, value) native "HTMLInputElement_defaultValue_Setter"; static dirName_Getter(mthis) native "HTMLInputElement_dirName_Getter"; - static dirName_Setter_DOMString(mthis, value) native "HTMLInputElement_dirName_Setter"; + static dirName_Setter(mthis, value) native "HTMLInputElement_dirName_Setter"; static disabled_Getter(mthis) native "HTMLInputElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLInputElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLInputElement_disabled_Setter"; static files_Getter(mthis) native "HTMLInputElement_files_Getter"; - static files_Setter_FileList(mthis, value) native "HTMLInputElement_files_Setter"; + static files_Setter(mthis, value) native "HTMLInputElement_files_Setter"; static form_Getter(mthis) native "HTMLInputElement_form_Getter"; static formAction_Getter(mthis) native "HTMLInputElement_formAction_Getter"; - static formAction_Setter_DOMString(mthis, value) native "HTMLInputElement_formAction_Setter"; + static formAction_Setter(mthis, value) native "HTMLInputElement_formAction_Setter"; static formEnctype_Getter(mthis) native "HTMLInputElement_formEnctype_Getter"; - static formEnctype_Setter_DOMString(mthis, value) native "HTMLInputElement_formEnctype_Setter"; + static formEnctype_Setter(mthis, value) native "HTMLInputElement_formEnctype_Setter"; static formMethod_Getter(mthis) native "HTMLInputElement_formMethod_Getter"; - static formMethod_Setter_DOMString(mthis, value) native "HTMLInputElement_formMethod_Setter"; + static formMethod_Setter(mthis, value) native "HTMLInputElement_formMethod_Setter"; static formNoValidate_Getter(mthis) native "HTMLInputElement_formNoValidate_Getter"; - static formNoValidate_Setter_boolean(mthis, value) native "HTMLInputElement_formNoValidate_Setter"; + static formNoValidate_Setter(mthis, value) native "HTMLInputElement_formNoValidate_Setter"; static formTarget_Getter(mthis) native "HTMLInputElement_formTarget_Getter"; - static formTarget_Setter_DOMString(mthis, value) native "HTMLInputElement_formTarget_Setter"; + static formTarget_Setter(mthis, value) native "HTMLInputElement_formTarget_Setter"; static height_Getter(mthis) native "HTMLInputElement_height_Getter"; - static height_Setter_ul(mthis, value) native "HTMLInputElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLInputElement_height_Setter"; static incremental_Getter(mthis) native "HTMLInputElement_incremental_Getter"; - static incremental_Setter_boolean(mthis, value) native "HTMLInputElement_incremental_Setter"; + static incremental_Setter(mthis, value) native "HTMLInputElement_incremental_Setter"; static indeterminate_Getter(mthis) native "HTMLInputElement_indeterminate_Getter"; - static indeterminate_Setter_boolean(mthis, value) native "HTMLInputElement_indeterminate_Setter"; + static indeterminate_Setter(mthis, value) native "HTMLInputElement_indeterminate_Setter"; static inputMode_Getter(mthis) native "HTMLInputElement_inputMode_Getter"; - static inputMode_Setter_DOMString(mthis, value) native "HTMLInputElement_inputMode_Setter"; + static inputMode_Setter(mthis, value) native "HTMLInputElement_inputMode_Setter"; static labels_Getter(mthis) native "HTMLInputElement_labels_Getter"; @@ -3179,67 +3225,67 @@ class BlinkHTMLInputElement { static max_Getter(mthis) native "HTMLInputElement_max_Getter"; - static max_Setter_DOMString(mthis, value) native "HTMLInputElement_max_Setter"; + static max_Setter(mthis, value) native "HTMLInputElement_max_Setter"; static maxLength_Getter(mthis) native "HTMLInputElement_maxLength_Getter"; - static maxLength_Setter_long(mthis, value) native "HTMLInputElement_maxLength_Setter"; + static maxLength_Setter(mthis, value) native "HTMLInputElement_maxLength_Setter"; static min_Getter(mthis) native "HTMLInputElement_min_Getter"; - static min_Setter_DOMString(mthis, value) native "HTMLInputElement_min_Setter"; + static min_Setter(mthis, value) native "HTMLInputElement_min_Setter"; static multiple_Getter(mthis) native "HTMLInputElement_multiple_Getter"; - static multiple_Setter_boolean(mthis, value) native "HTMLInputElement_multiple_Setter"; + static multiple_Setter(mthis, value) native "HTMLInputElement_multiple_Setter"; static name_Getter(mthis) native "HTMLInputElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLInputElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLInputElement_name_Setter"; static pattern_Getter(mthis) native "HTMLInputElement_pattern_Getter"; - static pattern_Setter_DOMString(mthis, value) native "HTMLInputElement_pattern_Setter"; + static pattern_Setter(mthis, value) native "HTMLInputElement_pattern_Setter"; static placeholder_Getter(mthis) native "HTMLInputElement_placeholder_Getter"; - static placeholder_Setter_DOMString(mthis, value) native "HTMLInputElement_placeholder_Setter"; + static placeholder_Setter(mthis, value) native "HTMLInputElement_placeholder_Setter"; static readOnly_Getter(mthis) native "HTMLInputElement_readOnly_Getter"; - static readOnly_Setter_boolean(mthis, value) native "HTMLInputElement_readOnly_Setter"; + static readOnly_Setter(mthis, value) native "HTMLInputElement_readOnly_Setter"; static required_Getter(mthis) native "HTMLInputElement_required_Getter"; - static required_Setter_boolean(mthis, value) native "HTMLInputElement_required_Setter"; + static required_Setter(mthis, value) native "HTMLInputElement_required_Setter"; static selectionDirection_Getter(mthis) native "HTMLInputElement_selectionDirection_Getter"; - static selectionDirection_Setter_DOMString(mthis, value) native "HTMLInputElement_selectionDirection_Setter"; + static selectionDirection_Setter(mthis, value) native "HTMLInputElement_selectionDirection_Setter"; static selectionEnd_Getter(mthis) native "HTMLInputElement_selectionEnd_Getter"; - static selectionEnd_Setter_long(mthis, value) native "HTMLInputElement_selectionEnd_Setter"; + static selectionEnd_Setter(mthis, value) native "HTMLInputElement_selectionEnd_Setter"; static selectionStart_Getter(mthis) native "HTMLInputElement_selectionStart_Getter"; - static selectionStart_Setter_long(mthis, value) native "HTMLInputElement_selectionStart_Setter"; + static selectionStart_Setter(mthis, value) native "HTMLInputElement_selectionStart_Setter"; static size_Getter(mthis) native "HTMLInputElement_size_Getter"; - static size_Setter_ul(mthis, value) native "HTMLInputElement_size_Setter"; + static size_Setter(mthis, value) native "HTMLInputElement_size_Setter"; static src_Getter(mthis) native "HTMLInputElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLInputElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLInputElement_src_Setter"; static step_Getter(mthis) native "HTMLInputElement_step_Getter"; - static step_Setter_DOMString(mthis, value) native "HTMLInputElement_step_Setter"; + static step_Setter(mthis, value) native "HTMLInputElement_step_Setter"; static type_Getter(mthis) native "HTMLInputElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLInputElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLInputElement_type_Setter"; static validationMessage_Getter(mthis) native "HTMLInputElement_validationMessage_Getter"; @@ -3247,25 +3293,25 @@ class BlinkHTMLInputElement { static value_Getter(mthis) native "HTMLInputElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLInputElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLInputElement_value_Setter"; static valueAsDate_Getter(mthis) native "HTMLInputElement_valueAsDate_Getter"; - static valueAsDate_Setter_Date(mthis, value) native "HTMLInputElement_valueAsDate_Setter"; + static valueAsDate_Setter(mthis, value) native "HTMLInputElement_valueAsDate_Setter"; static valueAsNumber_Getter(mthis) native "HTMLInputElement_valueAsNumber_Getter"; - static valueAsNumber_Setter_double(mthis, value) native "HTMLInputElement_valueAsNumber_Setter"; + static valueAsNumber_Setter(mthis, value) native "HTMLInputElement_valueAsNumber_Setter"; static webkitEntries_Getter(mthis) native "HTMLInputElement_webkitEntries_Getter"; static webkitdirectory_Getter(mthis) native "HTMLInputElement_webkitdirectory_Getter"; - static webkitdirectory_Setter_boolean(mthis, value) native "HTMLInputElement_webkitdirectory_Setter"; + static webkitdirectory_Setter(mthis, value) native "HTMLInputElement_webkitdirectory_Setter"; static width_Getter(mthis) native "HTMLInputElement_width_Getter"; - static width_Setter_ul(mthis, value) native "HTMLInputElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLInputElement_width_Setter"; static willValidate_Getter(mthis) native "HTMLInputElement_willValidate_Getter"; @@ -3273,21 +3319,21 @@ class BlinkHTMLInputElement { static select_Callback(mthis) native "HTMLInputElement_select_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLInputElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLInputElement_setCustomValidity_Callback"; - static setRangeText_Callback_DOMString(mthis, replacement) native "HTMLInputElement_setRangeText_Callback_DOMString"; + static setRangeText_Callback_1(mthis, replacement) native "HTMLInputElement_setRangeText_Callback"; - static setRangeText_Callback_DOMString_ul_ul_DOMString(mthis, replacement, start, end, selectionMode) native "HTMLInputElement_setRangeText_Callback_DOMString_unsigned long_unsigned long_DOMString"; + static setRangeText_Callback_4(mthis, replacement, start, end, selectionMode) native "HTMLInputElement_setRangeText_Callback"; - static setSelectionRange_Callback_long_long_DOMString(mthis, start, end, direction) native "HTMLInputElement_setSelectionRange_Callback_long_long_DOMString"; + static setSelectionRange_Callback_3(mthis, start, end, direction) native "HTMLInputElement_setSelectionRange_Callback"; - static setSelectionRange_Callback_long_long(mthis, start, end) native "HTMLInputElement_setSelectionRange_Callback_long_long"; + static setSelectionRange_Callback_2(mthis, start, end) native "HTMLInputElement_setSelectionRange_Callback"; - static stepDown_Callback_long(mthis, n) native "HTMLInputElement_stepDown_Callback_long"; + static stepDown_Callback_1(mthis, n) native "HTMLInputElement_stepDown_Callback"; static stepDown_Callback(mthis) native "HTMLInputElement_stepDown_Callback"; - static stepUp_Callback_long(mthis, n) native "HTMLInputElement_stepUp_Callback_long"; + static stepUp_Callback_1(mthis, n) native "HTMLInputElement_stepUp_Callback"; static stepUp_Callback(mthis) native "HTMLInputElement_stepUp_Callback"; } @@ -3295,27 +3341,27 @@ class BlinkHTMLInputElement { class BlinkHTMLKeygenElement { static autofocus_Getter(mthis) native "HTMLKeygenElement_autofocus_Getter"; - static autofocus_Setter_boolean(mthis, value) native "HTMLKeygenElement_autofocus_Setter"; + static autofocus_Setter(mthis, value) native "HTMLKeygenElement_autofocus_Setter"; static challenge_Getter(mthis) native "HTMLKeygenElement_challenge_Getter"; - static challenge_Setter_DOMString(mthis, value) native "HTMLKeygenElement_challenge_Setter"; + static challenge_Setter(mthis, value) native "HTMLKeygenElement_challenge_Setter"; static disabled_Getter(mthis) native "HTMLKeygenElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLKeygenElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLKeygenElement_disabled_Setter"; static form_Getter(mthis) native "HTMLKeygenElement_form_Getter"; static keytype_Getter(mthis) native "HTMLKeygenElement_keytype_Getter"; - static keytype_Setter_DOMString(mthis, value) native "HTMLKeygenElement_keytype_Setter"; + static keytype_Setter(mthis, value) native "HTMLKeygenElement_keytype_Setter"; static labels_Getter(mthis) native "HTMLKeygenElement_labels_Getter"; static name_Getter(mthis) native "HTMLKeygenElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLKeygenElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLKeygenElement_name_Setter"; static type_Getter(mthis) native "HTMLKeygenElement_type_Getter"; @@ -3327,13 +3373,13 @@ class BlinkHTMLKeygenElement { static checkValidity_Callback(mthis) native "HTMLKeygenElement_checkValidity_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLKeygenElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLKeygenElement_setCustomValidity_Callback"; } class BlinkHTMLLIElement { static value_Getter(mthis) native "HTMLLIElement_value_Getter"; - static value_Setter_long(mthis, value) native "HTMLLIElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLLIElement_value_Setter"; } class BlinkHTMLLabelElement { @@ -3343,7 +3389,7 @@ class BlinkHTMLLabelElement { static htmlFor_Getter(mthis) native "HTMLLabelElement_htmlFor_Getter"; - static htmlFor_Setter_DOMString(mthis, value) native "HTMLLabelElement_htmlFor_Setter"; + static htmlFor_Setter(mthis, value) native "HTMLLabelElement_htmlFor_Setter"; } class BlinkHTMLLegendElement { @@ -3353,33 +3399,33 @@ class BlinkHTMLLegendElement { class BlinkHTMLLinkElement { static crossOrigin_Getter(mthis) native "HTMLLinkElement_crossOrigin_Getter"; - static crossOrigin_Setter_DOMString(mthis, value) native "HTMLLinkElement_crossOrigin_Setter"; + static crossOrigin_Setter(mthis, value) native "HTMLLinkElement_crossOrigin_Setter"; static disabled_Getter(mthis) native "HTMLLinkElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLLinkElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLLinkElement_disabled_Setter"; static href_Getter(mthis) native "HTMLLinkElement_href_Getter"; - static href_Setter_DOMString(mthis, value) native "HTMLLinkElement_href_Setter"; + static href_Setter(mthis, value) native "HTMLLinkElement_href_Setter"; static hreflang_Getter(mthis) native "HTMLLinkElement_hreflang_Getter"; - static hreflang_Setter_DOMString(mthis, value) native "HTMLLinkElement_hreflang_Setter"; + static hreflang_Setter(mthis, value) native "HTMLLinkElement_hreflang_Setter"; static import_Getter(mthis) native "HTMLLinkElement_import_Getter"; static integrity_Getter(mthis) native "HTMLLinkElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLLinkElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLLinkElement_integrity_Setter"; static media_Getter(mthis) native "HTMLLinkElement_media_Getter"; - static media_Setter_DOMString(mthis, value) native "HTMLLinkElement_media_Setter"; + static media_Setter(mthis, value) native "HTMLLinkElement_media_Setter"; static rel_Getter(mthis) native "HTMLLinkElement_rel_Getter"; - static rel_Setter_DOMString(mthis, value) native "HTMLLinkElement_rel_Setter"; + static rel_Setter(mthis, value) native "HTMLLinkElement_rel_Setter"; static sheet_Getter(mthis) native "HTMLLinkElement_sheet_Getter"; @@ -3387,7 +3433,7 @@ class BlinkHTMLLinkElement { static type_Getter(mthis) native "HTMLLinkElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLLinkElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLLinkElement_type_Setter"; } class BlinkHTMLMapElement { @@ -3395,7 +3441,7 @@ class BlinkHTMLMapElement { static name_Getter(mthis) native "HTMLMapElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLMapElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLMapElement_name_Setter"; } class BlinkHTMLMarqueeElement {} @@ -3403,127 +3449,127 @@ class BlinkHTMLMarqueeElement {} class BlinkHTMLMenuElement { static label_Getter(mthis) native "HTMLMenuElement_label_Getter"; - static label_Setter_DOMString(mthis, value) native "HTMLMenuElement_label_Setter"; + static label_Setter(mthis, value) native "HTMLMenuElement_label_Setter"; static type_Getter(mthis) native "HTMLMenuElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLMenuElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLMenuElement_type_Setter"; } class BlinkHTMLMenuItemElement { static checked_Getter(mthis) native "HTMLMenuItemElement_checked_Getter"; - static checked_Setter_boolean(mthis, value) native "HTMLMenuItemElement_checked_Setter"; + static checked_Setter(mthis, value) native "HTMLMenuItemElement_checked_Setter"; static default_Getter(mthis) native "HTMLMenuItemElement_default_Getter"; - static default_Setter_boolean(mthis, value) native "HTMLMenuItemElement_default_Setter"; + static default_Setter(mthis, value) native "HTMLMenuItemElement_default_Setter"; static disabled_Getter(mthis) native "HTMLMenuItemElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLMenuItemElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLMenuItemElement_disabled_Setter"; static label_Getter(mthis) native "HTMLMenuItemElement_label_Getter"; - static label_Setter_DOMString(mthis, value) native "HTMLMenuItemElement_label_Setter"; + static label_Setter(mthis, value) native "HTMLMenuItemElement_label_Setter"; static type_Getter(mthis) native "HTMLMenuItemElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLMenuItemElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLMenuItemElement_type_Setter"; } class BlinkHTMLMetaElement { static content_Getter(mthis) native "HTMLMetaElement_content_Getter"; - static content_Setter_DOMString(mthis, value) native "HTMLMetaElement_content_Setter"; + static content_Setter(mthis, value) native "HTMLMetaElement_content_Setter"; static httpEquiv_Getter(mthis) native "HTMLMetaElement_httpEquiv_Getter"; - static httpEquiv_Setter_DOMString(mthis, value) native "HTMLMetaElement_httpEquiv_Setter"; + static httpEquiv_Setter(mthis, value) native "HTMLMetaElement_httpEquiv_Setter"; static name_Getter(mthis) native "HTMLMetaElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLMetaElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLMetaElement_name_Setter"; } class BlinkHTMLMeterElement { static high_Getter(mthis) native "HTMLMeterElement_high_Getter"; - static high_Setter_double(mthis, value) native "HTMLMeterElement_high_Setter"; + static high_Setter(mthis, value) native "HTMLMeterElement_high_Setter"; static labels_Getter(mthis) native "HTMLMeterElement_labels_Getter"; static low_Getter(mthis) native "HTMLMeterElement_low_Getter"; - static low_Setter_double(mthis, value) native "HTMLMeterElement_low_Setter"; + static low_Setter(mthis, value) native "HTMLMeterElement_low_Setter"; static max_Getter(mthis) native "HTMLMeterElement_max_Getter"; - static max_Setter_double(mthis, value) native "HTMLMeterElement_max_Setter"; + static max_Setter(mthis, value) native "HTMLMeterElement_max_Setter"; static min_Getter(mthis) native "HTMLMeterElement_min_Getter"; - static min_Setter_double(mthis, value) native "HTMLMeterElement_min_Setter"; + static min_Setter(mthis, value) native "HTMLMeterElement_min_Setter"; static optimum_Getter(mthis) native "HTMLMeterElement_optimum_Getter"; - static optimum_Setter_double(mthis, value) native "HTMLMeterElement_optimum_Setter"; + static optimum_Setter(mthis, value) native "HTMLMeterElement_optimum_Setter"; static value_Getter(mthis) native "HTMLMeterElement_value_Getter"; - static value_Setter_double(mthis, value) native "HTMLMeterElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLMeterElement_value_Setter"; } class BlinkHTMLModElement { static cite_Getter(mthis) native "HTMLModElement_cite_Getter"; - static cite_Setter_DOMString(mthis, value) native "HTMLModElement_cite_Setter"; + static cite_Setter(mthis, value) native "HTMLModElement_cite_Setter"; static dateTime_Getter(mthis) native "HTMLModElement_dateTime_Getter"; - static dateTime_Setter_DOMString(mthis, value) native "HTMLModElement_dateTime_Setter"; + static dateTime_Setter(mthis, value) native "HTMLModElement_dateTime_Setter"; } class BlinkHTMLOListElement { static reversed_Getter(mthis) native "HTMLOListElement_reversed_Getter"; - static reversed_Setter_boolean(mthis, value) native "HTMLOListElement_reversed_Setter"; + static reversed_Setter(mthis, value) native "HTMLOListElement_reversed_Setter"; static start_Getter(mthis) native "HTMLOListElement_start_Getter"; - static start_Setter_long(mthis, value) native "HTMLOListElement_start_Setter"; + static start_Setter(mthis, value) native "HTMLOListElement_start_Setter"; static type_Getter(mthis) native "HTMLOListElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLOListElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLOListElement_type_Setter"; } class BlinkHTMLObjectElement { static data_Getter(mthis) native "HTMLObjectElement_data_Getter"; - static data_Setter_DOMString(mthis, value) native "HTMLObjectElement_data_Setter"; + static data_Setter(mthis, value) native "HTMLObjectElement_data_Setter"; static form_Getter(mthis) native "HTMLObjectElement_form_Getter"; static height_Getter(mthis) native "HTMLObjectElement_height_Getter"; - static height_Setter_DOMString(mthis, value) native "HTMLObjectElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLObjectElement_height_Setter"; static integrity_Getter(mthis) native "HTMLObjectElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLObjectElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLObjectElement_integrity_Setter"; static name_Getter(mthis) native "HTMLObjectElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLObjectElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLObjectElement_name_Setter"; static type_Getter(mthis) native "HTMLObjectElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLObjectElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLObjectElement_type_Setter"; static useMap_Getter(mthis) native "HTMLObjectElement_useMap_Getter"; - static useMap_Setter_DOMString(mthis, value) native "HTMLObjectElement_useMap_Setter"; + static useMap_Setter(mthis, value) native "HTMLObjectElement_useMap_Setter"; static validationMessage_Getter(mthis) native "HTMLObjectElement_validationMessage_Getter"; @@ -3531,39 +3577,39 @@ class BlinkHTMLObjectElement { static width_Getter(mthis) native "HTMLObjectElement_width_Getter"; - static width_Setter_DOMString(mthis, value) native "HTMLObjectElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLObjectElement_width_Setter"; static willValidate_Getter(mthis) native "HTMLObjectElement_willValidate_Getter"; - static $__getter___Callback_ul(mthis, index_OR_name) native "HTMLObjectElement___getter___Callback"; + static $__getter___Callback_1(mthis, index_OR_name) native "HTMLObjectElement___getter___Callback"; - static $__setter___Callback_ul_Node(mthis, index_OR_name, value) native "HTMLObjectElement___setter___Callback"; + static $__setter___Callback_2(mthis, index_OR_name, value) native "HTMLObjectElement___setter___Callback"; static checkValidity_Callback(mthis) native "HTMLObjectElement_checkValidity_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLObjectElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLObjectElement_setCustomValidity_Callback"; } class BlinkHTMLOptGroupElement { static disabled_Getter(mthis) native "HTMLOptGroupElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLOptGroupElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLOptGroupElement_disabled_Setter"; static label_Getter(mthis) native "HTMLOptGroupElement_label_Getter"; - static label_Setter_DOMString(mthis, value) native "HTMLOptGroupElement_label_Setter"; + static label_Setter(mthis, value) native "HTMLOptGroupElement_label_Setter"; } class BlinkHTMLOptionElement { - static constructorCallback_DOMString_DOMString_boolean_boolean(data, value, defaultSelected, selected) native "HTMLOptionElement_constructorCallback_DOMString_DOMString_boolean_boolean"; + static constructorCallback_4(data, value, defaultSelected, selected) native "HTMLOptionElement_constructorCallback"; static defaultSelected_Getter(mthis) native "HTMLOptionElement_defaultSelected_Getter"; - static defaultSelected_Setter_boolean(mthis, value) native "HTMLOptionElement_defaultSelected_Setter"; + static defaultSelected_Setter(mthis, value) native "HTMLOptionElement_defaultSelected_Setter"; static disabled_Getter(mthis) native "HTMLOptionElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLOptionElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLOptionElement_disabled_Setter"; static form_Getter(mthis) native "HTMLOptionElement_form_Getter"; @@ -3571,15 +3617,15 @@ class BlinkHTMLOptionElement { static label_Getter(mthis) native "HTMLOptionElement_label_Getter"; - static label_Setter_DOMString(mthis, value) native "HTMLOptionElement_label_Setter"; + static label_Setter(mthis, value) native "HTMLOptionElement_label_Setter"; static selected_Getter(mthis) native "HTMLOptionElement_selected_Getter"; - static selected_Setter_boolean(mthis, value) native "HTMLOptionElement_selected_Setter"; + static selected_Setter(mthis, value) native "HTMLOptionElement_selected_Setter"; static value_Getter(mthis) native "HTMLOptionElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLOptionElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLOptionElement_value_Setter"; } class BlinkHTMLOptionsCollection {} @@ -3587,7 +3633,7 @@ class BlinkHTMLOptionsCollection {} class BlinkHTMLOutputElement { static defaultValue_Getter(mthis) native "HTMLOutputElement_defaultValue_Getter"; - static defaultValue_Setter_DOMString(mthis, value) native "HTMLOutputElement_defaultValue_Setter"; + static defaultValue_Setter(mthis, value) native "HTMLOutputElement_defaultValue_Setter"; static form_Getter(mthis) native "HTMLOutputElement_form_Getter"; @@ -3597,7 +3643,7 @@ class BlinkHTMLOutputElement { static name_Getter(mthis) native "HTMLOutputElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLOutputElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLOutputElement_name_Setter"; static type_Getter(mthis) native "HTMLOutputElement_type_Getter"; @@ -3607,13 +3653,13 @@ class BlinkHTMLOutputElement { static value_Getter(mthis) native "HTMLOutputElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLOutputElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLOutputElement_value_Setter"; static willValidate_Getter(mthis) native "HTMLOutputElement_willValidate_Getter"; static checkValidity_Callback(mthis) native "HTMLOutputElement_checkValidity_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLOutputElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLOutputElement_setCustomValidity_Callback"; } class BlinkHTMLParagraphElement {} @@ -3621,11 +3667,11 @@ class BlinkHTMLParagraphElement {} class BlinkHTMLParamElement { static name_Getter(mthis) native "HTMLParamElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLParamElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLParamElement_name_Setter"; static value_Getter(mthis) native "HTMLParamElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLParamElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLParamElement_value_Setter"; } class BlinkHTMLPictureElement {} @@ -3637,63 +3683,63 @@ class BlinkHTMLProgressElement { static max_Getter(mthis) native "HTMLProgressElement_max_Getter"; - static max_Setter_double(mthis, value) native "HTMLProgressElement_max_Setter"; + static max_Setter(mthis, value) native "HTMLProgressElement_max_Setter"; static position_Getter(mthis) native "HTMLProgressElement_position_Getter"; static value_Getter(mthis) native "HTMLProgressElement_value_Getter"; - static value_Setter_double(mthis, value) native "HTMLProgressElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLProgressElement_value_Setter"; } class BlinkHTMLQuoteElement { static cite_Getter(mthis) native "HTMLQuoteElement_cite_Getter"; - static cite_Setter_DOMString(mthis, value) native "HTMLQuoteElement_cite_Setter"; + static cite_Setter(mthis, value) native "HTMLQuoteElement_cite_Setter"; } class BlinkHTMLScriptElement { static async_Getter(mthis) native "HTMLScriptElement_async_Getter"; - static async_Setter_boolean(mthis, value) native "HTMLScriptElement_async_Setter"; + static async_Setter(mthis, value) native "HTMLScriptElement_async_Setter"; static charset_Getter(mthis) native "HTMLScriptElement_charset_Getter"; - static charset_Setter_DOMString(mthis, value) native "HTMLScriptElement_charset_Setter"; + static charset_Setter(mthis, value) native "HTMLScriptElement_charset_Setter"; static crossOrigin_Getter(mthis) native "HTMLScriptElement_crossOrigin_Getter"; - static crossOrigin_Setter_DOMString(mthis, value) native "HTMLScriptElement_crossOrigin_Setter"; + static crossOrigin_Setter(mthis, value) native "HTMLScriptElement_crossOrigin_Setter"; static defer_Getter(mthis) native "HTMLScriptElement_defer_Getter"; - static defer_Setter_boolean(mthis, value) native "HTMLScriptElement_defer_Setter"; + static defer_Setter(mthis, value) native "HTMLScriptElement_defer_Setter"; static integrity_Getter(mthis) native "HTMLScriptElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLScriptElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLScriptElement_integrity_Setter"; static nonce_Getter(mthis) native "HTMLScriptElement_nonce_Getter"; - static nonce_Setter_DOMString(mthis, value) native "HTMLScriptElement_nonce_Setter"; + static nonce_Setter(mthis, value) native "HTMLScriptElement_nonce_Setter"; static src_Getter(mthis) native "HTMLScriptElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLScriptElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLScriptElement_src_Setter"; static type_Getter(mthis) native "HTMLScriptElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLScriptElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLScriptElement_type_Setter"; } class BlinkHTMLSelectElement { static autofocus_Getter(mthis) native "HTMLSelectElement_autofocus_Getter"; - static autofocus_Setter_boolean(mthis, value) native "HTMLSelectElement_autofocus_Setter"; + static autofocus_Setter(mthis, value) native "HTMLSelectElement_autofocus_Setter"; static disabled_Getter(mthis) native "HTMLSelectElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLSelectElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLSelectElement_disabled_Setter"; static form_Getter(mthis) native "HTMLSelectElement_form_Getter"; @@ -3701,27 +3747,27 @@ class BlinkHTMLSelectElement { static length_Getter(mthis) native "HTMLSelectElement_length_Getter"; - static length_Setter_ul(mthis, value) native "HTMLSelectElement_length_Setter"; + static length_Setter(mthis, value) native "HTMLSelectElement_length_Setter"; static multiple_Getter(mthis) native "HTMLSelectElement_multiple_Getter"; - static multiple_Setter_boolean(mthis, value) native "HTMLSelectElement_multiple_Setter"; + static multiple_Setter(mthis, value) native "HTMLSelectElement_multiple_Setter"; static name_Getter(mthis) native "HTMLSelectElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLSelectElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLSelectElement_name_Setter"; static required_Getter(mthis) native "HTMLSelectElement_required_Getter"; - static required_Setter_boolean(mthis, value) native "HTMLSelectElement_required_Setter"; + static required_Setter(mthis, value) native "HTMLSelectElement_required_Setter"; static selectedIndex_Getter(mthis) native "HTMLSelectElement_selectedIndex_Getter"; - static selectedIndex_Setter_long(mthis, value) native "HTMLSelectElement_selectedIndex_Setter"; + static selectedIndex_Setter(mthis, value) native "HTMLSelectElement_selectedIndex_Setter"; static size_Getter(mthis) native "HTMLSelectElement_size_Getter"; - static size_Setter_long(mthis, value) native "HTMLSelectElement_size_Setter"; + static size_Setter(mthis, value) native "HTMLSelectElement_size_Setter"; static type_Getter(mthis) native "HTMLSelectElement_type_Getter"; @@ -3731,21 +3777,21 @@ class BlinkHTMLSelectElement { static value_Getter(mthis) native "HTMLSelectElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLSelectElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLSelectElement_value_Setter"; static willValidate_Getter(mthis) native "HTMLSelectElement_willValidate_Getter"; - static $__setter___Callback_ul_HTMLOptionElement(mthis, index, value) native "HTMLSelectElement___setter___Callback_unsigned long_HTMLOptionElement"; + static $__setter___Callback_2(mthis, index, value) native "HTMLSelectElement___setter___Callback"; - static add_Callback_HTMLElement_long(mthis, element, before) native "HTMLSelectElement_add_Callback_HTMLElement_long"; + static add_Callback_2(mthis, element, before) native "HTMLSelectElement_add_Callback"; static checkValidity_Callback(mthis) native "HTMLSelectElement_checkValidity_Callback"; - static item_Callback_ul(mthis, index) native "HTMLSelectElement_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "HTMLSelectElement_item_Callback"; - static namedItem_Callback_DOMString(mthis, name) native "HTMLSelectElement_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "HTMLSelectElement_namedItem_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLSelectElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLSelectElement_setCustomValidity_Callback"; } class BlinkHTMLShadowElement { @@ -3755,27 +3801,27 @@ class BlinkHTMLShadowElement { class BlinkHTMLSourceElement { static integrity_Getter(mthis) native "HTMLSourceElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLSourceElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLSourceElement_integrity_Setter"; static media_Getter(mthis) native "HTMLSourceElement_media_Getter"; - static media_Setter_DOMString(mthis, value) native "HTMLSourceElement_media_Setter"; + static media_Setter(mthis, value) native "HTMLSourceElement_media_Setter"; static sizes_Getter(mthis) native "HTMLSourceElement_sizes_Getter"; - static sizes_Setter_DOMString(mthis, value) native "HTMLSourceElement_sizes_Setter"; + static sizes_Setter(mthis, value) native "HTMLSourceElement_sizes_Setter"; static src_Getter(mthis) native "HTMLSourceElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLSourceElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLSourceElement_src_Setter"; static srcset_Getter(mthis) native "HTMLSourceElement_srcset_Getter"; - static srcset_Setter_DOMString(mthis, value) native "HTMLSourceElement_srcset_Setter"; + static srcset_Setter(mthis, value) native "HTMLSourceElement_srcset_Setter"; static type_Getter(mthis) native "HTMLSourceElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLSourceElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLSourceElement_type_Setter"; } class BlinkHTMLSpanElement {} @@ -3783,17 +3829,17 @@ class BlinkHTMLSpanElement {} class BlinkHTMLStyleElement { static disabled_Getter(mthis) native "HTMLStyleElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLStyleElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLStyleElement_disabled_Setter"; static media_Getter(mthis) native "HTMLStyleElement_media_Getter"; - static media_Setter_DOMString(mthis, value) native "HTMLStyleElement_media_Setter"; + static media_Setter(mthis, value) native "HTMLStyleElement_media_Setter"; static sheet_Getter(mthis) native "HTMLStyleElement_sheet_Getter"; static type_Getter(mthis) native "HTMLStyleElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "HTMLStyleElement_type_Setter"; + static type_Setter(mthis, value) native "HTMLStyleElement_type_Setter"; } class BlinkHTMLTableCaptionElement {} @@ -3803,27 +3849,27 @@ class BlinkHTMLTableCellElement { static colSpan_Getter(mthis) native "HTMLTableCellElement_colSpan_Getter"; - static colSpan_Setter_long(mthis, value) native "HTMLTableCellElement_colSpan_Setter"; + static colSpan_Setter(mthis, value) native "HTMLTableCellElement_colSpan_Setter"; static headers_Getter(mthis) native "HTMLTableCellElement_headers_Getter"; - static headers_Setter_DOMString(mthis, value) native "HTMLTableCellElement_headers_Setter"; + static headers_Setter(mthis, value) native "HTMLTableCellElement_headers_Setter"; static rowSpan_Getter(mthis) native "HTMLTableCellElement_rowSpan_Getter"; - static rowSpan_Setter_long(mthis, value) native "HTMLTableCellElement_rowSpan_Setter"; + static rowSpan_Setter(mthis, value) native "HTMLTableCellElement_rowSpan_Setter"; } class BlinkHTMLTableColElement { static span_Getter(mthis) native "HTMLTableColElement_span_Getter"; - static span_Setter_long(mthis, value) native "HTMLTableColElement_span_Setter"; + static span_Setter(mthis, value) native "HTMLTableColElement_span_Setter"; } class BlinkHTMLTableElement { static caption_Getter(mthis) native "HTMLTableElement_caption_Getter"; - static caption_Setter_HTMLTableCaptionElement(mthis, value) native "HTMLTableElement_caption_Setter"; + static caption_Setter(mthis, value) native "HTMLTableElement_caption_Setter"; static rows_Getter(mthis) native "HTMLTableElement_rows_Getter"; @@ -3831,11 +3877,11 @@ class BlinkHTMLTableElement { static tFoot_Getter(mthis) native "HTMLTableElement_tFoot_Getter"; - static tFoot_Setter_HTMLTableSectionElement(mthis, value) native "HTMLTableElement_tFoot_Setter"; + static tFoot_Setter(mthis, value) native "HTMLTableElement_tFoot_Setter"; static tHead_Getter(mthis) native "HTMLTableElement_tHead_Getter"; - static tHead_Setter_HTMLTableSectionElement(mthis, value) native "HTMLTableElement_tHead_Setter"; + static tHead_Setter(mthis, value) native "HTMLTableElement_tHead_Setter"; static createCaption_Callback(mthis) native "HTMLTableElement_createCaption_Callback"; @@ -3847,13 +3893,13 @@ class BlinkHTMLTableElement { static deleteCaption_Callback(mthis) native "HTMLTableElement_deleteCaption_Callback"; - static deleteRow_Callback_long(mthis, index) native "HTMLTableElement_deleteRow_Callback_long"; + static deleteRow_Callback_1(mthis, index) native "HTMLTableElement_deleteRow_Callback"; static deleteTFoot_Callback(mthis) native "HTMLTableElement_deleteTFoot_Callback"; static deleteTHead_Callback(mthis) native "HTMLTableElement_deleteTHead_Callback"; - static insertRow_Callback_long(mthis, index) native "HTMLTableElement_insertRow_Callback_long"; + static insertRow_Callback_1(mthis, index) native "HTMLTableElement_insertRow_Callback"; static insertRow_Callback(mthis) native "HTMLTableElement_insertRow_Callback"; } @@ -3865,9 +3911,9 @@ class BlinkHTMLTableRowElement { static sectionRowIndex_Getter(mthis) native "HTMLTableRowElement_sectionRowIndex_Getter"; - static deleteCell_Callback_long(mthis, index) native "HTMLTableRowElement_deleteCell_Callback_long"; + static deleteCell_Callback_1(mthis, index) native "HTMLTableRowElement_deleteCell_Callback"; - static insertCell_Callback_long(mthis, index) native "HTMLTableRowElement_insertCell_Callback_long"; + static insertCell_Callback_1(mthis, index) native "HTMLTableRowElement_insertCell_Callback"; static insertCell_Callback(mthis) native "HTMLTableRowElement_insertCell_Callback"; } @@ -3875,9 +3921,9 @@ class BlinkHTMLTableRowElement { class BlinkHTMLTableSectionElement { static rows_Getter(mthis) native "HTMLTableSectionElement_rows_Getter"; - static deleteRow_Callback_long(mthis, index) native "HTMLTableSectionElement_deleteRow_Callback_long"; + static deleteRow_Callback_1(mthis, index) native "HTMLTableSectionElement_deleteRow_Callback"; - static insertRow_Callback_long(mthis, index) native "HTMLTableSectionElement_insertRow_Callback_long"; + static insertRow_Callback_1(mthis, index) native "HTMLTableSectionElement_insertRow_Callback"; static insertRow_Callback(mthis) native "HTMLTableSectionElement_insertRow_Callback"; } @@ -3889,67 +3935,67 @@ class BlinkHTMLTemplateElement { class BlinkHTMLTextAreaElement { static autofocus_Getter(mthis) native "HTMLTextAreaElement_autofocus_Getter"; - static autofocus_Setter_boolean(mthis, value) native "HTMLTextAreaElement_autofocus_Setter"; + static autofocus_Setter(mthis, value) native "HTMLTextAreaElement_autofocus_Setter"; static cols_Getter(mthis) native "HTMLTextAreaElement_cols_Getter"; - static cols_Setter_long(mthis, value) native "HTMLTextAreaElement_cols_Setter"; + static cols_Setter(mthis, value) native "HTMLTextAreaElement_cols_Setter"; static defaultValue_Getter(mthis) native "HTMLTextAreaElement_defaultValue_Getter"; - static defaultValue_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_defaultValue_Setter"; + static defaultValue_Setter(mthis, value) native "HTMLTextAreaElement_defaultValue_Setter"; static dirName_Getter(mthis) native "HTMLTextAreaElement_dirName_Getter"; - static dirName_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_dirName_Setter"; + static dirName_Setter(mthis, value) native "HTMLTextAreaElement_dirName_Setter"; static disabled_Getter(mthis) native "HTMLTextAreaElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "HTMLTextAreaElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "HTMLTextAreaElement_disabled_Setter"; static form_Getter(mthis) native "HTMLTextAreaElement_form_Getter"; static inputMode_Getter(mthis) native "HTMLTextAreaElement_inputMode_Getter"; - static inputMode_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_inputMode_Setter"; + static inputMode_Setter(mthis, value) native "HTMLTextAreaElement_inputMode_Setter"; static labels_Getter(mthis) native "HTMLTextAreaElement_labels_Getter"; static maxLength_Getter(mthis) native "HTMLTextAreaElement_maxLength_Getter"; - static maxLength_Setter_long(mthis, value) native "HTMLTextAreaElement_maxLength_Setter"; + static maxLength_Setter(mthis, value) native "HTMLTextAreaElement_maxLength_Setter"; static name_Getter(mthis) native "HTMLTextAreaElement_name_Getter"; - static name_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_name_Setter"; + static name_Setter(mthis, value) native "HTMLTextAreaElement_name_Setter"; static placeholder_Getter(mthis) native "HTMLTextAreaElement_placeholder_Getter"; - static placeholder_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_placeholder_Setter"; + static placeholder_Setter(mthis, value) native "HTMLTextAreaElement_placeholder_Setter"; static readOnly_Getter(mthis) native "HTMLTextAreaElement_readOnly_Getter"; - static readOnly_Setter_boolean(mthis, value) native "HTMLTextAreaElement_readOnly_Setter"; + static readOnly_Setter(mthis, value) native "HTMLTextAreaElement_readOnly_Setter"; static required_Getter(mthis) native "HTMLTextAreaElement_required_Getter"; - static required_Setter_boolean(mthis, value) native "HTMLTextAreaElement_required_Setter"; + static required_Setter(mthis, value) native "HTMLTextAreaElement_required_Setter"; static rows_Getter(mthis) native "HTMLTextAreaElement_rows_Getter"; - static rows_Setter_long(mthis, value) native "HTMLTextAreaElement_rows_Setter"; + static rows_Setter(mthis, value) native "HTMLTextAreaElement_rows_Setter"; static selectionDirection_Getter(mthis) native "HTMLTextAreaElement_selectionDirection_Getter"; - static selectionDirection_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_selectionDirection_Setter"; + static selectionDirection_Setter(mthis, value) native "HTMLTextAreaElement_selectionDirection_Setter"; static selectionEnd_Getter(mthis) native "HTMLTextAreaElement_selectionEnd_Getter"; - static selectionEnd_Setter_long(mthis, value) native "HTMLTextAreaElement_selectionEnd_Setter"; + static selectionEnd_Setter(mthis, value) native "HTMLTextAreaElement_selectionEnd_Setter"; static selectionStart_Getter(mthis) native "HTMLTextAreaElement_selectionStart_Getter"; - static selectionStart_Setter_long(mthis, value) native "HTMLTextAreaElement_selectionStart_Setter"; + static selectionStart_Setter(mthis, value) native "HTMLTextAreaElement_selectionStart_Setter"; static textLength_Getter(mthis) native "HTMLTextAreaElement_textLength_Getter"; @@ -3961,27 +4007,27 @@ class BlinkHTMLTextAreaElement { static value_Getter(mthis) native "HTMLTextAreaElement_value_Getter"; - static value_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_value_Setter"; + static value_Setter(mthis, value) native "HTMLTextAreaElement_value_Setter"; static willValidate_Getter(mthis) native "HTMLTextAreaElement_willValidate_Getter"; static wrap_Getter(mthis) native "HTMLTextAreaElement_wrap_Getter"; - static wrap_Setter_DOMString(mthis, value) native "HTMLTextAreaElement_wrap_Setter"; + static wrap_Setter(mthis, value) native "HTMLTextAreaElement_wrap_Setter"; static checkValidity_Callback(mthis) native "HTMLTextAreaElement_checkValidity_Callback"; static select_Callback(mthis) native "HTMLTextAreaElement_select_Callback"; - static setCustomValidity_Callback_DOMString(mthis, error) native "HTMLTextAreaElement_setCustomValidity_Callback_DOMString"; + static setCustomValidity_Callback_1(mthis, error) native "HTMLTextAreaElement_setCustomValidity_Callback"; - static setRangeText_Callback_DOMString(mthis, replacement) native "HTMLTextAreaElement_setRangeText_Callback_DOMString"; + static setRangeText_Callback_1(mthis, replacement) native "HTMLTextAreaElement_setRangeText_Callback"; - static setRangeText_Callback_DOMString_ul_ul_DOMString(mthis, replacement, start, end, selectionMode) native "HTMLTextAreaElement_setRangeText_Callback_DOMString_unsigned long_unsigned long_DOMString"; + static setRangeText_Callback_4(mthis, replacement, start, end, selectionMode) native "HTMLTextAreaElement_setRangeText_Callback"; - static setSelectionRange_Callback_long_long_DOMString(mthis, start, end, direction) native "HTMLTextAreaElement_setSelectionRange_Callback_long_long_DOMString"; + static setSelectionRange_Callback_3(mthis, start, end, direction) native "HTMLTextAreaElement_setSelectionRange_Callback"; - static setSelectionRange_Callback_long_long(mthis, start, end) native "HTMLTextAreaElement_setSelectionRange_Callback_long_long"; + static setSelectionRange_Callback_2(mthis, start, end) native "HTMLTextAreaElement_setSelectionRange_Callback"; } class BlinkHTMLTitleElement {} @@ -3989,29 +4035,29 @@ class BlinkHTMLTitleElement {} class BlinkHTMLTrackElement { static default_Getter(mthis) native "HTMLTrackElement_default_Getter"; - static default_Setter_boolean(mthis, value) native "HTMLTrackElement_default_Setter"; + static default_Setter(mthis, value) native "HTMLTrackElement_default_Setter"; static integrity_Getter(mthis) native "HTMLTrackElement_integrity_Getter"; - static integrity_Setter_DOMString(mthis, value) native "HTMLTrackElement_integrity_Setter"; + static integrity_Setter(mthis, value) native "HTMLTrackElement_integrity_Setter"; static kind_Getter(mthis) native "HTMLTrackElement_kind_Getter"; - static kind_Setter_DOMString(mthis, value) native "HTMLTrackElement_kind_Setter"; + static kind_Setter(mthis, value) native "HTMLTrackElement_kind_Setter"; static label_Getter(mthis) native "HTMLTrackElement_label_Getter"; - static label_Setter_DOMString(mthis, value) native "HTMLTrackElement_label_Setter"; + static label_Setter(mthis, value) native "HTMLTrackElement_label_Setter"; static readyState_Getter(mthis) native "HTMLTrackElement_readyState_Getter"; static src_Getter(mthis) native "HTMLTrackElement_src_Getter"; - static src_Setter_DOMString(mthis, value) native "HTMLTrackElement_src_Setter"; + static src_Setter(mthis, value) native "HTMLTrackElement_src_Setter"; static srclang_Getter(mthis) native "HTMLTrackElement_srclang_Getter"; - static srclang_Setter_DOMString(mthis, value) native "HTMLTrackElement_srclang_Setter"; + static srclang_Setter(mthis, value) native "HTMLTrackElement_srclang_Setter"; static track_Getter(mthis) native "HTMLTrackElement_track_Getter"; } @@ -4023,11 +4069,11 @@ class BlinkHTMLUnknownElement {} class BlinkHTMLVideoElement { static height_Getter(mthis) native "HTMLVideoElement_height_Getter"; - static height_Setter_ul(mthis, value) native "HTMLVideoElement_height_Setter"; + static height_Setter(mthis, value) native "HTMLVideoElement_height_Setter"; static poster_Getter(mthis) native "HTMLVideoElement_poster_Getter"; - static poster_Setter_DOMString(mthis, value) native "HTMLVideoElement_poster_Setter"; + static poster_Setter(mthis, value) native "HTMLVideoElement_poster_Setter"; static videoHeight_Getter(mthis) native "HTMLVideoElement_videoHeight_Getter"; @@ -4039,7 +4085,7 @@ class BlinkHTMLVideoElement { static width_Getter(mthis) native "HTMLVideoElement_width_Getter"; - static width_Setter_ul(mthis, value) native "HTMLVideoElement_width_Setter"; + static width_Setter(mthis, value) native "HTMLVideoElement_width_Setter"; static getVideoPlaybackQuality_Callback(mthis) native "HTMLVideoElement_getVideoPlaybackQuality_Callback"; @@ -4055,21 +4101,19 @@ class BlinkHashChangeEvent { static oldURL_Getter(mthis) native "HashChangeEvent_oldURL_Getter"; - static initHashChangeEvent_Callback_DOMString_boolean_boolean_DOMString_DOMString(mthis, type, canBubble, cancelable, oldURL, newURL) native "HashChangeEvent_initHashChangeEvent_Callback_DOMString_boolean_boolean_DOMString_DOMString"; + static initHashChangeEvent_Callback_5(mthis, type, canBubble, cancelable, oldURL, newURL) native "HashChangeEvent_initHashChangeEvent_Callback"; } class BlinkHeaders { static constructorCallback() native "Headers_constructorCallback"; - static constructorCallback_Headers(input) native "Headers_constructorCallback_Headers"; - - static constructorCallback_Dictionary(input) native "Headers_constructorCallback_Dictionary"; + static constructorCallback_1(input) native "Headers_constructorCallback"; static size_Getter(mthis) native "Headers_size_Getter"; - static forEach_Callback_HeadersForEachCallback_ScriptValue(mthis, callback, thisArg) native "Headers_forEach_Callback_HeadersForEachCallback_ScriptValue"; + static forEach_Callback_2(mthis, callback, thisArg) native "Headers_forEach_Callback"; - static forEach_Callback_HeadersForEachCallback(mthis, callback) native "Headers_forEach_Callback_HeadersForEachCallback"; + static forEach_Callback_1(mthis, callback) native "Headers_forEach_Callback"; } class BlinkHistory { @@ -4081,11 +4125,11 @@ class BlinkHistory { static forward_Callback(mthis) native "History_forward_Callback"; - static go_Callback_long(mthis, distance) native "History_go_Callback_long"; + static go_Callback_1(mthis, distance) native "History_go_Callback"; - static pushState_Callback_ScriptValue_DOMString_DOMString(mthis, data, title, url) native "History_pushState_Callback"; + static pushState_Callback_3(mthis, data, title, url) native "History_pushState_Callback"; - static replaceState_Callback_ScriptValue_DOMString_DOMString(mthis, data, title, url) native "History_replaceState_Callback"; + static replaceState_Callback_3(mthis, data, title, url) native "History_replaceState_Callback"; } class BlinkIDBCursor { @@ -4097,15 +4141,17 @@ class BlinkIDBCursor { static source_Getter(mthis) native "IDBCursor_source_Getter"; - static advance_Callback_ul(mthis, count) native "IDBCursor_advance_Callback_unsigned long"; + static advance_Callback_1(mthis, count) native "IDBCursor_advance_Callback"; - static continuePrimaryKey_Callback_ScriptValue_ScriptValue(mthis, key, primaryKey) native "IDBCursor_continuePrimaryKey_Callback_ScriptValue_ScriptValue"; + static continuePrimaryKey_Callback_2(mthis, key, primaryKey) native "IDBCursor_continuePrimaryKey_Callback"; static delete_Callback(mthis) native "IDBCursor_delete_Callback"; - static continue_Callback_ScriptValue(mthis, key) native "IDBCursor_continue_Callback_ScriptValue"; + static continue_Callback_1(mthis, key) native "IDBCursor_continue_Callback"; - static update_Callback_ScriptValue(mthis, value) native "IDBCursor_update_Callback_ScriptValue"; + static continue_Callback(mthis) native "IDBCursor_continue_Callback"; + + static update_Callback_1(mthis, value) native "IDBCursor_update_Callback"; } class BlinkIDBCursorWithValue { @@ -4121,31 +4167,25 @@ class BlinkIDBDatabase { static close_Callback(mthis) native "IDBDatabase_close_Callback"; - static createObjectStore_Callback_DOMString_Dictionary(mthis, name, options) native "IDBDatabase_createObjectStore_Callback_DOMString_Dictionary"; - - static deleteObjectStore_Callback_DOMString(mthis, name) native "IDBDatabase_deleteObjectStore_Callback_DOMString"; - - static transaction_Callback_DOMString(mthis, storeName_OR_storeNames) native "IDBDatabase_transaction_Callback_DOMString"; - - static transaction_Callback_DOMString_DOMString(mthis, storeName_OR_storeNames, mode) native "IDBDatabase_transaction_Callback_DOMString_DOMString"; + static createObjectStore_Callback_2(mthis, name, options) native "IDBDatabase_createObjectStore_Callback"; - static transaction_Callback_SEQ_DOMString_SEQ(mthis, storeName_OR_storeNames) native "IDBDatabase_transaction_Callback_sequence"; + static createObjectStore_Callback_1(mthis, name) native "IDBDatabase_createObjectStore_Callback"; - static transaction_Callback_SEQ_DOMString_SEQ_DOMString(mthis, storeName_OR_storeNames, mode) native "IDBDatabase_transaction_Callback_sequence_DOMString"; + static deleteObjectStore_Callback_1(mthis, name) native "IDBDatabase_deleteObjectStore_Callback"; - static transaction_Callback_DOMStringList(mthis, storeName_OR_storeNames) native "IDBDatabase_transaction_Callback_DOMStringList"; + static transaction_Callback_1(mthis, storeName_OR_storeNames) native "IDBDatabase_transaction_Callback"; - static transaction_Callback_DOMStringList_DOMString(mthis, storeName_OR_storeNames, mode) native "IDBDatabase_transaction_Callback_DOMStringList_DOMString"; + static transaction_Callback_2(mthis, storeName_OR_storeNames, mode) native "IDBDatabase_transaction_Callback"; } class BlinkIDBFactory { - static cmp_Callback_ScriptValue_ScriptValue(mthis, first, second) native "IDBFactory_cmp_Callback_ScriptValue_ScriptValue"; + static cmp_Callback_2(mthis, first, second) native "IDBFactory_cmp_Callback"; - static deleteDatabase_Callback_DOMString(mthis, name) native "IDBFactory_deleteDatabase_Callback_DOMString"; + static deleteDatabase_Callback_1(mthis, name) native "IDBFactory_deleteDatabase_Callback"; - static open_Callback_DOMString_ull(mthis, name, version) native "IDBFactory_open_Callback_DOMString_unsigned long long"; + static open_Callback_2(mthis, name, version) native "IDBFactory_open_Callback"; - static open_Callback_DOMString(mthis, name) native "IDBFactory_open_Callback_DOMString"; + static open_Callback_1(mthis, name) native "IDBFactory_open_Callback"; static webkitGetDatabaseNames_Callback(mthis) native "IDBFactory_webkitGetDatabaseNames_Callback"; } @@ -4161,19 +4201,19 @@ class BlinkIDBIndex { static unique_Getter(mthis) native "IDBIndex_unique_Getter"; - static count_Callback_ScriptValue(mthis, key) native "IDBIndex_count_Callback_ScriptValue"; + static count_Callback_1(mthis, key) native "IDBIndex_count_Callback"; - static get_Callback_ScriptValue(mthis, key) native "IDBIndex_get_Callback_ScriptValue"; + static get_Callback_1(mthis, key) native "IDBIndex_get_Callback"; - static getKey_Callback_ScriptValue(mthis, key) native "IDBIndex_getKey_Callback_ScriptValue"; + static getKey_Callback_1(mthis, key) native "IDBIndex_getKey_Callback"; - static openCursor_Callback_ScriptValue_DOMString(mthis, range, direction) native "IDBIndex_openCursor_Callback_ScriptValue_DOMString"; + static openCursor_Callback_2(mthis, range, direction) native "IDBIndex_openCursor_Callback"; - static openCursor_Callback_ScriptValue(mthis, range) native "IDBIndex_openCursor_Callback_ScriptValue"; + static openCursor_Callback_1(mthis, range) native "IDBIndex_openCursor_Callback"; - static openKeyCursor_Callback_ScriptValue_DOMString(mthis, range, direction) native "IDBIndex_openKeyCursor_Callback_ScriptValue_DOMString"; + static openKeyCursor_Callback_2(mthis, range, direction) native "IDBIndex_openKeyCursor_Callback"; - static openKeyCursor_Callback_ScriptValue(mthis, range) native "IDBIndex_openKeyCursor_Callback_ScriptValue"; + static openKeyCursor_Callback_1(mthis, range) native "IDBIndex_openKeyCursor_Callback"; } class BlinkIDBKeyRange { @@ -4185,13 +4225,21 @@ class BlinkIDBKeyRange { static upperOpen_Getter(mthis) native "IDBKeyRange_upperOpen_Getter"; - static bound_Callback_ScriptValue_ScriptValue_boolean_boolean(lower, upper, lowerOpen, upperOpen) native "IDBKeyRange_bound_Callback_ScriptValue_ScriptValue_boolean_boolean"; + static bound_Callback_4(lower, upper, lowerOpen, upperOpen) native "IDBKeyRange_bound_Callback"; - static lowerBound_Callback_ScriptValue_boolean(bound, open) native "IDBKeyRange_lowerBound_Callback_ScriptValue_boolean"; + static bound_Callback_3(lower, upper, lowerOpen) native "IDBKeyRange_bound_Callback"; - static only_Callback_ScriptValue(value) native "IDBKeyRange_only_Callback_ScriptValue"; + static bound_Callback_2(lower, upper) native "IDBKeyRange_bound_Callback"; - static upperBound_Callback_ScriptValue_boolean(bound, open) native "IDBKeyRange_upperBound_Callback_ScriptValue_boolean"; + static lowerBound_Callback_2(bound, open) native "IDBKeyRange_lowerBound_Callback"; + + static lowerBound_Callback_1(bound) native "IDBKeyRange_lowerBound_Callback"; + + static only_Callback_1(value) native "IDBKeyRange_only_Callback"; + + static upperBound_Callback_2(bound, open) native "IDBKeyRange_upperBound_Callback"; + + static upperBound_Callback_1(bound) native "IDBKeyRange_upperBound_Callback"; } class BlinkIDBObjectStore { @@ -4205,31 +4253,37 @@ class BlinkIDBObjectStore { static transaction_Getter(mthis) native "IDBObjectStore_transaction_Getter"; - static add_Callback_ScriptValue_ScriptValue(mthis, value, key) native "IDBObjectStore_add_Callback_ScriptValue_ScriptValue"; + static add_Callback_2(mthis, value, key) native "IDBObjectStore_add_Callback"; + + static add_Callback_1(mthis, value) native "IDBObjectStore_add_Callback"; static clear_Callback(mthis) native "IDBObjectStore_clear_Callback"; - static count_Callback_ScriptValue(mthis, key) native "IDBObjectStore_count_Callback_ScriptValue"; + static count_Callback_1(mthis, key) native "IDBObjectStore_count_Callback"; + + static createIndex_Callback_2(mthis, name, keyPath) native "IDBObjectStore_createIndex_Callback"; - static createIndex_Callback_DOMString_DOMString_Dictionary(mthis, name, keyPath, options) native "IDBObjectStore_createIndex_Callback_DOMString_DOMString_Dictionary"; + static createIndex_Callback_3(mthis, name, keyPath, options) native "IDBObjectStore_createIndex_Callback"; - static createIndex_Callback_DOMString_SEQ_DOMString_SEQ_Dictionary(mthis, name, keyPath, options) native "IDBObjectStore_createIndex_Callback_DOMString_sequence_Dictionary"; + static delete_Callback_1(mthis, key) native "IDBObjectStore_delete_Callback"; - static delete_Callback_ScriptValue(mthis, key) native "IDBObjectStore_delete_Callback_ScriptValue"; + static deleteIndex_Callback_1(mthis, name) native "IDBObjectStore_deleteIndex_Callback"; - static deleteIndex_Callback_DOMString(mthis, name) native "IDBObjectStore_deleteIndex_Callback_DOMString"; + static get_Callback_1(mthis, key) native "IDBObjectStore_get_Callback"; - static get_Callback_ScriptValue(mthis, key) native "IDBObjectStore_get_Callback_ScriptValue"; + static index_Callback_1(mthis, name) native "IDBObjectStore_index_Callback"; - static index_Callback_DOMString(mthis, name) native "IDBObjectStore_index_Callback_DOMString"; + static openCursor_Callback_2(mthis, range, direction) native "IDBObjectStore_openCursor_Callback"; - static openCursor_Callback_ScriptValue_DOMString(mthis, range, direction) native "IDBObjectStore_openCursor_Callback_ScriptValue_DOMString"; + static openCursor_Callback_1(mthis, range) native "IDBObjectStore_openCursor_Callback"; - static openKeyCursor_Callback_ScriptValue_DOMString(mthis, range, direction) native "IDBObjectStore_openKeyCursor_Callback_ScriptValue_DOMString"; + static openKeyCursor_Callback_2(mthis, range, direction) native "IDBObjectStore_openKeyCursor_Callback"; - static openKeyCursor_Callback_ScriptValue(mthis, range) native "IDBObjectStore_openKeyCursor_Callback_ScriptValue"; + static openKeyCursor_Callback_1(mthis, range) native "IDBObjectStore_openKeyCursor_Callback"; - static put_Callback_ScriptValue_ScriptValue(mthis, value, key) native "IDBObjectStore_put_Callback_ScriptValue_ScriptValue"; + static put_Callback_2(mthis, value, key) native "IDBObjectStore_put_Callback"; + + static put_Callback_1(mthis, value) native "IDBObjectStore_put_Callback"; } class BlinkIDBRequest { @@ -4255,7 +4309,7 @@ class BlinkIDBTransaction { static abort_Callback(mthis) native "IDBTransaction_abort_Callback"; - static objectStore_Callback_DOMString(mthis, name) native "IDBTransaction_objectStore_Callback_DOMString"; + static objectStore_Callback_1(mthis, name) native "IDBTransaction_objectStore_Callback"; } class BlinkIDBVersionChangeEvent { @@ -4277,9 +4331,9 @@ class BlinkImageBitmap { } class BlinkImageData { - static constructorCallback_ul_ul(data_OR_width, height_OR_width) native "ImageData_constructorCallback_unsigned long_unsigned long"; + static constructorCallback_2(data_OR_width, height_OR_width) native "ImageData_constructorCallback"; - static constructorCallback_Uint8ClampedArray_ul_ul(data_OR_width, height_OR_width, height) native "ImageData_constructorCallback_Uint8ClampedArray_unsigned long_unsigned long"; + static constructorCallback_3(data_OR_width, height_OR_width, height) native "ImageData_constructorCallback"; static data_Getter(mthis) native "ImageData_data_Getter"; @@ -4289,7 +4343,7 @@ class BlinkImageData { } class BlinkInjectedScriptHost { - static inspect_Callback_ScriptValue_ScriptValue(mthis, objectId, hints) native "InjectedScriptHost_inspect_Callback"; + static inspect_Callback_2(mthis, objectId, hints) native "InjectedScriptHost_inspect_Callback"; } class BlinkInputMethodContext { @@ -4305,7 +4359,7 @@ class BlinkInputMethodContext { } class BlinkInstallPhaseEvent { - static waitUntil_Callback_ScriptValue(mthis, value) native "InstallPhaseEvent_waitUntil_Callback_ScriptValue"; + static waitUntil_Callback_1(mthis, value) native "InstallPhaseEvent_waitUntil_Callback"; } class BlinkInstallEvent { @@ -4333,13 +4387,13 @@ class BlinkKeyboardEvent { static shiftKey_Getter(mthis) native "KeyboardEvent_shiftKey_Getter"; - static getModifierState_Callback_DOMString(mthis, keyArgument) native "KeyboardEvent_getModifierState_Callback_DOMString"; + static getModifierState_Callback_1(mthis, keyArgument) native "KeyboardEvent_getModifierState_Callback"; - static initKeyboardEvent_Callback_DOMString_boolean_boolean_Window_DOMString_ul_boolean_boolean_boolean_boolean(mthis, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) native "KeyboardEvent_initKeyboardEvent_Callback_DOMString_boolean_boolean_Window_DOMString_unsigned long_boolean_boolean_boolean_boolean"; + static initKeyboardEvent_Callback_10(mthis, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) native "KeyboardEvent_initKeyboardEvent_Callback"; } class BlinkLocalCredential { - static constructorCallback_DOMString_DOMString_DOMString_DOMString(id, name, avatarURL, password) native "LocalCredential_constructorCallback_DOMString_DOMString_DOMString_DOMString"; + static constructorCallback_4(id, name, avatarURL, password) native "LocalCredential_constructorCallback"; static password_Getter(mthis) native "LocalCredential_password_Getter"; } @@ -4349,43 +4403,43 @@ class BlinkLocation { static hash_Getter(mthis) native "Location_hash_Getter"; - static hash_Setter_DOMString(mthis, value) native "Location_hash_Setter"; + static hash_Setter(mthis, value) native "Location_hash_Setter"; static host_Getter(mthis) native "Location_host_Getter"; - static host_Setter_DOMString(mthis, value) native "Location_host_Setter"; + static host_Setter(mthis, value) native "Location_host_Setter"; static hostname_Getter(mthis) native "Location_hostname_Getter"; - static hostname_Setter_DOMString(mthis, value) native "Location_hostname_Setter"; + static hostname_Setter(mthis, value) native "Location_hostname_Setter"; static href_Getter(mthis) native "Location_href_Getter"; - static href_Setter_DOMString(mthis, value) native "Location_href_Setter"; + static href_Setter(mthis, value) native "Location_href_Setter"; static origin_Getter(mthis) native "Location_origin_Getter"; static pathname_Getter(mthis) native "Location_pathname_Getter"; - static pathname_Setter_DOMString(mthis, value) native "Location_pathname_Setter"; + static pathname_Setter(mthis, value) native "Location_pathname_Setter"; static port_Getter(mthis) native "Location_port_Getter"; - static port_Setter_DOMString(mthis, value) native "Location_port_Setter"; + static port_Setter(mthis, value) native "Location_port_Setter"; static protocol_Getter(mthis) native "Location_protocol_Getter"; - static protocol_Setter_DOMString(mthis, value) native "Location_protocol_Setter"; + static protocol_Setter(mthis, value) native "Location_protocol_Setter"; static search_Getter(mthis) native "Location_search_Getter"; - static search_Setter_DOMString(mthis, value) native "Location_search_Setter"; + static search_Setter(mthis, value) native "Location_search_Setter"; - static assign_Callback_DOMString(mthis, url) native "Location_assign_Callback"; + static assign_Callback_1(mthis, url) native "Location_assign_Callback"; static reload_Callback(mthis) native "Location_reload_Callback"; - static replace_Callback_DOMString(mthis, url) native "Location_replace_Callback"; + static replace_Callback_1(mthis, url) native "Location_replace_Callback"; static toString_Callback(mthis) native "Location_toString_Callback"; } @@ -4427,9 +4481,9 @@ class BlinkMIDIMessageEvent { } class BlinkMIDIOutput { - static send_Callback_Uint8Array_double(mthis, data, timestamp) native "MIDIOutput_send_Callback_Uint8Array_double"; + static send_Callback_2(mthis, data, timestamp) native "MIDIOutput_send_Callback"; - static send_Callback_Uint8Array(mthis, data) native "MIDIOutput_send_Callback_Uint8Array"; + static send_Callback_1(mthis, data) native "MIDIOutput_send_Callback"; } class BlinkMediaController { @@ -4439,23 +4493,23 @@ class BlinkMediaController { static currentTime_Getter(mthis) native "MediaController_currentTime_Getter"; - static currentTime_Setter_double(mthis, value) native "MediaController_currentTime_Setter"; + static currentTime_Setter(mthis, value) native "MediaController_currentTime_Setter"; static defaultPlaybackRate_Getter(mthis) native "MediaController_defaultPlaybackRate_Getter"; - static defaultPlaybackRate_Setter_double(mthis, value) native "MediaController_defaultPlaybackRate_Setter"; + static defaultPlaybackRate_Setter(mthis, value) native "MediaController_defaultPlaybackRate_Setter"; static duration_Getter(mthis) native "MediaController_duration_Getter"; static muted_Getter(mthis) native "MediaController_muted_Getter"; - static muted_Setter_boolean(mthis, value) native "MediaController_muted_Setter"; + static muted_Setter(mthis, value) native "MediaController_muted_Setter"; static paused_Getter(mthis) native "MediaController_paused_Getter"; static playbackRate_Getter(mthis) native "MediaController_playbackRate_Getter"; - static playbackRate_Setter_double(mthis, value) native "MediaController_playbackRate_Setter"; + static playbackRate_Setter(mthis, value) native "MediaController_playbackRate_Setter"; static playbackState_Getter(mthis) native "MediaController_playbackState_Getter"; @@ -4465,7 +4519,7 @@ class BlinkMediaController { static volume_Getter(mthis) native "MediaController_volume_Getter"; - static volume_Setter_double(mthis, value) native "MediaController_volume_Setter"; + static volume_Setter(mthis, value) native "MediaController_volume_Setter"; static pause_Callback(mthis) native "MediaController_pause_Callback"; @@ -4543,25 +4597,19 @@ class BlinkMediaKeySession { static release_Callback(mthis) native "MediaKeySession_release_Callback"; - static update_Callback_ArrayBufferView(mthis, response) native "MediaKeySession_update_Callback_ArrayBufferView"; - - static update_Callback_ArrayBuffer(mthis, response) native "MediaKeySession_update_Callback_ArrayBuffer"; + static update_Callback_1(mthis, response) native "MediaKeySession_update_Callback"; } class BlinkMediaKeys { static keySystem_Getter(mthis) native "MediaKeys_keySystem_Getter"; - static create_Callback_DOMString(keySystem) native "MediaKeys_create_Callback_DOMString"; + static create_Callback_1(keySystem) native "MediaKeys_create_Callback"; - static createSession_Callback_DOMString_ArrayBufferView(mthis, initDataType, initData) native "MediaKeys_createSession_Callback_DOMString_ArrayBufferView"; + static createSession_Callback_2(mthis, initDataType, initData) native "MediaKeys_createSession_Callback"; - static createSession_Callback_DOMString_ArrayBufferView_DOMString(mthis, initDataType, initData, sessionType) native "MediaKeys_createSession_Callback_DOMString_ArrayBufferView_DOMString"; + static createSession_Callback_3(mthis, initDataType, initData, sessionType) native "MediaKeys_createSession_Callback"; - static createSession_Callback_DOMString_ArrayBuffer(mthis, initDataType, initData) native "MediaKeys_createSession_Callback_DOMString_ArrayBuffer"; - - static createSession_Callback_DOMString_ArrayBuffer_DOMString(mthis, initDataType, initData, sessionType) native "MediaKeys_createSession_Callback_DOMString_ArrayBuffer_DOMString"; - - static isTypeSupported_Callback_DOMString_DOMString(keySystem, contentType) native "MediaKeys_isTypeSupported_Callback_DOMString_DOMString"; + static isTypeSupported_Callback_2(keySystem, contentType) native "MediaKeys_isTypeSupported_Callback"; } class BlinkMediaList { @@ -4569,13 +4617,13 @@ class BlinkMediaList { static mediaText_Getter(mthis) native "MediaList_mediaText_Getter"; - static mediaText_Setter_DOMString(mthis, value) native "MediaList_mediaText_Setter"; + static mediaText_Setter(mthis, value) native "MediaList_mediaText_Setter"; - static appendMedium_Callback_DOMString(mthis, newMedium) native "MediaList_appendMedium_Callback_DOMString"; + static appendMedium_Callback_1(mthis, newMedium) native "MediaList_appendMedium_Callback"; - static deleteMedium_Callback_DOMString(mthis, oldMedium) native "MediaList_deleteMedium_Callback_DOMString"; + static deleteMedium_Callback_1(mthis, oldMedium) native "MediaList_deleteMedium_Callback"; - static item_Callback_ul(mthis, index) native "MediaList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "MediaList_item_Callback"; } class BlinkMediaQueryList { @@ -4591,29 +4639,27 @@ class BlinkMediaSource { static duration_Getter(mthis) native "MediaSource_duration_Getter"; - static duration_Setter_double(mthis, value) native "MediaSource_duration_Setter"; + static duration_Setter(mthis, value) native "MediaSource_duration_Setter"; static readyState_Getter(mthis) native "MediaSource_readyState_Getter"; static sourceBuffers_Getter(mthis) native "MediaSource_sourceBuffers_Getter"; - static addSourceBuffer_Callback_DOMString(mthis, type) native "MediaSource_addSourceBuffer_Callback_DOMString"; + static addSourceBuffer_Callback_1(mthis, type) native "MediaSource_addSourceBuffer_Callback"; - static endOfStream_Callback_DOMString(mthis, error) native "MediaSource_endOfStream_Callback_DOMString"; + static endOfStream_Callback_1(mthis, error) native "MediaSource_endOfStream_Callback"; static endOfStream_Callback(mthis) native "MediaSource_endOfStream_Callback"; - static isTypeSupported_Callback_DOMString(type) native "MediaSource_isTypeSupported_Callback_DOMString"; + static isTypeSupported_Callback_1(type) native "MediaSource_isTypeSupported_Callback"; - static removeSourceBuffer_Callback_SourceBuffer(mthis, buffer) native "MediaSource_removeSourceBuffer_Callback_SourceBuffer"; + static removeSourceBuffer_Callback_1(mthis, buffer) native "MediaSource_removeSourceBuffer_Callback"; } class BlinkMediaStream { static constructorCallback() native "MediaStream_constructorCallback"; - static constructorCallback_MediaStream(stream_OR_tracks) native "MediaStream_constructorCallback_MediaStream"; - - static constructorCallback_A_MediaStreamTrack_A(stream_OR_tracks) native "MediaStream_constructorCallback_MediaStreamTrack[]"; + static constructorCallback_1(stream_OR_tracks) native "MediaStream_constructorCallback"; static ended_Getter(mthis) native "MediaStream_ended_Getter"; @@ -4621,19 +4667,19 @@ class BlinkMediaStream { static label_Getter(mthis) native "MediaStream_label_Getter"; - static addTrack_Callback_MediaStreamTrack(mthis, track) native "MediaStream_addTrack_Callback_MediaStreamTrack"; + static addTrack_Callback_1(mthis, track) native "MediaStream_addTrack_Callback"; static clone_Callback(mthis) native "MediaStream_clone_Callback"; static getAudioTracks_Callback(mthis) native "MediaStream_getAudioTracks_Callback"; - static getTrackById_Callback_DOMString(mthis, trackId) native "MediaStream_getTrackById_Callback_DOMString"; + static getTrackById_Callback_1(mthis, trackId) native "MediaStream_getTrackById_Callback"; static getTracks_Callback(mthis) native "MediaStream_getTracks_Callback"; static getVideoTracks_Callback(mthis) native "MediaStream_getVideoTracks_Callback"; - static removeTrack_Callback_MediaStreamTrack(mthis, track) native "MediaStream_removeTrack_Callback_MediaStreamTrack"; + static removeTrack_Callback_1(mthis, track) native "MediaStream_removeTrack_Callback"; static stop_Callback(mthis) native "MediaStream_stop_Callback"; } @@ -4655,7 +4701,7 @@ class BlinkMediaStreamEvent { class BlinkMediaStreamTrack { static enabled_Getter(mthis) native "MediaStreamTrack_enabled_Getter"; - static enabled_Setter_boolean(mthis, value) native "MediaStreamTrack_enabled_Setter"; + static enabled_Setter(mthis, value) native "MediaStreamTrack_enabled_Setter"; static id_Getter(mthis) native "MediaStreamTrack_id_Getter"; @@ -4669,7 +4715,7 @@ class BlinkMediaStreamTrack { static clone_Callback(mthis) native "MediaStreamTrack_clone_Callback"; - static getSources_Callback_MediaStreamTrackSourcesCallback(callback) native "MediaStreamTrack_getSources_Callback_MediaStreamTrackSourcesCallback"; + static getSources_Callback_1(callback) native "MediaStreamTrack_getSources_Callback"; static stop_Callback(mthis) native "MediaStreamTrack_stop_Callback"; } @@ -4703,13 +4749,13 @@ class BlinkMessageEvent { static source_Getter(mthis) native "MessageEvent_source_Getter"; - static initMessageEvent_Callback_DOMString_boolean_boolean_ScriptValue_DOMString_DOMString_Window_A_MessagePort_A(mthis, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts) native "MessageEvent_initMessageEvent_Callback"; + static initMessageEvent_Callback_8(mthis, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts) native "MessageEvent_initMessageEvent_Callback"; } class BlinkMessagePort { static close_Callback(mthis) native "MessagePort_close_Callback"; - static postMessage_Callback_ScriptValue_SEQ_MessagePort_SEQ(mthis, message, transfer) native "MessagePort_postMessage_Callback"; + static postMessage_Callback_2(mthis, message, transfer) native "MessagePort_postMessage_Callback"; static start_Callback(mthis) native "MessagePort_start_Callback"; } @@ -4733,11 +4779,11 @@ class BlinkMimeType { class BlinkMimeTypeArray { static length_Getter(mthis) native "MimeTypeArray_length_Getter"; - static $__getter___Callback_DOMString(mthis, name) native "MimeTypeArray___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "MimeTypeArray___getter___Callback"; - static item_Callback_ul(mthis, index) native "MimeTypeArray_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "MimeTypeArray_item_Callback"; - static namedItem_Callback_DOMString(mthis, name) native "MimeTypeArray_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "MimeTypeArray_namedItem_Callback"; } class BlinkMouseEvent { @@ -4783,17 +4829,17 @@ class BlinkMouseEvent { static webkitMovementY_Getter(mthis) native "MouseEvent_webkitMovementY_Getter"; - static initMouseEvent_Callback_DOMString_boolean_boolean_Window_long_long_long_long_long_boolean_boolean_boolean_boolean_us_EventTarget(mthis, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) native "MouseEvent_initMouseEvent_Callback_DOMString_boolean_boolean_Window_long_long_long_long_long_boolean_boolean_boolean_boolean_unsigned short_EventTarget"; + static initMouseEvent_Callback_15(mthis, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) native "MouseEvent_initMouseEvent_Callback"; } class BlinkMutationEvent {} class BlinkMutationObserver { - static constructorCallback_MutationCallback(callback) native "MutationObserver_constructorCallback"; + static constructorCallback_1(callback) native "MutationObserver_constructorCallback"; static disconnect_Callback(mthis) native "MutationObserver_disconnect_Callback"; - static observe_Callback_Node_Dictionary(mthis, target, options) native "MutationObserver_observe_Callback_Node_Dictionary"; + static observe_Callback_2(mthis, target, options) native "MutationObserver_observe_Callback"; static takeRecords_Callback(mthis) native "MutationObserver_takeRecords_Callback"; } @@ -4821,21 +4867,21 @@ class BlinkMutationRecord { class BlinkNamedNodeMap { static length_Getter(mthis) native "NamedNodeMap_length_Getter"; - static $__getter___Callback_DOMString(mthis, name) native "NamedNodeMap___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "NamedNodeMap___getter___Callback"; - static getNamedItem_Callback_DOMString(mthis, name) native "NamedNodeMap_getNamedItem_Callback_DOMString"; + static getNamedItem_Callback_1(mthis, name) native "NamedNodeMap_getNamedItem_Callback"; - static getNamedItemNS_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "NamedNodeMap_getNamedItemNS_Callback_DOMString_DOMString"; + static getNamedItemNS_Callback_2(mthis, namespaceURI, localName) native "NamedNodeMap_getNamedItemNS_Callback"; - static item_Callback_ul(mthis, index) native "NamedNodeMap_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "NamedNodeMap_item_Callback"; - static removeNamedItem_Callback_DOMString(mthis, name) native "NamedNodeMap_removeNamedItem_Callback_DOMString"; + static removeNamedItem_Callback_1(mthis, name) native "NamedNodeMap_removeNamedItem_Callback"; - static removeNamedItemNS_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "NamedNodeMap_removeNamedItemNS_Callback_DOMString_DOMString"; + static removeNamedItemNS_Callback_2(mthis, namespaceURI, localName) native "NamedNodeMap_removeNamedItemNS_Callback"; - static setNamedItem_Callback_Node(mthis, node) native "NamedNodeMap_setNamedItem_Callback_Node"; + static setNamedItem_Callback_1(mthis, node) native "NamedNodeMap_setNamedItem_Callback"; - static setNamedItemNS_Callback_Node(mthis, node) native "NamedNodeMap_setNamedItemNS_Callback_Node"; + static setNamedItemNS_Callback_1(mthis, node) native "NamedNodeMap_setNamedItemNS_Callback"; } class BlinkNavigatorCPU { @@ -4907,21 +4953,15 @@ class BlinkNavigator { static getStorageUpdates_Callback(mthis) native "Navigator_getStorageUpdates_Callback"; - static isProtocolHandlerRegistered_Callback_DOMString_DOMString(mthis, scheme, url) native "Navigator_isProtocolHandlerRegistered_Callback_DOMString_DOMString"; - - static registerProtocolHandler_Callback_DOMString_DOMString_DOMString(mthis, scheme, url, title) native "Navigator_registerProtocolHandler_Callback_DOMString_DOMString_DOMString"; + static isProtocolHandlerRegistered_Callback_2(mthis, scheme, url) native "Navigator_isProtocolHandlerRegistered_Callback"; - static sendBeacon_Callback_DOMString_DOMString(mthis, url, data) native "Navigator_sendBeacon_Callback_DOMString_DOMString"; + static registerProtocolHandler_Callback_3(mthis, scheme, url, title) native "Navigator_registerProtocolHandler_Callback"; - static sendBeacon_Callback_DOMString_ArrayBufferView(mthis, url, data) native "Navigator_sendBeacon_Callback_DOMString_ArrayBufferView"; + static sendBeacon_Callback_2(mthis, url, data) native "Navigator_sendBeacon_Callback"; - static sendBeacon_Callback_DOMString_FormData(mthis, url, data) native "Navigator_sendBeacon_Callback_DOMString_FormData"; + static unregisterProtocolHandler_Callback_2(mthis, scheme, url) native "Navigator_unregisterProtocolHandler_Callback"; - static sendBeacon_Callback_DOMString_Blob(mthis, url, data) native "Navigator_sendBeacon_Callback_DOMString_Blob"; - - static unregisterProtocolHandler_Callback_DOMString_DOMString(mthis, scheme, url) native "Navigator_unregisterProtocolHandler_Callback_DOMString_DOMString"; - - static webkitGetUserMedia_Callback_Dictionary_NavigatorUserMediaSuccessCallback_NavigatorUserMediaErrorCallback(mthis, options, successCallback, errorCallback) native "Navigator_webkitGetUserMedia_Callback_Dictionary_NavigatorUserMediaSuccessCallback_NavigatorUserMediaErrorCallback"; + static webkitGetUserMedia_Callback_3(mthis, options, successCallback, errorCallback) native "Navigator_webkitGetUserMedia_Callback"; static appCodeName_Getter(mthis) native "Navigator_appCodeName_Getter"; @@ -4977,13 +5017,13 @@ class BlinkNodeIterator { class BlinkNodeList { static length_Getter(mthis) native "NodeList_length_Getter"; - static item_Callback_ul(mthis, index) native "NodeList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "NodeList_item_Callback"; } class BlinkNotation {} class BlinkNotification { - static constructorCallback_DOMString_Dictionary(title, options) native "Notification_constructorCallback_DOMString_Dictionary"; + static constructorCallback_2(title, options) native "Notification_constructorCallback"; static body_Getter(mthis) native "Notification_body_Getter"; @@ -5001,7 +5041,9 @@ class BlinkNotification { static close_Callback(mthis) native "Notification_close_Callback"; - static requestPermission_Callback_NotificationPermissionCallback(callback) native "Notification_requestPermission_Callback_NotificationPermissionCallback"; + static requestPermission_Callback_1(callback) native "Notification_requestPermission_Callback"; + + static requestPermission_Callback() native "Notification_requestPermission_Callback"; } class BlinkOESElementIndexUint {} @@ -5017,13 +5059,13 @@ class BlinkOESTextureHalfFloat {} class BlinkOESTextureHalfFloatLinear {} class BlinkOESVertexArrayObject { - static bindVertexArrayOES_Callback_WebGLVertexArrayObjectOES(mthis, arrayObject) native "OESVertexArrayObject_bindVertexArrayOES_Callback_WebGLVertexArrayObjectOES"; + static bindVertexArrayOES_Callback_1(mthis, arrayObject) native "OESVertexArrayObject_bindVertexArrayOES_Callback"; static createVertexArrayOES_Callback(mthis) native "OESVertexArrayObject_createVertexArrayOES_Callback"; - static deleteVertexArrayOES_Callback_WebGLVertexArrayObjectOES(mthis, arrayObject) native "OESVertexArrayObject_deleteVertexArrayOES_Callback_WebGLVertexArrayObjectOES"; + static deleteVertexArrayOES_Callback_1(mthis, arrayObject) native "OESVertexArrayObject_deleteVertexArrayOES_Callback"; - static isVertexArrayOES_Callback_WebGLVertexArrayObjectOES(mthis, arrayObject) native "OESVertexArrayObject_isVertexArrayOES_Callback_WebGLVertexArrayObjectOES"; + static isVertexArrayOES_Callback_1(mthis, arrayObject) native "OESVertexArrayObject_isVertexArrayOES_Callback"; } class BlinkOfflineAudioCompletionEvent { @@ -5031,7 +5073,7 @@ class BlinkOfflineAudioCompletionEvent { } class BlinkOfflineAudioContext { - static constructorCallback_ul_ul_float(numberOfChannels, numberOfFrames, sampleRate) native "OfflineAudioContext_constructorCallback_unsigned long_unsigned long_float"; + static constructorCallback_3(numberOfChannels, numberOfFrames, sampleRate) native "OfflineAudioContext_constructorCallback"; } class BlinkOscillatorNode { @@ -5041,19 +5083,19 @@ class BlinkOscillatorNode { static type_Getter(mthis) native "OscillatorNode_type_Getter"; - static type_Setter_DOMString(mthis, value) native "OscillatorNode_type_Setter"; + static type_Setter(mthis, value) native "OscillatorNode_type_Setter"; - static noteOff_Callback_double(mthis, when) native "OscillatorNode_noteOff_Callback_double"; + static noteOff_Callback_1(mthis, when) native "OscillatorNode_noteOff_Callback"; - static noteOn_Callback_double(mthis, when) native "OscillatorNode_noteOn_Callback_double"; + static noteOn_Callback_1(mthis, when) native "OscillatorNode_noteOn_Callback"; - static setPeriodicWave_Callback_PeriodicWave(mthis, periodicWave) native "OscillatorNode_setPeriodicWave_Callback_PeriodicWave"; + static setPeriodicWave_Callback_1(mthis, periodicWave) native "OscillatorNode_setPeriodicWave_Callback"; - static start_Callback_double(mthis, when) native "OscillatorNode_start_Callback_double"; + static start_Callback_1(mthis, when) native "OscillatorNode_start_Callback"; static start_Callback(mthis) native "OscillatorNode_start_Callback"; - static stop_Callback_double(mthis, when) native "OscillatorNode_stop_Callback_double"; + static stop_Callback_1(mthis, when) native "OscillatorNode_stop_Callback"; static stop_Callback(mthis) native "OscillatorNode_stop_Callback"; } @@ -5079,71 +5121,69 @@ class BlinkPageTransitionEvent { class BlinkPannerNode { static coneInnerAngle_Getter(mthis) native "PannerNode_coneInnerAngle_Getter"; - static coneInnerAngle_Setter_double(mthis, value) native "PannerNode_coneInnerAngle_Setter"; + static coneInnerAngle_Setter(mthis, value) native "PannerNode_coneInnerAngle_Setter"; static coneOuterAngle_Getter(mthis) native "PannerNode_coneOuterAngle_Getter"; - static coneOuterAngle_Setter_double(mthis, value) native "PannerNode_coneOuterAngle_Setter"; + static coneOuterAngle_Setter(mthis, value) native "PannerNode_coneOuterAngle_Setter"; static coneOuterGain_Getter(mthis) native "PannerNode_coneOuterGain_Getter"; - static coneOuterGain_Setter_double(mthis, value) native "PannerNode_coneOuterGain_Setter"; + static coneOuterGain_Setter(mthis, value) native "PannerNode_coneOuterGain_Setter"; static distanceModel_Getter(mthis) native "PannerNode_distanceModel_Getter"; - static distanceModel_Setter_DOMString(mthis, value) native "PannerNode_distanceModel_Setter"; + static distanceModel_Setter(mthis, value) native "PannerNode_distanceModel_Setter"; static maxDistance_Getter(mthis) native "PannerNode_maxDistance_Getter"; - static maxDistance_Setter_double(mthis, value) native "PannerNode_maxDistance_Setter"; + static maxDistance_Setter(mthis, value) native "PannerNode_maxDistance_Setter"; static panningModel_Getter(mthis) native "PannerNode_panningModel_Getter"; - static panningModel_Setter_DOMString(mthis, value) native "PannerNode_panningModel_Setter"; + static panningModel_Setter(mthis, value) native "PannerNode_panningModel_Setter"; static refDistance_Getter(mthis) native "PannerNode_refDistance_Getter"; - static refDistance_Setter_double(mthis, value) native "PannerNode_refDistance_Setter"; + static refDistance_Setter(mthis, value) native "PannerNode_refDistance_Setter"; static rolloffFactor_Getter(mthis) native "PannerNode_rolloffFactor_Getter"; - static rolloffFactor_Setter_double(mthis, value) native "PannerNode_rolloffFactor_Setter"; + static rolloffFactor_Setter(mthis, value) native "PannerNode_rolloffFactor_Setter"; - static setOrientation_Callback_float_float_float(mthis, x, y, z) native "PannerNode_setOrientation_Callback_float_float_float"; + static setOrientation_Callback_3(mthis, x, y, z) native "PannerNode_setOrientation_Callback"; - static setPosition_Callback_float_float_float(mthis, x, y, z) native "PannerNode_setPosition_Callback_float_float_float"; + static setPosition_Callback_3(mthis, x, y, z) native "PannerNode_setPosition_Callback"; - static setVelocity_Callback_float_float_float(mthis, x, y, z) native "PannerNode_setVelocity_Callback_float_float_float"; + static setVelocity_Callback_3(mthis, x, y, z) native "PannerNode_setVelocity_Callback"; } class BlinkPath2D { static constructorCallback() native "Path2D_constructorCallback"; - static constructorCallback_Path2D(path_OR_text) native "Path2D_constructorCallback_Path2D"; - - static constructorCallback_DOMString(path_OR_text) native "Path2D_constructorCallback_DOMString"; + static constructorCallback_1(path_OR_text) native "Path2D_constructorCallback"; - static addPath_Callback_Path2D_SVGMatrix(mthis, path, transform) native "Path2D_addPath_Callback_Path2D_SVGMatrix"; + static addPath_Callback_2(mthis, path, transform) native "Path2D_addPath_Callback"; - static addPath_Callback_Path2D(mthis, path) native "Path2D_addPath_Callback_Path2D"; + static addPath_Callback_1(mthis, path) native "Path2D_addPath_Callback"; - static arc_Callback_float_float_float_float_float_boolean(mthis, x, y, radius, startAngle, endAngle, anticlockwise) native "Path2D_arc_Callback_float_float_float_float_float_boolean"; + static arc_Callback_6(mthis, x, y, radius, startAngle, endAngle, anticlockwise) native "Path2D_arc_Callback"; - static arcTo_Callback_float_float_float_float_float(mthis, x1, y1, x2, y2, radius) native "Path2D_arcTo_Callback_float_float_float_float_float"; + static arcTo_Callback_5(mthis, x1, y1, x2, y2, radius) native "Path2D_arcTo_Callback"; - static bezierCurveTo_Callback_float_float_float_float_float_float(mthis, cp1x, cp1y, cp2x, cp2y, x, y) native "Path2D_bezierCurveTo_Callback_float_float_float_float_float_float"; + static bezierCurveTo_Callback_6(mthis, cp1x, cp1y, cp2x, cp2y, x, y) native "Path2D_bezierCurveTo_Callback"; static closePath_Callback(mthis) native "Path2D_closePath_Callback"; - static ellipse_Callback_float_float_float_float_float_float_float_boolean(mthis, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) native "Path2D_ellipse_Callback_float_float_float_float_float_float_float_boolean"; + static ellipse_Callback_8(mthis, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) native "Path2D_ellipse_Callback"; - static lineTo_Callback_float_float(mthis, x, y) native "Path2D_lineTo_Callback_float_float"; + static lineTo_Callback_2(mthis, x, y) native "Path2D_lineTo_Callback"; - static moveTo_Callback_float_float(mthis, x, y) native "Path2D_moveTo_Callback_float_float"; + static moveTo_Callback_2(mthis, x, y) native "Path2D_moveTo_Callback"; - static quadraticCurveTo_Callback_float_float_float_float(mthis, cpx, cpy, x, y) native "Path2D_quadraticCurveTo_Callback_float_float_float_float"; + static quadraticCurveTo_Callback_4(mthis, cpx, cpy, x, y) native "Path2D_quadraticCurveTo_Callback"; - static rect_Callback_float_float_float_float(mthis, x, y, width, height) native "Path2D_rect_Callback_float_float_float_float"; + static rect_Callback_4(mthis, x, y, width, height) native "Path2D_rect_Callback"; } class BlinkPerformance { @@ -5153,25 +5193,25 @@ class BlinkPerformance { static timing_Getter(mthis) native "Performance_timing_Getter"; - static clearMarks_Callback_DOMString(mthis, markName) native "Performance_clearMarks_Callback_DOMString"; + static clearMarks_Callback_1(mthis, markName) native "Performance_clearMarks_Callback"; - static clearMeasures_Callback_DOMString(mthis, measureName) native "Performance_clearMeasures_Callback_DOMString"; + static clearMeasures_Callback_1(mthis, measureName) native "Performance_clearMeasures_Callback"; static getEntries_Callback(mthis) native "Performance_getEntries_Callback"; - static getEntriesByName_Callback_DOMString_DOMString(mthis, name, entryType) native "Performance_getEntriesByName_Callback_DOMString_DOMString"; + static getEntriesByName_Callback_2(mthis, name, entryType) native "Performance_getEntriesByName_Callback"; - static getEntriesByType_Callback_DOMString(mthis, entryType) native "Performance_getEntriesByType_Callback_DOMString"; + static getEntriesByType_Callback_1(mthis, entryType) native "Performance_getEntriesByType_Callback"; - static mark_Callback_DOMString(mthis, markName) native "Performance_mark_Callback_DOMString"; + static mark_Callback_1(mthis, markName) native "Performance_mark_Callback"; - static measure_Callback_DOMString_DOMString_DOMString(mthis, measureName, startMark, endMark) native "Performance_measure_Callback_DOMString_DOMString_DOMString"; + static measure_Callback_3(mthis, measureName, startMark, endMark) native "Performance_measure_Callback"; static now_Callback(mthis) native "Performance_now_Callback"; static webkitClearResourceTimings_Callback(mthis) native "Performance_webkitClearResourceTimings_Callback"; - static webkitSetResourceTimingBufferSize_Callback_ul(mthis, maxSize) native "Performance_webkitSetResourceTimingBufferSize_Callback_unsigned long"; + static webkitSetResourceTimingBufferSize_Callback_1(mthis, maxSize) native "Performance_webkitSetResourceTimingBufferSize_Callback"; } class BlinkPerformanceEntry { @@ -5275,23 +5315,23 @@ class BlinkPlugin { static name_Getter(mthis) native "Plugin_name_Getter"; - static $__getter___Callback_DOMString(mthis, name) native "Plugin___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "Plugin___getter___Callback"; - static item_Callback_ul(mthis, index) native "Plugin_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "Plugin_item_Callback"; - static namedItem_Callback_DOMString(mthis, name) native "Plugin_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "Plugin_namedItem_Callback"; } class BlinkPluginArray { static length_Getter(mthis) native "PluginArray_length_Getter"; - static $__getter___Callback_DOMString(mthis, name) native "PluginArray___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "PluginArray___getter___Callback"; - static item_Callback_ul(mthis, index) native "PluginArray_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "PluginArray_item_Callback"; - static namedItem_Callback_DOMString(mthis, name) native "PluginArray_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "PluginArray_namedItem_Callback"; - static refresh_Callback_boolean(mthis, reload) native "PluginArray_refresh_Callback_boolean"; + static refresh_Callback_1(mthis, reload) native "PluginArray_refresh_Callback"; } class BlinkPopStateEvent { @@ -5329,7 +5369,7 @@ class BlinkPushEvent { } class BlinkPushManager { - static register_Callback_DOMString(mthis, senderId) native "PushManager_register_Callback_DOMString"; + static register_Callback_1(mthis, senderId) native "PushManager_register_Callback"; } class BlinkPushRegistration { @@ -5351,11 +5391,11 @@ class BlinkRTCDTMFSender { static track_Getter(mthis) native "RTCDTMFSender_track_Getter"; - static insertDTMF_Callback_DOMString_long_long(mthis, tones, duration, interToneGap) native "RTCDTMFSender_insertDTMF_Callback_DOMString_long_long"; + static insertDTMF_Callback_3(mthis, tones, duration, interToneGap) native "RTCDTMFSender_insertDTMF_Callback"; - static insertDTMF_Callback_DOMString_long(mthis, tones, duration) native "RTCDTMFSender_insertDTMF_Callback_DOMString_long"; + static insertDTMF_Callback_2(mthis, tones, duration) native "RTCDTMFSender_insertDTMF_Callback"; - static insertDTMF_Callback_DOMString(mthis, tones) native "RTCDTMFSender_insertDTMF_Callback_DOMString"; + static insertDTMF_Callback_1(mthis, tones) native "RTCDTMFSender_insertDTMF_Callback"; } class BlinkRTCDTMFToneChangeEvent { @@ -5367,7 +5407,7 @@ class BlinkRTCDTMFToneChangeEvent { class BlinkRTCDataChannel { static binaryType_Getter(mthis) native "RTCDataChannel_binaryType_Getter"; - static binaryType_Setter_DOMString(mthis, value) native "RTCDataChannel_binaryType_Setter"; + static binaryType_Setter(mthis, value) native "RTCDataChannel_binaryType_Setter"; static bufferedAmount_Getter(mthis) native "RTCDataChannel_bufferedAmount_Getter"; @@ -5391,13 +5431,7 @@ class BlinkRTCDataChannel { static close_Callback(mthis) native "RTCDataChannel_close_Callback"; - static send_Callback_DOMString(mthis, data) native "RTCDataChannel_send_Callback_DOMString"; - - static send_Callback_Blob(mthis, data) native "RTCDataChannel_send_Callback_Blob"; - - static send_Callback_ArrayBufferView(mthis, data) native "RTCDataChannel_send_Callback_ArrayBufferView"; - - static send_Callback_ArrayBuffer(mthis, data) native "RTCDataChannel_send_Callback_ArrayBuffer"; + static send_Callback_1(mthis, data) native "RTCDataChannel_send_Callback"; } class BlinkRTCDataChannelEvent { @@ -5405,19 +5439,19 @@ class BlinkRTCDataChannelEvent { } class BlinkRTCIceCandidate { - static constructorCallback_Dictionary(dictionary) native "RTCIceCandidate_constructorCallback_Dictionary"; + static constructorCallback_1(dictionary) native "RTCIceCandidate_constructorCallback"; static candidate_Getter(mthis) native "RTCIceCandidate_candidate_Getter"; - static candidate_Setter_DOMString(mthis, value) native "RTCIceCandidate_candidate_Setter"; + static candidate_Setter(mthis, value) native "RTCIceCandidate_candidate_Setter"; static sdpMLineIndex_Getter(mthis) native "RTCIceCandidate_sdpMLineIndex_Getter"; - static sdpMLineIndex_Setter_us(mthis, value) native "RTCIceCandidate_sdpMLineIndex_Setter"; + static sdpMLineIndex_Setter(mthis, value) native "RTCIceCandidate_sdpMLineIndex_Setter"; static sdpMid_Getter(mthis) native "RTCIceCandidate_sdpMid_Getter"; - static sdpMid_Setter_DOMString(mthis, value) native "RTCIceCandidate_sdpMid_Setter"; + static sdpMid_Setter(mthis, value) native "RTCIceCandidate_sdpMid_Setter"; } class BlinkRTCIceCandidateEvent { @@ -5425,9 +5459,9 @@ class BlinkRTCIceCandidateEvent { } class BlinkRTCPeerConnection { - static constructorCallback_Dictionary_Dictionary(rtcConfiguration, mediaConstraints) native "RTCPeerConnection_constructorCallback_Dictionary_Dictionary"; + static constructorCallback_2(rtcConfiguration, mediaConstraints) native "RTCPeerConnection_constructorCallback"; - static constructorCallback_Dictionary(rtcConfiguration) native "RTCPeerConnection_constructorCallback_Dictionary"; + static constructorCallback_1(rtcConfiguration) native "RTCPeerConnection_constructorCallback"; static iceConnectionState_Getter(mthis) native "RTCPeerConnection_iceConnectionState_Getter"; @@ -5439,49 +5473,61 @@ class BlinkRTCPeerConnection { static signalingState_Getter(mthis) native "RTCPeerConnection_signalingState_Getter"; - static addIceCandidate_Callback_RTCIceCandidate_VoidCallback_RTCErrorCallback(mthis, candidate, successCallback, failureCallback) native "RTCPeerConnection_addIceCandidate_Callback_RTCIceCandidate_VoidCallback_RTCErrorCallback"; + static addIceCandidate_Callback_3(mthis, candidate, successCallback, failureCallback) native "RTCPeerConnection_addIceCandidate_Callback"; + + static addStream_Callback_2(mthis, stream, mediaConstraints) native "RTCPeerConnection_addStream_Callback"; - static addStream_Callback_MediaStream_Dictionary(mthis, stream, mediaConstraints) native "RTCPeerConnection_addStream_Callback_MediaStream_Dictionary"; + static addStream_Callback_1(mthis, stream) native "RTCPeerConnection_addStream_Callback"; static close_Callback(mthis) native "RTCPeerConnection_close_Callback"; - static createAnswer_Callback_RTCSessionDescriptionCallback_RTCErrorCallback_Dictionary(mthis, successCallback, failureCallback, mediaConstraints) native "RTCPeerConnection_createAnswer_Callback_RTCSessionDescriptionCallback_RTCErrorCallback_Dictionary"; + static createAnswer_Callback_3(mthis, successCallback, failureCallback, mediaConstraints) native "RTCPeerConnection_createAnswer_Callback"; - static createDTMFSender_Callback_MediaStreamTrack(mthis, track) native "RTCPeerConnection_createDTMFSender_Callback_MediaStreamTrack"; + static createAnswer_Callback_2(mthis, successCallback, failureCallback) native "RTCPeerConnection_createAnswer_Callback"; - static createDataChannel_Callback_DOMString_Dictionary(mthis, label, options) native "RTCPeerConnection_createDataChannel_Callback_DOMString_Dictionary"; + static createDTMFSender_Callback_1(mthis, track) native "RTCPeerConnection_createDTMFSender_Callback"; - static createOffer_Callback_RTCSessionDescriptionCallback_RTCErrorCallback_Dictionary(mthis, successCallback, failureCallback, rtcOfferOptions) native "RTCPeerConnection_createOffer_Callback_RTCSessionDescriptionCallback_RTCErrorCallback_Dictionary"; + static createDataChannel_Callback_2(mthis, label, options) native "RTCPeerConnection_createDataChannel_Callback"; + + static createDataChannel_Callback_1(mthis, label) native "RTCPeerConnection_createDataChannel_Callback"; + + static createOffer_Callback_3(mthis, successCallback, failureCallback, rtcOfferOptions) native "RTCPeerConnection_createOffer_Callback"; + + static createOffer_Callback_2(mthis, successCallback, failureCallback) native "RTCPeerConnection_createOffer_Callback"; static getLocalStreams_Callback(mthis) native "RTCPeerConnection_getLocalStreams_Callback"; static getRemoteStreams_Callback(mthis) native "RTCPeerConnection_getRemoteStreams_Callback"; - static getStats_Callback_RTCStatsCallback_MediaStreamTrack(mthis, successCallback, selector) native "RTCPeerConnection_getStats_Callback_RTCStatsCallback_MediaStreamTrack"; + static getStats_Callback_2(mthis, successCallback, selector) native "RTCPeerConnection_getStats_Callback"; + + static getStreamById_Callback_1(mthis, streamId) native "RTCPeerConnection_getStreamById_Callback"; - static getStreamById_Callback_DOMString(mthis, streamId) native "RTCPeerConnection_getStreamById_Callback_DOMString"; + static removeStream_Callback_1(mthis, stream) native "RTCPeerConnection_removeStream_Callback"; - static removeStream_Callback_MediaStream(mthis, stream) native "RTCPeerConnection_removeStream_Callback_MediaStream"; + static setLocalDescription_Callback_3(mthis, description, successCallback, failureCallback) native "RTCPeerConnection_setLocalDescription_Callback"; - static setLocalDescription_Callback_RTCSessionDescription_VoidCallback_RTCErrorCallback(mthis, description, successCallback, failureCallback) native "RTCPeerConnection_setLocalDescription_Callback_RTCSessionDescription_VoidCallback_RTCErrorCallback"; + static setRemoteDescription_Callback_3(mthis, description, successCallback, failureCallback) native "RTCPeerConnection_setRemoteDescription_Callback"; - static setRemoteDescription_Callback_RTCSessionDescription_VoidCallback_RTCErrorCallback(mthis, description, successCallback, failureCallback) native "RTCPeerConnection_setRemoteDescription_Callback_RTCSessionDescription_VoidCallback_RTCErrorCallback"; + static updateIce_Callback_2(mthis, configuration, mediaConstraints) native "RTCPeerConnection_updateIce_Callback"; - static updateIce_Callback_Dictionary_Dictionary(mthis, configuration, mediaConstraints) native "RTCPeerConnection_updateIce_Callback_Dictionary_Dictionary"; + static updateIce_Callback_1(mthis, configuration) native "RTCPeerConnection_updateIce_Callback"; + + static updateIce_Callback(mthis) native "RTCPeerConnection_updateIce_Callback"; } class BlinkRTCSessionDescription { - static constructorCallback_Dictionary(descriptionInitDict) native "RTCSessionDescription_constructorCallback_Dictionary"; + static constructorCallback_1(descriptionInitDict) native "RTCSessionDescription_constructorCallback"; static constructorCallback() native "RTCSessionDescription_constructorCallback"; static sdp_Getter(mthis) native "RTCSessionDescription_sdp_Getter"; - static sdp_Setter_DOMString(mthis, value) native "RTCSessionDescription_sdp_Setter"; + static sdp_Setter(mthis, value) native "RTCSessionDescription_sdp_Setter"; static type_Getter(mthis) native "RTCSessionDescription_type_Getter"; - static type_Setter_DOMString(mthis, value) native "RTCSessionDescription_type_Setter"; + static type_Setter(mthis, value) native "RTCSessionDescription_type_Setter"; } class BlinkRTCStatsReport { @@ -5497,13 +5543,13 @@ class BlinkRTCStatsReport { static names_Callback(mthis) native "RTCStatsReport_names_Callback"; - static stat_Callback_DOMString(mthis, name) native "RTCStatsReport_stat_Callback_DOMString"; + static stat_Callback_1(mthis, name) native "RTCStatsReport_stat_Callback"; } class BlinkRTCStatsResponse { - static $__getter___Callback_DOMString(mthis, name) native "RTCStatsResponse___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "RTCStatsResponse___getter___Callback"; - static namedItem_Callback_DOMString(mthis, name) native "RTCStatsResponse_namedItem_Callback_DOMString"; + static namedItem_Callback_1(mthis, name) native "RTCStatsResponse_namedItem_Callback"; static result_Callback(mthis) native "RTCStatsResponse_result_Callback"; } @@ -5527,19 +5573,19 @@ class BlinkRange { static cloneRange_Callback(mthis) native "Range_cloneRange_Callback"; - static collapse_Callback_boolean(mthis, toStart) native "Range_collapse_Callback_boolean"; + static collapse_Callback_1(mthis, toStart) native "Range_collapse_Callback"; static collapse_Callback(mthis) native "Range_collapse_Callback"; - static comparePoint_Callback_Node_long(mthis, refNode, offset) native "Range_comparePoint_Callback_Node_long"; + static comparePoint_Callback_2(mthis, refNode, offset) native "Range_comparePoint_Callback"; - static createContextualFragment_Callback_DOMString(mthis, html) native "Range_createContextualFragment_Callback_DOMString"; + static createContextualFragment_Callback_1(mthis, html) native "Range_createContextualFragment_Callback"; static deleteContents_Callback(mthis) native "Range_deleteContents_Callback"; static detach_Callback(mthis) native "Range_detach_Callback"; - static expand_Callback_DOMString(mthis, unit) native "Range_expand_Callback_DOMString"; + static expand_Callback_1(mthis, unit) native "Range_expand_Callback"; static extractContents_Callback(mthis) native "Range_extractContents_Callback"; @@ -5547,27 +5593,27 @@ class BlinkRange { static getClientRects_Callback(mthis) native "Range_getClientRects_Callback"; - static insertNode_Callback_Node(mthis, newNode) native "Range_insertNode_Callback_Node"; + static insertNode_Callback_1(mthis, newNode) native "Range_insertNode_Callback"; - static isPointInRange_Callback_Node_long(mthis, refNode, offset) native "Range_isPointInRange_Callback_Node_long"; + static isPointInRange_Callback_2(mthis, refNode, offset) native "Range_isPointInRange_Callback"; - static selectNode_Callback_Node(mthis, refNode) native "Range_selectNode_Callback_Node"; + static selectNode_Callback_1(mthis, refNode) native "Range_selectNode_Callback"; - static selectNodeContents_Callback_Node(mthis, refNode) native "Range_selectNodeContents_Callback_Node"; + static selectNodeContents_Callback_1(mthis, refNode) native "Range_selectNodeContents_Callback"; - static setEnd_Callback_Node_long(mthis, refNode, offset) native "Range_setEnd_Callback_Node_long"; + static setEnd_Callback_2(mthis, refNode, offset) native "Range_setEnd_Callback"; - static setEndAfter_Callback_Node(mthis, refNode) native "Range_setEndAfter_Callback_Node"; + static setEndAfter_Callback_1(mthis, refNode) native "Range_setEndAfter_Callback"; - static setEndBefore_Callback_Node(mthis, refNode) native "Range_setEndBefore_Callback_Node"; + static setEndBefore_Callback_1(mthis, refNode) native "Range_setEndBefore_Callback"; - static setStart_Callback_Node_long(mthis, refNode, offset) native "Range_setStart_Callback_Node_long"; + static setStart_Callback_2(mthis, refNode, offset) native "Range_setStart_Callback"; - static setStartAfter_Callback_Node(mthis, refNode) native "Range_setStartAfter_Callback_Node"; + static setStartAfter_Callback_1(mthis, refNode) native "Range_setStartAfter_Callback"; - static setStartBefore_Callback_Node(mthis, refNode) native "Range_setStartBefore_Callback_Node"; + static setStartBefore_Callback_1(mthis, refNode) native "Range_setStartBefore_Callback"; - static surroundContents_Callback_Node(mthis, newParent) native "Range_surroundContents_Callback_Node"; + static surroundContents_Callback_1(mthis, newParent) native "Range_surroundContents_Callback"; } class BlinkReadableStream {} @@ -5581,13 +5627,9 @@ class BlinkRelatedEvent { } class BlinkRequest { - static constructorCallback_DOMString(input) native "Request_constructorCallback_DOMString"; - - static constructorCallback_DOMString_Dictionary(input, requestInitDict) native "Request_constructorCallback_DOMString_Dictionary"; + static constructorCallback_1(input) native "Request_constructorCallback"; - static constructorCallback_Request(input) native "Request_constructorCallback_Request"; - - static constructorCallback_Request_Dictionary(input, requestInitDict) native "Request_constructorCallback_Request_Dictionary"; + static constructorCallback_2(input, requestInitDict) native "Request_constructorCallback"; static credentials_Getter(mthis) native "Request_credentials_Getter"; @@ -5605,13 +5647,9 @@ class BlinkResourceProgressEvent { } class BlinkResponse { - static constructorCallback_DOMString(body) native "Response_constructorCallback_DOMString"; - - static constructorCallback_DOMString_Dictionary(body, responseInitDict) native "Response_constructorCallback_DOMString_Dictionary"; + static constructorCallback_1(body) native "Response_constructorCallback"; - static constructorCallback_Blob(body) native "Response_constructorCallback_Blob"; - - static constructorCallback_Blob_Dictionary(body, responseInitDict) native "Response_constructorCallback_Blob_Dictionary"; + static constructorCallback_2(body, responseInitDict) native "Response_constructorCallback"; } class BlinkSQLError { @@ -5631,11 +5669,11 @@ class BlinkSQLResultSet { class BlinkSQLResultSetRowList { static length_Getter(mthis) native "SQLResultSetRowList_length_Getter"; - static item_Callback_ul(mthis, index) native "SQLResultSetRowList_item_Callback"; + static item_Callback_1(mthis, index) native "SQLResultSetRowList_item_Callback"; } class BlinkSQLTransaction { - static executeSql_Callback_DOMString_A_object_A_SQLStatementCallback_SQLStatementErrorCallback(mthis, sqlStatement, arguments, callback, errorCallback) native "SQLTransaction_executeSql_Callback"; + static executeSql_Callback_4(mthis, sqlStatement, arguments, callback, errorCallback) native "SQLTransaction_executeSql_Callback"; } class BlinkSQLTransactionSync {} @@ -5649,21 +5687,21 @@ class BlinkSVGElement { static tabIndex_Getter(mthis) native "SVGElement_tabIndex_Getter"; - static tabIndex_Setter_long(mthis, value) native "SVGElement_tabIndex_Setter"; + static tabIndex_Setter(mthis, value) native "SVGElement_tabIndex_Setter"; static viewportElement_Getter(mthis) native "SVGElement_viewportElement_Getter"; static xmlbase_Getter(mthis) native "SVGElement_xmlbase_Getter"; - static xmlbase_Setter_DOMString(mthis, value) native "SVGElement_xmlbase_Setter"; + static xmlbase_Setter(mthis, value) native "SVGElement_xmlbase_Setter"; static xmllang_Getter(mthis) native "SVGElement_xmllang_Getter"; - static xmllang_Setter_DOMString(mthis, value) native "SVGElement_xmllang_Setter"; + static xmllang_Setter(mthis, value) native "SVGElement_xmllang_Setter"; static xmlspace_Getter(mthis) native "SVGElement_xmlspace_Getter"; - static xmlspace_Setter_DOMString(mthis, value) native "SVGElement_xmlspace_Setter"; + static xmlspace_Setter(mthis, value) native "SVGElement_xmlspace_Setter"; } class BlinkSVGTests { @@ -5673,7 +5711,7 @@ class BlinkSVGTests { static systemLanguage_Getter(mthis) native "SVGTests_systemLanguage_Getter"; - static hasExtension_Callback_DOMString(mthis, extension) native "SVGTests_hasExtension_Callback_DOMString"; + static hasExtension_Callback_1(mthis, extension) native "SVGTests_hasExtension_Callback"; } class BlinkSVGGraphicsElement { @@ -5689,7 +5727,7 @@ class BlinkSVGGraphicsElement { static getScreenCTM_Callback(mthis) native "SVGGraphicsElement_getScreenCTM_Callback"; - static getTransformToElement_Callback_SVGElement(mthis, element) native "SVGGraphicsElement_getTransformToElement_Callback_SVGElement"; + static getTransformToElement_Callback_1(mthis, element) native "SVGGraphicsElement_getTransformToElement_Callback"; static requiredExtensions_Getter(mthis) native "SVGGraphicsElement_requiredExtensions_Getter"; @@ -5697,7 +5735,7 @@ class BlinkSVGGraphicsElement { static systemLanguage_Getter(mthis) native "SVGGraphicsElement_systemLanguage_Getter"; - static hasExtension_Callback_DOMString(mthis, extension) native "SVGGraphicsElement_hasExtension_Callback_DOMString"; + static hasExtension_Callback_1(mthis, extension) native "SVGGraphicsElement_hasExtension_Callback"; } class BlinkSVGURIReference { @@ -5717,23 +5755,23 @@ class BlinkSVGTextContentElement { static textLength_Getter(mthis) native "SVGTextContentElement_textLength_Getter"; - static getCharNumAtPosition_Callback_SVGPoint(mthis, point) native "SVGTextContentElement_getCharNumAtPosition_Callback_SVGPoint"; + static getCharNumAtPosition_Callback_1(mthis, point) native "SVGTextContentElement_getCharNumAtPosition_Callback"; static getComputedTextLength_Callback(mthis) native "SVGTextContentElement_getComputedTextLength_Callback"; - static getEndPositionOfChar_Callback_ul(mthis, offset) native "SVGTextContentElement_getEndPositionOfChar_Callback_unsigned long"; + static getEndPositionOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getEndPositionOfChar_Callback"; - static getExtentOfChar_Callback_ul(mthis, offset) native "SVGTextContentElement_getExtentOfChar_Callback_unsigned long"; + static getExtentOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getExtentOfChar_Callback"; static getNumberOfChars_Callback(mthis) native "SVGTextContentElement_getNumberOfChars_Callback"; - static getRotationOfChar_Callback_ul(mthis, offset) native "SVGTextContentElement_getRotationOfChar_Callback_unsigned long"; + static getRotationOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getRotationOfChar_Callback"; - static getStartPositionOfChar_Callback_ul(mthis, offset) native "SVGTextContentElement_getStartPositionOfChar_Callback_unsigned long"; + static getStartPositionOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getStartPositionOfChar_Callback"; - static getSubStringLength_Callback_ul_ul(mthis, offset, length) native "SVGTextContentElement_getSubStringLength_Callback_unsigned long_unsigned long"; + static getSubStringLength_Callback_2(mthis, offset, length) native "SVGTextContentElement_getSubStringLength_Callback"; - static selectSubString_Callback_ul_ul(mthis, offset, length) native "SVGTextContentElement_selectSubString_Callback_unsigned long_unsigned long"; + static selectSubString_Callback_2(mthis, offset, length) native "SVGTextContentElement_selectSubString_Callback"; } class BlinkSVGTextPositioningElement { @@ -5751,11 +5789,11 @@ class BlinkSVGTextPositioningElement { class BlinkSVGAltGlyphElement { static format_Getter(mthis) native "SVGAltGlyphElement_format_Getter"; - static format_Setter_DOMString(mthis, value) native "SVGAltGlyphElement_format_Setter"; + static format_Setter(mthis, value) native "SVGAltGlyphElement_format_Setter"; static glyphRef_Getter(mthis) native "SVGAltGlyphElement_glyphRef_Getter"; - static glyphRef_Setter_DOMString(mthis, value) native "SVGAltGlyphElement_glyphRef_Setter"; + static glyphRef_Setter(mthis, value) native "SVGAltGlyphElement_glyphRef_Setter"; static href_Getter(mthis) native "SVGAltGlyphElement_href_Getter"; } @@ -5767,19 +5805,19 @@ class BlinkSVGAngle { static value_Getter(mthis) native "SVGAngle_value_Getter"; - static value_Setter_float(mthis, value) native "SVGAngle_value_Setter"; + static value_Setter(mthis, value) native "SVGAngle_value_Setter"; static valueAsString_Getter(mthis) native "SVGAngle_valueAsString_Getter"; - static valueAsString_Setter_DOMString(mthis, value) native "SVGAngle_valueAsString_Setter"; + static valueAsString_Setter(mthis, value) native "SVGAngle_valueAsString_Setter"; static valueInSpecifiedUnits_Getter(mthis) native "SVGAngle_valueInSpecifiedUnits_Getter"; - static valueInSpecifiedUnits_Setter_float(mthis, value) native "SVGAngle_valueInSpecifiedUnits_Setter"; + static valueInSpecifiedUnits_Setter(mthis, value) native "SVGAngle_valueInSpecifiedUnits_Setter"; - static convertToSpecifiedUnits_Callback_us(mthis, unitType) native "SVGAngle_convertToSpecifiedUnits_Callback_unsigned short"; + static convertToSpecifiedUnits_Callback_1(mthis, unitType) native "SVGAngle_convertToSpecifiedUnits_Callback"; - static newValueSpecifiedUnits_Callback_us_float(mthis, unitType, valueInSpecifiedUnits) native "SVGAngle_newValueSpecifiedUnits_Callback_unsigned short_float"; + static newValueSpecifiedUnits_Callback_2(mthis, unitType, valueInSpecifiedUnits) native "SVGAngle_newValueSpecifiedUnits_Callback"; } class BlinkSVGAnimationElement { @@ -5787,11 +5825,11 @@ class BlinkSVGAnimationElement { static beginElement_Callback(mthis) native "SVGAnimationElement_beginElement_Callback"; - static beginElementAt_Callback_float(mthis, offset) native "SVGAnimationElement_beginElementAt_Callback_float"; + static beginElementAt_Callback_1(mthis, offset) native "SVGAnimationElement_beginElementAt_Callback"; static endElement_Callback(mthis) native "SVGAnimationElement_endElement_Callback"; - static endElementAt_Callback_float(mthis, offset) native "SVGAnimationElement_endElementAt_Callback_float"; + static endElementAt_Callback_1(mthis, offset) native "SVGAnimationElement_endElementAt_Callback"; static getCurrentTime_Callback(mthis) native "SVGAnimationElement_getCurrentTime_Callback"; @@ -5805,7 +5843,7 @@ class BlinkSVGAnimationElement { static systemLanguage_Getter(mthis) native "SVGAnimationElement_systemLanguage_Getter"; - static hasExtension_Callback_DOMString(mthis, extension) native "SVGAnimationElement_hasExtension_Callback_DOMString"; + static hasExtension_Callback_1(mthis, extension) native "SVGAnimationElement_hasExtension_Callback"; } class BlinkSVGAnimateElement {} @@ -5825,7 +5863,7 @@ class BlinkSVGAnimatedBoolean { static baseVal_Getter(mthis) native "SVGAnimatedBoolean_baseVal_Getter"; - static baseVal_Setter_boolean(mthis, value) native "SVGAnimatedBoolean_baseVal_Setter"; + static baseVal_Setter(mthis, value) native "SVGAnimatedBoolean_baseVal_Setter"; } class BlinkSVGAnimatedEnumeration { @@ -5833,7 +5871,7 @@ class BlinkSVGAnimatedEnumeration { static baseVal_Getter(mthis) native "SVGAnimatedEnumeration_baseVal_Getter"; - static baseVal_Setter_us(mthis, value) native "SVGAnimatedEnumeration_baseVal_Setter"; + static baseVal_Setter(mthis, value) native "SVGAnimatedEnumeration_baseVal_Setter"; } class BlinkSVGAnimatedInteger { @@ -5841,7 +5879,7 @@ class BlinkSVGAnimatedInteger { static baseVal_Getter(mthis) native "SVGAnimatedInteger_baseVal_Getter"; - static baseVal_Setter_long(mthis, value) native "SVGAnimatedInteger_baseVal_Setter"; + static baseVal_Setter(mthis, value) native "SVGAnimatedInteger_baseVal_Setter"; } class BlinkSVGAnimatedLength { @@ -5861,7 +5899,7 @@ class BlinkSVGAnimatedNumber { static baseVal_Getter(mthis) native "SVGAnimatedNumber_baseVal_Getter"; - static baseVal_Setter_float(mthis, value) native "SVGAnimatedNumber_baseVal_Setter"; + static baseVal_Setter(mthis, value) native "SVGAnimatedNumber_baseVal_Setter"; } class BlinkSVGAnimatedNumberList { @@ -5887,7 +5925,7 @@ class BlinkSVGAnimatedString { static baseVal_Getter(mthis) native "SVGAnimatedString_baseVal_Getter"; - static baseVal_Setter_DOMString(mthis, value) native "SVGAnimatedString_baseVal_Setter"; + static baseVal_Setter(mthis, value) native "SVGAnimatedString_baseVal_Setter"; } class BlinkSVGAnimatedTransformList { @@ -5897,9 +5935,9 @@ class BlinkSVGAnimatedTransformList { } class BlinkSVGGeometryElement { - static isPointInFill_Callback_SVGPoint(mthis, point) native "SVGGeometryElement_isPointInFill_Callback_SVGPoint"; + static isPointInFill_Callback_1(mthis, point) native "SVGGeometryElement_isPointInFill_Callback"; - static isPointInStroke_Callback_SVGPoint(mthis, point) native "SVGGeometryElement_isPointInStroke_Callback_SVGPoint"; + static isPointInStroke_Callback_1(mthis, point) native "SVGGeometryElement_isPointInStroke_Callback"; } class BlinkSVGCircleElement { @@ -6137,7 +6175,7 @@ class BlinkSVGFEGaussianBlurElement { static stdDeviationY_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationY_Getter"; - static setStdDeviation_Callback_float_float(mthis, stdDeviationX, stdDeviationY) native "SVGFEGaussianBlurElement_setStdDeviation_Callback_float_float"; + static setStdDeviation_Callback_2(mthis, stdDeviationX, stdDeviationY) native "SVGFEGaussianBlurElement_setStdDeviation_Callback"; static height_Getter(mthis) native "SVGFEGaussianBlurElement_height_Getter"; @@ -6321,7 +6359,7 @@ class BlinkSVGFilterElement { static y_Getter(mthis) native "SVGFilterElement_y_Getter"; - static setFilterRes_Callback_ul_ul(mthis, filterResX, filterResY) native "SVGFilterElement_setFilterRes_Callback_unsigned long_unsigned long"; + static setFilterRes_Callback_2(mthis, filterResX, filterResY) native "SVGFilterElement_setFilterRes_Callback"; static href_Getter(mthis) native "SVGFilterElement_href_Getter"; } @@ -6391,19 +6429,19 @@ class BlinkSVGLength { static value_Getter(mthis) native "SVGLength_value_Getter"; - static value_Setter_float(mthis, value) native "SVGLength_value_Setter"; + static value_Setter(mthis, value) native "SVGLength_value_Setter"; static valueAsString_Getter(mthis) native "SVGLength_valueAsString_Getter"; - static valueAsString_Setter_DOMString(mthis, value) native "SVGLength_valueAsString_Setter"; + static valueAsString_Setter(mthis, value) native "SVGLength_valueAsString_Setter"; static valueInSpecifiedUnits_Getter(mthis) native "SVGLength_valueInSpecifiedUnits_Getter"; - static valueInSpecifiedUnits_Setter_float(mthis, value) native "SVGLength_valueInSpecifiedUnits_Setter"; + static valueInSpecifiedUnits_Setter(mthis, value) native "SVGLength_valueInSpecifiedUnits_Setter"; - static convertToSpecifiedUnits_Callback_us(mthis, unitType) native "SVGLength_convertToSpecifiedUnits_Callback_unsigned short"; + static convertToSpecifiedUnits_Callback_1(mthis, unitType) native "SVGLength_convertToSpecifiedUnits_Callback"; - static newValueSpecifiedUnits_Callback_us_float(mthis, unitType, valueInSpecifiedUnits) native "SVGLength_newValueSpecifiedUnits_Callback_unsigned short_float"; + static newValueSpecifiedUnits_Callback_2(mthis, unitType, valueInSpecifiedUnits) native "SVGLength_newValueSpecifiedUnits_Callback"; } class BlinkSVGLengthList { @@ -6411,21 +6449,21 @@ class BlinkSVGLengthList { static numberOfItems_Getter(mthis) native "SVGLengthList_numberOfItems_Getter"; - static $__setter___Callback_ul_SVGLength(mthis, index, value) native "SVGLengthList___setter___Callback_unsigned long_SVGLength"; + static $__setter___Callback_2(mthis, index, value) native "SVGLengthList___setter___Callback"; - static appendItem_Callback_SVGLength(mthis, item) native "SVGLengthList_appendItem_Callback_SVGLength"; + static appendItem_Callback_1(mthis, item) native "SVGLengthList_appendItem_Callback"; static clear_Callback(mthis) native "SVGLengthList_clear_Callback"; - static getItem_Callback_ul(mthis, index) native "SVGLengthList_getItem_Callback_unsigned long"; + static getItem_Callback_1(mthis, index) native "SVGLengthList_getItem_Callback"; - static initialize_Callback_SVGLength(mthis, item) native "SVGLengthList_initialize_Callback_SVGLength"; + static initialize_Callback_1(mthis, item) native "SVGLengthList_initialize_Callback"; - static insertItemBefore_Callback_SVGLength_ul(mthis, item, index) native "SVGLengthList_insertItemBefore_Callback_SVGLength_unsigned long"; + static insertItemBefore_Callback_2(mthis, item, index) native "SVGLengthList_insertItemBefore_Callback"; - static removeItem_Callback_ul(mthis, index) native "SVGLengthList_removeItem_Callback_unsigned long"; + static removeItem_Callback_1(mthis, index) native "SVGLengthList_removeItem_Callback"; - static replaceItem_Callback_SVGLength_ul(mthis, item, index) native "SVGLengthList_replaceItem_Callback_SVGLength_unsigned long"; + static replaceItem_Callback_2(mthis, item, index) native "SVGLengthList_replaceItem_Callback"; } class BlinkSVGLineElement { @@ -6465,7 +6503,7 @@ class BlinkSVGMarkerElement { static refY_Getter(mthis) native "SVGMarkerElement_refY_Getter"; - static setOrientToAngle_Callback_SVGAngle(mthis, angle) native "SVGMarkerElement_setOrientToAngle_Callback_SVGAngle"; + static setOrientToAngle_Callback_1(mthis, angle) native "SVGMarkerElement_setOrientToAngle_Callback"; static setOrientToAuto_Callback(mthis) native "SVGMarkerElement_setOrientToAuto_Callback"; @@ -6493,33 +6531,33 @@ class BlinkSVGMaskElement { static systemLanguage_Getter(mthis) native "SVGMaskElement_systemLanguage_Getter"; - static hasExtension_Callback_DOMString(mthis, extension) native "SVGMaskElement_hasExtension_Callback_DOMString"; + static hasExtension_Callback_1(mthis, extension) native "SVGMaskElement_hasExtension_Callback"; } class BlinkSVGMatrix { static a_Getter(mthis) native "SVGMatrix_a_Getter"; - static a_Setter_double(mthis, value) native "SVGMatrix_a_Setter"; + static a_Setter(mthis, value) native "SVGMatrix_a_Setter"; static b_Getter(mthis) native "SVGMatrix_b_Getter"; - static b_Setter_double(mthis, value) native "SVGMatrix_b_Setter"; + static b_Setter(mthis, value) native "SVGMatrix_b_Setter"; static c_Getter(mthis) native "SVGMatrix_c_Getter"; - static c_Setter_double(mthis, value) native "SVGMatrix_c_Setter"; + static c_Setter(mthis, value) native "SVGMatrix_c_Setter"; static d_Getter(mthis) native "SVGMatrix_d_Getter"; - static d_Setter_double(mthis, value) native "SVGMatrix_d_Setter"; + static d_Setter(mthis, value) native "SVGMatrix_d_Setter"; static e_Getter(mthis) native "SVGMatrix_e_Getter"; - static e_Setter_double(mthis, value) native "SVGMatrix_e_Setter"; + static e_Setter(mthis, value) native "SVGMatrix_e_Setter"; static f_Getter(mthis) native "SVGMatrix_f_Getter"; - static f_Setter_double(mthis, value) native "SVGMatrix_f_Setter"; + static f_Setter(mthis, value) native "SVGMatrix_f_Setter"; static flipX_Callback(mthis) native "SVGMatrix_flipX_Callback"; @@ -6527,21 +6565,21 @@ class BlinkSVGMatrix { static inverse_Callback(mthis) native "SVGMatrix_inverse_Callback"; - static multiply_Callback_SVGMatrix(mthis, secondMatrix) native "SVGMatrix_multiply_Callback_SVGMatrix"; + static multiply_Callback_1(mthis, secondMatrix) native "SVGMatrix_multiply_Callback"; - static rotate_Callback_float(mthis, angle) native "SVGMatrix_rotate_Callback_float"; + static rotate_Callback_1(mthis, angle) native "SVGMatrix_rotate_Callback"; - static rotateFromVector_Callback_float_float(mthis, x, y) native "SVGMatrix_rotateFromVector_Callback_float_float"; + static rotateFromVector_Callback_2(mthis, x, y) native "SVGMatrix_rotateFromVector_Callback"; - static scale_Callback_float(mthis, scaleFactor) native "SVGMatrix_scale_Callback_float"; + static scale_Callback_1(mthis, scaleFactor) native "SVGMatrix_scale_Callback"; - static scaleNonUniform_Callback_float_float(mthis, scaleFactorX, scaleFactorY) native "SVGMatrix_scaleNonUniform_Callback_float_float"; + static scaleNonUniform_Callback_2(mthis, scaleFactorX, scaleFactorY) native "SVGMatrix_scaleNonUniform_Callback"; - static skewX_Callback_float(mthis, angle) native "SVGMatrix_skewX_Callback_float"; + static skewX_Callback_1(mthis, angle) native "SVGMatrix_skewX_Callback"; - static skewY_Callback_float(mthis, angle) native "SVGMatrix_skewY_Callback_float"; + static skewY_Callback_1(mthis, angle) native "SVGMatrix_skewY_Callback"; - static translate_Callback_float_float(mthis, x, y) native "SVGMatrix_translate_Callback_float_float"; + static translate_Callback_2(mthis, x, y) native "SVGMatrix_translate_Callback"; } class BlinkSVGMetadataElement {} @@ -6551,7 +6589,7 @@ class BlinkSVGMissingGlyphElement {} class BlinkSVGNumber { static value_Getter(mthis) native "SVGNumber_value_Getter"; - static value_Setter_float(mthis, value) native "SVGNumber_value_Setter"; + static value_Setter(mthis, value) native "SVGNumber_value_Setter"; } class BlinkSVGNumberList { @@ -6559,21 +6597,21 @@ class BlinkSVGNumberList { static numberOfItems_Getter(mthis) native "SVGNumberList_numberOfItems_Getter"; - static $__setter___Callback_ul_SVGNumber(mthis, index, value) native "SVGNumberList___setter___Callback_unsigned long_SVGNumber"; + static $__setter___Callback_2(mthis, index, value) native "SVGNumberList___setter___Callback"; - static appendItem_Callback_SVGNumber(mthis, item) native "SVGNumberList_appendItem_Callback_SVGNumber"; + static appendItem_Callback_1(mthis, item) native "SVGNumberList_appendItem_Callback"; static clear_Callback(mthis) native "SVGNumberList_clear_Callback"; - static getItem_Callback_ul(mthis, index) native "SVGNumberList_getItem_Callback_unsigned long"; + static getItem_Callback_1(mthis, index) native "SVGNumberList_getItem_Callback"; - static initialize_Callback_SVGNumber(mthis, item) native "SVGNumberList_initialize_Callback_SVGNumber"; + static initialize_Callback_1(mthis, item) native "SVGNumberList_initialize_Callback"; - static insertItemBefore_Callback_SVGNumber_ul(mthis, item, index) native "SVGNumberList_insertItemBefore_Callback_SVGNumber_unsigned long"; + static insertItemBefore_Callback_2(mthis, item, index) native "SVGNumberList_insertItemBefore_Callback"; - static removeItem_Callback_ul(mthis, index) native "SVGNumberList_removeItem_Callback_unsigned long"; + static removeItem_Callback_1(mthis, index) native "SVGNumberList_removeItem_Callback"; - static replaceItem_Callback_SVGNumber_ul(mthis, item, index) native "SVGNumberList_replaceItem_Callback_SVGNumber_unsigned long"; + static replaceItem_Callback_2(mthis, item, index) native "SVGNumberList_replaceItem_Callback"; } class BlinkSVGPathElement { @@ -6587,47 +6625,47 @@ class BlinkSVGPathElement { static pathSegList_Getter(mthis) native "SVGPathElement_pathSegList_Getter"; - static createSVGPathSegArcAbs_Callback_float_float_float_float_float_boolean_boolean(mthis, x, y, r1, r2, angle, largeArcFlag, sweepFlag) native "SVGPathElement_createSVGPathSegArcAbs_Callback_float_float_float_float_float_boolean_boolean"; + static createSVGPathSegArcAbs_Callback_7(mthis, x, y, r1, r2, angle, largeArcFlag, sweepFlag) native "SVGPathElement_createSVGPathSegArcAbs_Callback"; - static createSVGPathSegArcRel_Callback_float_float_float_float_float_boolean_boolean(mthis, x, y, r1, r2, angle, largeArcFlag, sweepFlag) native "SVGPathElement_createSVGPathSegArcRel_Callback_float_float_float_float_float_boolean_boolean"; + static createSVGPathSegArcRel_Callback_7(mthis, x, y, r1, r2, angle, largeArcFlag, sweepFlag) native "SVGPathElement_createSVGPathSegArcRel_Callback"; static createSVGPathSegClosePath_Callback(mthis) native "SVGPathElement_createSVGPathSegClosePath_Callback"; - static createSVGPathSegCurvetoCubicAbs_Callback_float_float_float_float_float_float(mthis, x, y, x1, y1, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback_float_float_float_float_float_float"; + static createSVGPathSegCurvetoCubicAbs_Callback_6(mthis, x, y, x1, y1, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback"; - static createSVGPathSegCurvetoCubicRel_Callback_float_float_float_float_float_float(mthis, x, y, x1, y1, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback_float_float_float_float_float_float"; + static createSVGPathSegCurvetoCubicRel_Callback_6(mthis, x, y, x1, y1, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback"; - static createSVGPathSegCurvetoCubicSmoothAbs_Callback_float_float_float_float(mthis, x, y, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback_float_float_float_float"; + static createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(mthis, x, y, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback"; - static createSVGPathSegCurvetoCubicSmoothRel_Callback_float_float_float_float(mthis, x, y, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback_float_float_float_float"; + static createSVGPathSegCurvetoCubicSmoothRel_Callback_4(mthis, x, y, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback"; - static createSVGPathSegCurvetoQuadraticAbs_Callback_float_float_float_float(mthis, x, y, x1, y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback_float_float_float_float"; + static createSVGPathSegCurvetoQuadraticAbs_Callback_4(mthis, x, y, x1, y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback"; - static createSVGPathSegCurvetoQuadraticRel_Callback_float_float_float_float(mthis, x, y, x1, y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback_float_float_float_float"; + static createSVGPathSegCurvetoQuadraticRel_Callback_4(mthis, x, y, x1, y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback"; - static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_float_float(mthis, x, y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_float_float"; + static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback"; - static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_float_float(mthis, x, y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback_float_float"; + static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback"; - static createSVGPathSegLinetoAbs_Callback_float_float(mthis, x, y) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback_float_float"; + static createSVGPathSegLinetoAbs_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback"; - static createSVGPathSegLinetoHorizontalAbs_Callback_float(mthis, x) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback_float"; + static createSVGPathSegLinetoHorizontalAbs_Callback_1(mthis, x) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback"; - static createSVGPathSegLinetoHorizontalRel_Callback_float(mthis, x) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback_float"; + static createSVGPathSegLinetoHorizontalRel_Callback_1(mthis, x) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback"; - static createSVGPathSegLinetoRel_Callback_float_float(mthis, x, y) native "SVGPathElement_createSVGPathSegLinetoRel_Callback_float_float"; + static createSVGPathSegLinetoRel_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegLinetoRel_Callback"; - static createSVGPathSegLinetoVerticalAbs_Callback_float(mthis, y) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback_float"; + static createSVGPathSegLinetoVerticalAbs_Callback_1(mthis, y) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback"; - static createSVGPathSegLinetoVerticalRel_Callback_float(mthis, y) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback_float"; + static createSVGPathSegLinetoVerticalRel_Callback_1(mthis, y) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback"; - static createSVGPathSegMovetoAbs_Callback_float_float(mthis, x, y) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback_float_float"; + static createSVGPathSegMovetoAbs_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback"; - static createSVGPathSegMovetoRel_Callback_float_float(mthis, x, y) native "SVGPathElement_createSVGPathSegMovetoRel_Callback_float_float"; + static createSVGPathSegMovetoRel_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegMovetoRel_Callback"; - static getPathSegAtLength_Callback_float(mthis, distance) native "SVGPathElement_getPathSegAtLength_Callback_float"; + static getPathSegAtLength_Callback_1(mthis, distance) native "SVGPathElement_getPathSegAtLength_Callback"; - static getPointAtLength_Callback_float(mthis, distance) native "SVGPathElement_getPointAtLength_Callback_float"; + static getPointAtLength_Callback_1(mthis, distance) native "SVGPathElement_getPointAtLength_Callback"; static getTotalLength_Callback(mthis) native "SVGPathElement_getTotalLength_Callback"; } @@ -6641,61 +6679,61 @@ class BlinkSVGPathSeg { class BlinkSVGPathSegArcAbs { static angle_Getter(mthis) native "SVGPathSegArcAbs_angle_Getter"; - static angle_Setter_float(mthis, value) native "SVGPathSegArcAbs_angle_Setter"; + static angle_Setter(mthis, value) native "SVGPathSegArcAbs_angle_Setter"; static largeArcFlag_Getter(mthis) native "SVGPathSegArcAbs_largeArcFlag_Getter"; - static largeArcFlag_Setter_boolean(mthis, value) native "SVGPathSegArcAbs_largeArcFlag_Setter"; + static largeArcFlag_Setter(mthis, value) native "SVGPathSegArcAbs_largeArcFlag_Setter"; static r1_Getter(mthis) native "SVGPathSegArcAbs_r1_Getter"; - static r1_Setter_float(mthis, value) native "SVGPathSegArcAbs_r1_Setter"; + static r1_Setter(mthis, value) native "SVGPathSegArcAbs_r1_Setter"; static r2_Getter(mthis) native "SVGPathSegArcAbs_r2_Getter"; - static r2_Setter_float(mthis, value) native "SVGPathSegArcAbs_r2_Setter"; + static r2_Setter(mthis, value) native "SVGPathSegArcAbs_r2_Setter"; static sweepFlag_Getter(mthis) native "SVGPathSegArcAbs_sweepFlag_Getter"; - static sweepFlag_Setter_boolean(mthis, value) native "SVGPathSegArcAbs_sweepFlag_Setter"; + static sweepFlag_Setter(mthis, value) native "SVGPathSegArcAbs_sweepFlag_Setter"; static x_Getter(mthis) native "SVGPathSegArcAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegArcAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegArcAbs_x_Setter"; static y_Getter(mthis) native "SVGPathSegArcAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegArcAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegArcAbs_y_Setter"; } class BlinkSVGPathSegArcRel { static angle_Getter(mthis) native "SVGPathSegArcRel_angle_Getter"; - static angle_Setter_float(mthis, value) native "SVGPathSegArcRel_angle_Setter"; + static angle_Setter(mthis, value) native "SVGPathSegArcRel_angle_Setter"; static largeArcFlag_Getter(mthis) native "SVGPathSegArcRel_largeArcFlag_Getter"; - static largeArcFlag_Setter_boolean(mthis, value) native "SVGPathSegArcRel_largeArcFlag_Setter"; + static largeArcFlag_Setter(mthis, value) native "SVGPathSegArcRel_largeArcFlag_Setter"; static r1_Getter(mthis) native "SVGPathSegArcRel_r1_Getter"; - static r1_Setter_float(mthis, value) native "SVGPathSegArcRel_r1_Setter"; + static r1_Setter(mthis, value) native "SVGPathSegArcRel_r1_Setter"; static r2_Getter(mthis) native "SVGPathSegArcRel_r2_Getter"; - static r2_Setter_float(mthis, value) native "SVGPathSegArcRel_r2_Setter"; + static r2_Setter(mthis, value) native "SVGPathSegArcRel_r2_Setter"; static sweepFlag_Getter(mthis) native "SVGPathSegArcRel_sweepFlag_Getter"; - static sweepFlag_Setter_boolean(mthis, value) native "SVGPathSegArcRel_sweepFlag_Setter"; + static sweepFlag_Setter(mthis, value) native "SVGPathSegArcRel_sweepFlag_Setter"; static x_Getter(mthis) native "SVGPathSegArcRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegArcRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegArcRel_x_Setter"; static y_Getter(mthis) native "SVGPathSegArcRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegArcRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegArcRel_y_Setter"; } class BlinkSVGPathSegClosePath {} @@ -6703,189 +6741,189 @@ class BlinkSVGPathSegClosePath {} class BlinkSVGPathSegCurvetoCubicAbs { static x_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_x_Setter"; static x1_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x1_Getter"; - static x1_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicAbs_x1_Setter"; + static x1_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_x1_Setter"; static x2_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x2_Getter"; - static x2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicAbs_x2_Setter"; + static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_x2_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_y_Setter"; static y1_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y1_Getter"; - static y1_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicAbs_y1_Setter"; + static y1_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_y1_Setter"; static y2_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y2_Getter"; - static y2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicAbs_y2_Setter"; + static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_y2_Setter"; } class BlinkSVGPathSegCurvetoCubicRel { static x_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_x_Setter"; static x1_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x1_Getter"; - static x1_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicRel_x1_Setter"; + static x1_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_x1_Setter"; static x2_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x2_Getter"; - static x2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicRel_x2_Setter"; + static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_x2_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_y_Setter"; static y1_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y1_Getter"; - static y1_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicRel_y1_Setter"; + static y1_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_y1_Setter"; static y2_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y2_Getter"; - static y2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicRel_y2_Setter"; + static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_y2_Setter"; } class BlinkSVGPathSegCurvetoCubicSmoothAbs { static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_x_Setter"; static x2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Getter"; - static x2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Setter"; + static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_y_Setter"; static y2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Getter"; - static y2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Setter"; + static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Setter"; } class BlinkSVGPathSegCurvetoCubicSmoothRel { static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_x_Setter"; static x2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x2_Getter"; - static x2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_x2_Setter"; + static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_x2_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_y_Setter"; static y2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y2_Getter"; - static y2_Setter_float(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_y2_Setter"; + static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_y2_Setter"; } class BlinkSVGPathSegCurvetoQuadraticAbs { static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_x_Setter"; static x1_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x1_Getter"; - static x1_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_x1_Setter"; + static x1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_x1_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_y_Setter"; static y1_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y1_Getter"; - static y1_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_y1_Setter"; + static y1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_y1_Setter"; } class BlinkSVGPathSegCurvetoQuadraticRel { static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_x_Setter"; static x1_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x1_Getter"; - static x1_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticRel_x1_Setter"; + static x1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_x1_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_y_Setter"; static y1_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y1_Getter"; - static y1_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticRel_y1_Setter"; + static y1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_y1_Setter"; } class BlinkSVGPathSegCurvetoQuadraticSmoothAbs { static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Setter"; } class BlinkSVGPathSegCurvetoQuadraticSmoothRel { static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Setter"; static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Setter"; } class BlinkSVGPathSegLinetoAbs { static x_Getter(mthis) native "SVGPathSegLinetoAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegLinetoAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegLinetoAbs_x_Setter"; static y_Getter(mthis) native "SVGPathSegLinetoAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegLinetoAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegLinetoAbs_y_Setter"; } class BlinkSVGPathSegLinetoHorizontalAbs { static x_Getter(mthis) native "SVGPathSegLinetoHorizontalAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegLinetoHorizontalAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegLinetoHorizontalAbs_x_Setter"; } class BlinkSVGPathSegLinetoHorizontalRel { static x_Getter(mthis) native "SVGPathSegLinetoHorizontalRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegLinetoHorizontalRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegLinetoHorizontalRel_x_Setter"; } class BlinkSVGPathSegLinetoRel { static x_Getter(mthis) native "SVGPathSegLinetoRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegLinetoRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegLinetoRel_x_Setter"; static y_Getter(mthis) native "SVGPathSegLinetoRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegLinetoRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegLinetoRel_y_Setter"; } class BlinkSVGPathSegLinetoVerticalAbs { static y_Getter(mthis) native "SVGPathSegLinetoVerticalAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegLinetoVerticalAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegLinetoVerticalAbs_y_Setter"; } class BlinkSVGPathSegLinetoVerticalRel { static y_Getter(mthis) native "SVGPathSegLinetoVerticalRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegLinetoVerticalRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegLinetoVerticalRel_y_Setter"; } class BlinkSVGPathSegList { @@ -6893,41 +6931,41 @@ class BlinkSVGPathSegList { static numberOfItems_Getter(mthis) native "SVGPathSegList_numberOfItems_Getter"; - static $__setter___Callback_ul_SVGPathSeg(mthis, index, value) native "SVGPathSegList___setter___Callback_unsigned long_SVGPathSeg"; + static $__setter___Callback_2(mthis, index, value) native "SVGPathSegList___setter___Callback"; - static appendItem_Callback_SVGPathSeg(mthis, newItem) native "SVGPathSegList_appendItem_Callback_SVGPathSeg"; + static appendItem_Callback_1(mthis, newItem) native "SVGPathSegList_appendItem_Callback"; static clear_Callback(mthis) native "SVGPathSegList_clear_Callback"; - static getItem_Callback_ul(mthis, index) native "SVGPathSegList_getItem_Callback_unsigned long"; + static getItem_Callback_1(mthis, index) native "SVGPathSegList_getItem_Callback"; - static initialize_Callback_SVGPathSeg(mthis, newItem) native "SVGPathSegList_initialize_Callback_SVGPathSeg"; + static initialize_Callback_1(mthis, newItem) native "SVGPathSegList_initialize_Callback"; - static insertItemBefore_Callback_SVGPathSeg_ul(mthis, newItem, index) native "SVGPathSegList_insertItemBefore_Callback_SVGPathSeg_unsigned long"; + static insertItemBefore_Callback_2(mthis, newItem, index) native "SVGPathSegList_insertItemBefore_Callback"; - static removeItem_Callback_ul(mthis, index) native "SVGPathSegList_removeItem_Callback_unsigned long"; + static removeItem_Callback_1(mthis, index) native "SVGPathSegList_removeItem_Callback"; - static replaceItem_Callback_SVGPathSeg_ul(mthis, newItem, index) native "SVGPathSegList_replaceItem_Callback_SVGPathSeg_unsigned long"; + static replaceItem_Callback_2(mthis, newItem, index) native "SVGPathSegList_replaceItem_Callback"; } class BlinkSVGPathSegMovetoAbs { static x_Getter(mthis) native "SVGPathSegMovetoAbs_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegMovetoAbs_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegMovetoAbs_x_Setter"; static y_Getter(mthis) native "SVGPathSegMovetoAbs_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegMovetoAbs_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegMovetoAbs_y_Setter"; } class BlinkSVGPathSegMovetoRel { static x_Getter(mthis) native "SVGPathSegMovetoRel_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPathSegMovetoRel_x_Setter"; + static x_Setter(mthis, value) native "SVGPathSegMovetoRel_x_Setter"; static y_Getter(mthis) native "SVGPathSegMovetoRel_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPathSegMovetoRel_y_Setter"; + static y_Setter(mthis, value) native "SVGPathSegMovetoRel_y_Setter"; } class BlinkSVGPatternElement { @@ -6955,7 +6993,7 @@ class BlinkSVGPatternElement { static systemLanguage_Getter(mthis) native "SVGPatternElement_systemLanguage_Getter"; - static hasExtension_Callback_DOMString(mthis, extension) native "SVGPatternElement_hasExtension_Callback_DOMString"; + static hasExtension_Callback_1(mthis, extension) native "SVGPatternElement_hasExtension_Callback"; static href_Getter(mthis) native "SVGPatternElement_href_Getter"; } @@ -6963,13 +7001,13 @@ class BlinkSVGPatternElement { class BlinkSVGPoint { static x_Getter(mthis) native "SVGPoint_x_Getter"; - static x_Setter_float(mthis, value) native "SVGPoint_x_Setter"; + static x_Setter(mthis, value) native "SVGPoint_x_Setter"; static y_Getter(mthis) native "SVGPoint_y_Getter"; - static y_Setter_float(mthis, value) native "SVGPoint_y_Setter"; + static y_Setter(mthis, value) native "SVGPoint_y_Setter"; - static matrixTransform_Callback_SVGMatrix(mthis, matrix) native "SVGPoint_matrixTransform_Callback_SVGMatrix"; + static matrixTransform_Callback_1(mthis, matrix) native "SVGPoint_matrixTransform_Callback"; } class BlinkSVGPointList { @@ -6977,21 +7015,21 @@ class BlinkSVGPointList { static numberOfItems_Getter(mthis) native "SVGPointList_numberOfItems_Getter"; - static $__setter___Callback_ul_SVGPoint(mthis, index, value) native "SVGPointList___setter___Callback_unsigned long_SVGPoint"; + static $__setter___Callback_2(mthis, index, value) native "SVGPointList___setter___Callback"; - static appendItem_Callback_SVGPoint(mthis, item) native "SVGPointList_appendItem_Callback_SVGPoint"; + static appendItem_Callback_1(mthis, item) native "SVGPointList_appendItem_Callback"; static clear_Callback(mthis) native "SVGPointList_clear_Callback"; - static getItem_Callback_ul(mthis, index) native "SVGPointList_getItem_Callback_unsigned long"; + static getItem_Callback_1(mthis, index) native "SVGPointList_getItem_Callback"; - static initialize_Callback_SVGPoint(mthis, item) native "SVGPointList_initialize_Callback_SVGPoint"; + static initialize_Callback_1(mthis, item) native "SVGPointList_initialize_Callback"; - static insertItemBefore_Callback_SVGPoint_ul(mthis, item, index) native "SVGPointList_insertItemBefore_Callback_SVGPoint_unsigned long"; + static insertItemBefore_Callback_2(mthis, item, index) native "SVGPointList_insertItemBefore_Callback"; - static removeItem_Callback_ul(mthis, index) native "SVGPointList_removeItem_Callback_unsigned long"; + static removeItem_Callback_1(mthis, index) native "SVGPointList_removeItem_Callback"; - static replaceItem_Callback_SVGPoint_ul(mthis, item, index) native "SVGPointList_replaceItem_Callback_SVGPoint_unsigned long"; + static replaceItem_Callback_2(mthis, item, index) native "SVGPointList_replaceItem_Callback"; } class BlinkSVGPolygonElement { @@ -7009,11 +7047,11 @@ class BlinkSVGPolylineElement { class BlinkSVGPreserveAspectRatio { static align_Getter(mthis) native "SVGPreserveAspectRatio_align_Getter"; - static align_Setter_us(mthis, value) native "SVGPreserveAspectRatio_align_Setter"; + static align_Setter(mthis, value) native "SVGPreserveAspectRatio_align_Setter"; static meetOrSlice_Getter(mthis) native "SVGPreserveAspectRatio_meetOrSlice_Getter"; - static meetOrSlice_Setter_us(mthis, value) native "SVGPreserveAspectRatio_meetOrSlice_Setter"; + static meetOrSlice_Setter(mthis, value) native "SVGPreserveAspectRatio_meetOrSlice_Setter"; } class BlinkSVGRadialGradientElement { @@ -7033,19 +7071,19 @@ class BlinkSVGRadialGradientElement { class BlinkSVGRect { static height_Getter(mthis) native "SVGRect_height_Getter"; - static height_Setter_float(mthis, value) native "SVGRect_height_Setter"; + static height_Setter(mthis, value) native "SVGRect_height_Setter"; static width_Getter(mthis) native "SVGRect_width_Getter"; - static width_Setter_float(mthis, value) native "SVGRect_width_Setter"; + static width_Setter(mthis, value) native "SVGRect_width_Setter"; static x_Getter(mthis) native "SVGRect_x_Getter"; - static x_Setter_float(mthis, value) native "SVGRect_x_Setter"; + static x_Setter(mthis, value) native "SVGRect_x_Setter"; static y_Getter(mthis) native "SVGRect_y_Getter"; - static y_Setter_float(mthis, value) native "SVGRect_y_Setter"; + static y_Setter(mthis, value) native "SVGRect_y_Setter"; } class BlinkSVGRectElement { @@ -7067,13 +7105,13 @@ class BlinkSVGRenderingIntent {} class BlinkSVGZoomAndPan { static zoomAndPan_Getter(mthis) native "SVGZoomAndPan_zoomAndPan_Getter"; - static zoomAndPan_Setter_us(mthis, value) native "SVGZoomAndPan_zoomAndPan_Setter"; + static zoomAndPan_Setter(mthis, value) native "SVGZoomAndPan_zoomAndPan_Setter"; } class BlinkSVGSVGElement { static currentScale_Getter(mthis) native "SVGSVGElement_currentScale_Getter"; - static currentScale_Setter_float(mthis, value) native "SVGSVGElement_currentScale_Setter"; + static currentScale_Setter(mthis, value) native "SVGSVGElement_currentScale_Setter"; static currentTranslate_Getter(mthis) native "SVGSVGElement_currentTranslate_Getter"; @@ -7101,9 +7139,9 @@ class BlinkSVGSVGElement { static animationsPaused_Callback(mthis) native "SVGSVGElement_animationsPaused_Callback"; - static checkEnclosure_Callback_SVGElement_SVGRect(mthis, element, rect) native "SVGSVGElement_checkEnclosure_Callback_SVGElement_SVGRect"; + static checkEnclosure_Callback_2(mthis, element, rect) native "SVGSVGElement_checkEnclosure_Callback"; - static checkIntersection_Callback_SVGElement_SVGRect(mthis, element, rect) native "SVGSVGElement_checkIntersection_Callback_SVGElement_SVGRect"; + static checkIntersection_Callback_2(mthis, element, rect) native "SVGSVGElement_checkIntersection_Callback"; static createSVGAngle_Callback(mthis) native "SVGSVGElement_createSVGAngle_Callback"; @@ -7119,7 +7157,7 @@ class BlinkSVGSVGElement { static createSVGTransform_Callback(mthis) native "SVGSVGElement_createSVGTransform_Callback"; - static createSVGTransformFromMatrix_Callback_SVGMatrix(mthis, matrix) native "SVGSVGElement_createSVGTransformFromMatrix_Callback_SVGMatrix"; + static createSVGTransformFromMatrix_Callback_1(mthis, matrix) native "SVGSVGElement_createSVGTransformFromMatrix_Callback"; static deselectAll_Callback(mthis) native "SVGSVGElement_deselectAll_Callback"; @@ -7127,21 +7165,21 @@ class BlinkSVGSVGElement { static getCurrentTime_Callback(mthis) native "SVGSVGElement_getCurrentTime_Callback"; - static getElementById_Callback_DOMString(mthis, elementId) native "SVGSVGElement_getElementById_Callback_DOMString"; + static getElementById_Callback_1(mthis, elementId) native "SVGSVGElement_getElementById_Callback"; - static getEnclosureList_Callback_SVGRect_SVGElement(mthis, rect, referenceElement) native "SVGSVGElement_getEnclosureList_Callback_SVGRect_SVGElement"; + static getEnclosureList_Callback_2(mthis, rect, referenceElement) native "SVGSVGElement_getEnclosureList_Callback"; - static getIntersectionList_Callback_SVGRect_SVGElement(mthis, rect, referenceElement) native "SVGSVGElement_getIntersectionList_Callback_SVGRect_SVGElement"; + static getIntersectionList_Callback_2(mthis, rect, referenceElement) native "SVGSVGElement_getIntersectionList_Callback"; static pauseAnimations_Callback(mthis) native "SVGSVGElement_pauseAnimations_Callback"; - static setCurrentTime_Callback_float(mthis, seconds) native "SVGSVGElement_setCurrentTime_Callback_float"; + static setCurrentTime_Callback_1(mthis, seconds) native "SVGSVGElement_setCurrentTime_Callback"; - static suspendRedraw_Callback_ul(mthis, maxWaitMilliseconds) native "SVGSVGElement_suspendRedraw_Callback_unsigned long"; + static suspendRedraw_Callback_1(mthis, maxWaitMilliseconds) native "SVGSVGElement_suspendRedraw_Callback"; static unpauseAnimations_Callback(mthis) native "SVGSVGElement_unpauseAnimations_Callback"; - static unsuspendRedraw_Callback_ul(mthis, suspendHandleId) native "SVGSVGElement_unsuspendRedraw_Callback_unsigned long"; + static unsuspendRedraw_Callback_1(mthis, suspendHandleId) native "SVGSVGElement_unsuspendRedraw_Callback"; static unsuspendRedrawAll_Callback(mthis) native "SVGSVGElement_unsuspendRedrawAll_Callback"; @@ -7151,13 +7189,13 @@ class BlinkSVGSVGElement { static zoomAndPan_Getter(mthis) native "SVGSVGElement_zoomAndPan_Getter"; - static zoomAndPan_Setter_us(mthis, value) native "SVGSVGElement_zoomAndPan_Setter"; + static zoomAndPan_Setter(mthis, value) native "SVGSVGElement_zoomAndPan_Setter"; } class BlinkSVGScriptElement { static type_Getter(mthis) native "SVGScriptElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "SVGScriptElement_type_Setter"; + static type_Setter(mthis, value) native "SVGScriptElement_type_Setter"; static href_Getter(mthis) native "SVGScriptElement_href_Getter"; } @@ -7173,41 +7211,41 @@ class BlinkSVGStringList { static numberOfItems_Getter(mthis) native "SVGStringList_numberOfItems_Getter"; - static $__setter___Callback_ul_DOMString(mthis, index, value) native "SVGStringList___setter___Callback_unsigned long_DOMString"; + static $__setter___Callback_2(mthis, index, value) native "SVGStringList___setter___Callback"; - static appendItem_Callback_DOMString(mthis, item) native "SVGStringList_appendItem_Callback_DOMString"; + static appendItem_Callback_1(mthis, item) native "SVGStringList_appendItem_Callback"; static clear_Callback(mthis) native "SVGStringList_clear_Callback"; - static getItem_Callback_ul(mthis, index) native "SVGStringList_getItem_Callback_unsigned long"; + static getItem_Callback_1(mthis, index) native "SVGStringList_getItem_Callback"; - static initialize_Callback_DOMString(mthis, item) native "SVGStringList_initialize_Callback_DOMString"; + static initialize_Callback_1(mthis, item) native "SVGStringList_initialize_Callback"; - static insertItemBefore_Callback_DOMString_ul(mthis, item, index) native "SVGStringList_insertItemBefore_Callback_DOMString_unsigned long"; + static insertItemBefore_Callback_2(mthis, item, index) native "SVGStringList_insertItemBefore_Callback"; - static removeItem_Callback_ul(mthis, index) native "SVGStringList_removeItem_Callback_unsigned long"; + static removeItem_Callback_1(mthis, index) native "SVGStringList_removeItem_Callback"; - static replaceItem_Callback_DOMString_ul(mthis, item, index) native "SVGStringList_replaceItem_Callback_DOMString_unsigned long"; + static replaceItem_Callback_2(mthis, item, index) native "SVGStringList_replaceItem_Callback"; } class BlinkSVGStyleElement { static disabled_Getter(mthis) native "SVGStyleElement_disabled_Getter"; - static disabled_Setter_boolean(mthis, value) native "SVGStyleElement_disabled_Setter"; + static disabled_Setter(mthis, value) native "SVGStyleElement_disabled_Setter"; static media_Getter(mthis) native "SVGStyleElement_media_Getter"; - static media_Setter_DOMString(mthis, value) native "SVGStyleElement_media_Setter"; + static media_Setter(mthis, value) native "SVGStyleElement_media_Setter"; static sheet_Getter(mthis) native "SVGStyleElement_sheet_Getter"; static title_Getter(mthis) native "SVGStyleElement_title_Getter"; - static title_Setter_DOMString(mthis, value) native "SVGStyleElement_title_Setter"; + static title_Setter(mthis, value) native "SVGStyleElement_title_Setter"; static type_Getter(mthis) native "SVGStyleElement_type_Getter"; - static type_Setter_DOMString(mthis, value) native "SVGStyleElement_type_Setter"; + static type_Setter(mthis, value) native "SVGStyleElement_type_Setter"; } class BlinkSVGSwitchElement {} @@ -7241,17 +7279,17 @@ class BlinkSVGTransform { static type_Getter(mthis) native "SVGTransform_type_Getter"; - static setMatrix_Callback_SVGMatrix(mthis, matrix) native "SVGTransform_setMatrix_Callback_SVGMatrix"; + static setMatrix_Callback_1(mthis, matrix) native "SVGTransform_setMatrix_Callback"; - static setRotate_Callback_float_float_float(mthis, angle, cx, cy) native "SVGTransform_setRotate_Callback_float_float_float"; + static setRotate_Callback_3(mthis, angle, cx, cy) native "SVGTransform_setRotate_Callback"; - static setScale_Callback_float_float(mthis, sx, sy) native "SVGTransform_setScale_Callback_float_float"; + static setScale_Callback_2(mthis, sx, sy) native "SVGTransform_setScale_Callback"; - static setSkewX_Callback_float(mthis, angle) native "SVGTransform_setSkewX_Callback_float"; + static setSkewX_Callback_1(mthis, angle) native "SVGTransform_setSkewX_Callback"; - static setSkewY_Callback_float(mthis, angle) native "SVGTransform_setSkewY_Callback_float"; + static setSkewY_Callback_1(mthis, angle) native "SVGTransform_setSkewY_Callback"; - static setTranslate_Callback_float_float(mthis, tx, ty) native "SVGTransform_setTranslate_Callback_float_float"; + static setTranslate_Callback_2(mthis, tx, ty) native "SVGTransform_setTranslate_Callback"; } class BlinkSVGTransformList { @@ -7259,25 +7297,25 @@ class BlinkSVGTransformList { static numberOfItems_Getter(mthis) native "SVGTransformList_numberOfItems_Getter"; - static $__setter___Callback_ul_SVGTransform(mthis, index, value) native "SVGTransformList___setter___Callback_unsigned long_SVGTransform"; + static $__setter___Callback_2(mthis, index, value) native "SVGTransformList___setter___Callback"; - static appendItem_Callback_SVGTransform(mthis, item) native "SVGTransformList_appendItem_Callback_SVGTransform"; + static appendItem_Callback_1(mthis, item) native "SVGTransformList_appendItem_Callback"; static clear_Callback(mthis) native "SVGTransformList_clear_Callback"; static consolidate_Callback(mthis) native "SVGTransformList_consolidate_Callback"; - static createSVGTransformFromMatrix_Callback_SVGMatrix(mthis, matrix) native "SVGTransformList_createSVGTransformFromMatrix_Callback_SVGMatrix"; + static createSVGTransformFromMatrix_Callback_1(mthis, matrix) native "SVGTransformList_createSVGTransformFromMatrix_Callback"; - static getItem_Callback_ul(mthis, index) native "SVGTransformList_getItem_Callback_unsigned long"; + static getItem_Callback_1(mthis, index) native "SVGTransformList_getItem_Callback"; - static initialize_Callback_SVGTransform(mthis, item) native "SVGTransformList_initialize_Callback_SVGTransform"; + static initialize_Callback_1(mthis, item) native "SVGTransformList_initialize_Callback"; - static insertItemBefore_Callback_SVGTransform_ul(mthis, item, index) native "SVGTransformList_insertItemBefore_Callback_SVGTransform_unsigned long"; + static insertItemBefore_Callback_2(mthis, item, index) native "SVGTransformList_insertItemBefore_Callback"; - static removeItem_Callback_ul(mthis, index) native "SVGTransformList_removeItem_Callback_unsigned long"; + static removeItem_Callback_1(mthis, index) native "SVGTransformList_removeItem_Callback"; - static replaceItem_Callback_SVGTransform_ul(mthis, item, index) native "SVGTransformList_replaceItem_Callback_SVGTransform_unsigned long"; + static replaceItem_Callback_2(mthis, item, index) native "SVGTransformList_replaceItem_Callback"; } class BlinkSVGUnitTypes {} @@ -7305,7 +7343,7 @@ class BlinkSVGViewElement { static zoomAndPan_Getter(mthis) native "SVGViewElement_zoomAndPan_Getter"; - static zoomAndPan_Setter_us(mthis, value) native "SVGViewElement_zoomAndPan_Setter"; + static zoomAndPan_Setter(mthis, value) native "SVGViewElement_zoomAndPan_Setter"; } class BlinkSVGViewSpec { @@ -7327,7 +7365,7 @@ class BlinkSVGViewSpec { static zoomAndPan_Getter(mthis) native "SVGViewSpec_zoomAndPan_Getter"; - static zoomAndPan_Setter_us(mthis, value) native "SVGViewSpec_zoomAndPan_Setter"; + static zoomAndPan_Setter(mthis, value) native "SVGViewSpec_zoomAndPan_Setter"; } class BlinkSVGZoomEvent { @@ -7367,7 +7405,7 @@ class BlinkScreenOrientation { static type_Getter(mthis) native "ScreenOrientation_type_Getter"; - static lock_Callback_DOMString(mthis, orientation) native "ScreenOrientation_lock_Callback_DOMString"; + static lock_Callback_1(mthis, orientation) native "ScreenOrientation_lock_Callback"; static unlock_Callback(mthis) native "ScreenOrientation_unlock_Callback"; } @@ -7375,7 +7413,7 @@ class BlinkScreenOrientation { class BlinkScriptProcessorNode { static bufferSize_Getter(mthis) native "ScriptProcessorNode_bufferSize_Getter"; - static setEventListener_Callback_EventListener(mthis, eventListener) native "ScriptProcessorNode_setEventListener_Callback"; + static setEventListener_Callback_1(mthis, eventListener) native "ScriptProcessorNode_setEventListener_Callback"; } class BlinkSecurityPolicyViolationEvent { @@ -7425,39 +7463,39 @@ class BlinkSelection { static type_Getter(mthis) native "Selection_type_Getter"; - static addRange_Callback_Range(mthis, range) native "Selection_addRange_Callback_Range"; + static addRange_Callback_1(mthis, range) native "Selection_addRange_Callback"; - static collapse_Callback_Node_long(mthis, node, offset) native "Selection_collapse_Callback_Node_long"; + static collapse_Callback_2(mthis, node, offset) native "Selection_collapse_Callback"; - static collapse_Callback_Node(mthis, node) native "Selection_collapse_Callback_Node"; + static collapse_Callback_1(mthis, node) native "Selection_collapse_Callback"; static collapseToEnd_Callback(mthis) native "Selection_collapseToEnd_Callback"; static collapseToStart_Callback(mthis) native "Selection_collapseToStart_Callback"; - static containsNode_Callback_Node_boolean(mthis, node, allowPartial) native "Selection_containsNode_Callback_Node_boolean"; + static containsNode_Callback_2(mthis, node, allowPartial) native "Selection_containsNode_Callback"; static deleteFromDocument_Callback(mthis) native "Selection_deleteFromDocument_Callback"; static empty_Callback(mthis) native "Selection_empty_Callback"; - static extend_Callback_Node_long(mthis, node, offset) native "Selection_extend_Callback_Node_long"; + static extend_Callback_2(mthis, node, offset) native "Selection_extend_Callback"; - static extend_Callback_Node(mthis, node) native "Selection_extend_Callback_Node"; + static extend_Callback_1(mthis, node) native "Selection_extend_Callback"; - static getRangeAt_Callback_long(mthis, index) native "Selection_getRangeAt_Callback_long"; + static getRangeAt_Callback_1(mthis, index) native "Selection_getRangeAt_Callback"; - static modify_Callback_DOMString_DOMString_DOMString(mthis, alter, direction, granularity) native "Selection_modify_Callback_DOMString_DOMString_DOMString"; + static modify_Callback_3(mthis, alter, direction, granularity) native "Selection_modify_Callback"; static removeAllRanges_Callback(mthis) native "Selection_removeAllRanges_Callback"; - static selectAllChildren_Callback_Node(mthis, node) native "Selection_selectAllChildren_Callback_Node"; + static selectAllChildren_Callback_1(mthis, node) native "Selection_selectAllChildren_Callback"; - static setBaseAndExtent_Callback_Node_long_Node_long(mthis, baseNode, baseOffset, extentNode, extentOffset) native "Selection_setBaseAndExtent_Callback_Node_long_Node_long"; + static setBaseAndExtent_Callback_4(mthis, baseNode, baseOffset, extentNode, extentOffset) native "Selection_setBaseAndExtent_Callback"; - static setPosition_Callback_Node_long(mthis, node, offset) native "Selection_setPosition_Callback_Node_long"; + static setPosition_Callback_2(mthis, node, offset) native "Selection_setPosition_Callback"; - static setPosition_Callback_Node(mthis, node) native "Selection_setPosition_Callback_Node"; + static setPosition_Callback_1(mthis, node) native "Selection_setPosition_Callback"; } class BlinkServiceWorker {} @@ -7465,7 +7503,7 @@ class BlinkServiceWorker {} class BlinkServiceWorkerClient { static id_Getter(mthis) native "ServiceWorkerClient_id_Getter"; - static postMessage_Callback_SerializedScriptValue_SEQ_MessagePort_SEQ(mthis, message, transfer) native "ServiceWorkerClient_postMessage_Callback"; + static postMessage_Callback_2(mthis, message, transfer) native "ServiceWorkerClient_postMessage_Callback"; } class BlinkServiceWorkerClients { @@ -7483,9 +7521,11 @@ class BlinkServiceWorkerContainer { static waiting_Getter(mthis) native "ServiceWorkerContainer_waiting_Getter"; - static register_Callback_DOMString_Dictionary(mthis, url, options) native "ServiceWorkerContainer_register_Callback_DOMString_Dictionary"; + static register_Callback_2(mthis, url, options) native "ServiceWorkerContainer_register_Callback"; + + static register_Callback_1(mthis, url) native "ServiceWorkerContainer_register_Callback"; - static unregister_Callback_DOMString(mthis, scope) native "ServiceWorkerContainer_unregister_Callback_DOMString"; + static unregister_Callback_1(mthis, scope) native "ServiceWorkerContainer_unregister_Callback"; static unregister_Callback(mthis) native "ServiceWorkerContainer_unregister_Callback"; } @@ -7497,9 +7537,9 @@ class BlinkServiceWorkerGlobalScope { static scope_Getter(mthis) native "ServiceWorkerGlobalScope_scope_Getter"; - static fetch_Callback_DOMString_Dictionary(mthis, request, requestInitDict) native "ServiceWorkerGlobalScope_fetch_Callback_DOMString_Dictionary"; + static fetch_Callback_1(mthis, request) native "ServiceWorkerGlobalScope_fetch_Callback"; - static fetch_Callback_Request_Dictionary(mthis, request, requestInitDict) native "ServiceWorkerGlobalScope_fetch_Callback_Request_Dictionary"; + static fetch_Callback_2(mthis, request, requestInitDict) native "ServiceWorkerGlobalScope_fetch_Callback"; } class BlinkServiceWorkerRegistration { @@ -7521,27 +7561,27 @@ class BlinkShadowRoot { static innerHTML_Getter(mthis) native "ShadowRoot_innerHTML_Getter"; - static innerHTML_Setter_DOMString(mthis, value) native "ShadowRoot_innerHTML_Setter"; + static innerHTML_Setter(mthis, value) native "ShadowRoot_innerHTML_Setter"; static olderShadowRoot_Getter(mthis) native "ShadowRoot_olderShadowRoot_Getter"; static styleSheets_Getter(mthis) native "ShadowRoot_styleSheets_Getter"; - static cloneNode_Callback_boolean(mthis, deep) native "ShadowRoot_cloneNode_Callback_boolean"; + static cloneNode_Callback_1(mthis, deep) native "ShadowRoot_cloneNode_Callback"; - static elementFromPoint_Callback_long_long(mthis, x, y) native "ShadowRoot_elementFromPoint_Callback_long_long"; + static elementFromPoint_Callback_2(mthis, x, y) native "ShadowRoot_elementFromPoint_Callback"; - static getElementById_Callback_DOMString(mthis, elementId) native "ShadowRoot_getElementById_Callback_DOMString"; + static getElementById_Callback_1(mthis, elementId) native "ShadowRoot_getElementById_Callback"; - static getElementsByClassName_Callback_DOMString(mthis, className) native "ShadowRoot_getElementsByClassName_Callback_DOMString"; + static getElementsByClassName_Callback_1(mthis, className) native "ShadowRoot_getElementsByClassName_Callback"; - static getElementsByTagName_Callback_DOMString(mthis, tagName) native "ShadowRoot_getElementsByTagName_Callback_DOMString"; + static getElementsByTagName_Callback_1(mthis, tagName) native "ShadowRoot_getElementsByTagName_Callback"; static getSelection_Callback(mthis) native "ShadowRoot_getSelection_Callback"; } class BlinkSharedWorker { - static constructorCallback_DOMString_DOMString(scriptURL, name) native "SharedWorker_constructorCallback_DOMString_DOMString"; + static constructorCallback_2(scriptURL, name) native "SharedWorker_constructorCallback"; static port_Getter(mthis) native "SharedWorker_port_Getter"; @@ -7555,41 +7595,39 @@ class BlinkSharedWorkerGlobalScope { class BlinkSourceBuffer { static appendWindowEnd_Getter(mthis) native "SourceBuffer_appendWindowEnd_Getter"; - static appendWindowEnd_Setter_double(mthis, value) native "SourceBuffer_appendWindowEnd_Setter"; + static appendWindowEnd_Setter(mthis, value) native "SourceBuffer_appendWindowEnd_Setter"; static appendWindowStart_Getter(mthis) native "SourceBuffer_appendWindowStart_Getter"; - static appendWindowStart_Setter_double(mthis, value) native "SourceBuffer_appendWindowStart_Setter"; + static appendWindowStart_Setter(mthis, value) native "SourceBuffer_appendWindowStart_Setter"; static buffered_Getter(mthis) native "SourceBuffer_buffered_Getter"; static mode_Getter(mthis) native "SourceBuffer_mode_Getter"; - static mode_Setter_DOMString(mthis, value) native "SourceBuffer_mode_Setter"; + static mode_Setter(mthis, value) native "SourceBuffer_mode_Setter"; static timestampOffset_Getter(mthis) native "SourceBuffer_timestampOffset_Getter"; - static timestampOffset_Setter_double(mthis, value) native "SourceBuffer_timestampOffset_Setter"; + static timestampOffset_Setter(mthis, value) native "SourceBuffer_timestampOffset_Setter"; static updating_Getter(mthis) native "SourceBuffer_updating_Getter"; static abort_Callback(mthis) native "SourceBuffer_abort_Callback"; - static appendBuffer_Callback_ArrayBuffer(mthis, data) native "SourceBuffer_appendBuffer_Callback_ArrayBuffer"; + static appendBuffer_Callback_1(mthis, data) native "SourceBuffer_appendBuffer_Callback"; - static appendStream_Callback_Stream_ull(mthis, stream, maxSize) native "SourceBuffer_appendStream_Callback_Stream_unsigned long long"; + static appendStream_Callback_2(mthis, stream, maxSize) native "SourceBuffer_appendStream_Callback"; - static appendStream_Callback_Stream(mthis, stream) native "SourceBuffer_appendStream_Callback_Stream"; + static appendStream_Callback_1(mthis, stream) native "SourceBuffer_appendStream_Callback"; - static appendBuffer_Callback_ArrayBufferView(mthis, data) native "SourceBuffer_appendBuffer_Callback_ArrayBufferView"; - - static remove_Callback_double_double(mthis, start, end) native "SourceBuffer_remove_Callback_double_double"; + static remove_Callback_2(mthis, start, end) native "SourceBuffer_remove_Callback"; } class BlinkSourceBufferList { static length_Getter(mthis) native "SourceBufferList_length_Getter"; - static item_Callback_ul(mthis, index) native "SourceBufferList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "SourceBufferList_item_Callback"; } class BlinkSourceInfo { @@ -7607,11 +7645,11 @@ class BlinkSpeechGrammar { static src_Getter(mthis) native "SpeechGrammar_src_Getter"; - static src_Setter_DOMString(mthis, value) native "SpeechGrammar_src_Setter"; + static src_Setter(mthis, value) native "SpeechGrammar_src_Setter"; static weight_Getter(mthis) native "SpeechGrammar_weight_Getter"; - static weight_Setter_float(mthis, value) native "SpeechGrammar_weight_Setter"; + static weight_Setter(mthis, value) native "SpeechGrammar_weight_Setter"; } class BlinkSpeechGrammarList { @@ -7619,15 +7657,15 @@ class BlinkSpeechGrammarList { static length_Getter(mthis) native "SpeechGrammarList_length_Getter"; - static addFromString_Callback_DOMString_float(mthis, string, weight) native "SpeechGrammarList_addFromString_Callback_DOMString_float"; + static addFromString_Callback_2(mthis, string, weight) native "SpeechGrammarList_addFromString_Callback"; - static addFromString_Callback_DOMString(mthis, string) native "SpeechGrammarList_addFromString_Callback_DOMString"; + static addFromString_Callback_1(mthis, string) native "SpeechGrammarList_addFromString_Callback"; - static addFromUri_Callback_DOMString_float(mthis, src, weight) native "SpeechGrammarList_addFromUri_Callback_DOMString_float"; + static addFromUri_Callback_2(mthis, src, weight) native "SpeechGrammarList_addFromUri_Callback"; - static addFromUri_Callback_DOMString(mthis, src) native "SpeechGrammarList_addFromUri_Callback_DOMString"; + static addFromUri_Callback_1(mthis, src) native "SpeechGrammarList_addFromUri_Callback"; - static item_Callback_ul(mthis, index) native "SpeechGrammarList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "SpeechGrammarList_item_Callback"; } class BlinkSpeechRecognition { @@ -7635,23 +7673,23 @@ class BlinkSpeechRecognition { static continuous_Getter(mthis) native "SpeechRecognition_continuous_Getter"; - static continuous_Setter_boolean(mthis, value) native "SpeechRecognition_continuous_Setter"; + static continuous_Setter(mthis, value) native "SpeechRecognition_continuous_Setter"; static grammars_Getter(mthis) native "SpeechRecognition_grammars_Getter"; - static grammars_Setter_SpeechGrammarList(mthis, value) native "SpeechRecognition_grammars_Setter"; + static grammars_Setter(mthis, value) native "SpeechRecognition_grammars_Setter"; static interimResults_Getter(mthis) native "SpeechRecognition_interimResults_Getter"; - static interimResults_Setter_boolean(mthis, value) native "SpeechRecognition_interimResults_Setter"; + static interimResults_Setter(mthis, value) native "SpeechRecognition_interimResults_Setter"; static lang_Getter(mthis) native "SpeechRecognition_lang_Getter"; - static lang_Setter_DOMString(mthis, value) native "SpeechRecognition_lang_Setter"; + static lang_Setter(mthis, value) native "SpeechRecognition_lang_Setter"; static maxAlternatives_Getter(mthis) native "SpeechRecognition_maxAlternatives_Getter"; - static maxAlternatives_Setter_ul(mthis, value) native "SpeechRecognition_maxAlternatives_Setter"; + static maxAlternatives_Setter(mthis, value) native "SpeechRecognition_maxAlternatives_Setter"; static abort_Callback(mthis) native "SpeechRecognition_abort_Callback"; @@ -7691,13 +7729,13 @@ class BlinkSpeechRecognitionResult { static length_Getter(mthis) native "SpeechRecognitionResult_length_Getter"; - static item_Callback_ul(mthis, index) native "SpeechRecognitionResult_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "SpeechRecognitionResult_item_Callback"; } class BlinkSpeechRecognitionResultList { static length_Getter(mthis) native "SpeechRecognitionResultList_length_Getter"; - static item_Callback_ul(mthis, index) native "SpeechRecognitionResultList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "SpeechRecognitionResultList_item_Callback"; } class BlinkSpeechSynthesis { @@ -7715,7 +7753,7 @@ class BlinkSpeechSynthesis { static resume_Callback(mthis) native "SpeechSynthesis_resume_Callback"; - static speak_Callback_SpeechSynthesisUtterance(mthis, utterance) native "SpeechSynthesis_speak_Callback_SpeechSynthesisUtterance"; + static speak_Callback_1(mthis, utterance) native "SpeechSynthesis_speak_Callback"; } class BlinkSpeechSynthesisEvent { @@ -7727,31 +7765,31 @@ class BlinkSpeechSynthesisEvent { } class BlinkSpeechSynthesisUtterance { - static constructorCallback_DOMString(text) native "SpeechSynthesisUtterance_constructorCallback_DOMString"; + static constructorCallback_1(text) native "SpeechSynthesisUtterance_constructorCallback"; static lang_Getter(mthis) native "SpeechSynthesisUtterance_lang_Getter"; - static lang_Setter_DOMString(mthis, value) native "SpeechSynthesisUtterance_lang_Setter"; + static lang_Setter(mthis, value) native "SpeechSynthesisUtterance_lang_Setter"; static pitch_Getter(mthis) native "SpeechSynthesisUtterance_pitch_Getter"; - static pitch_Setter_float(mthis, value) native "SpeechSynthesisUtterance_pitch_Setter"; + static pitch_Setter(mthis, value) native "SpeechSynthesisUtterance_pitch_Setter"; static rate_Getter(mthis) native "SpeechSynthesisUtterance_rate_Getter"; - static rate_Setter_float(mthis, value) native "SpeechSynthesisUtterance_rate_Setter"; + static rate_Setter(mthis, value) native "SpeechSynthesisUtterance_rate_Setter"; static text_Getter(mthis) native "SpeechSynthesisUtterance_text_Getter"; - static text_Setter_DOMString(mthis, value) native "SpeechSynthesisUtterance_text_Setter"; + static text_Setter(mthis, value) native "SpeechSynthesisUtterance_text_Setter"; static voice_Getter(mthis) native "SpeechSynthesisUtterance_voice_Getter"; - static voice_Setter_SpeechSynthesisVoice(mthis, value) native "SpeechSynthesisUtterance_voice_Setter"; + static voice_Setter(mthis, value) native "SpeechSynthesisUtterance_voice_Setter"; static volume_Getter(mthis) native "SpeechSynthesisUtterance_volume_Getter"; - static volume_Setter_float(mthis, value) native "SpeechSynthesisUtterance_volume_Setter"; + static volume_Setter(mthis, value) native "SpeechSynthesisUtterance_volume_Setter"; } class BlinkSpeechSynthesisVoice { @@ -7769,27 +7807,21 @@ class BlinkSpeechSynthesisVoice { class BlinkStorage { static length_Getter(mthis) native "Storage_length_Getter"; - static $__delete___Callback_ul(mthis, index_OR_name) native "Storage___delete___Callback_unsigned long"; - - static $__delete___Callback_DOMString(mthis, index_OR_name) native "Storage___delete___Callback_DOMString"; + static $__delete___Callback_1(mthis, index_OR_name) native "Storage___delete___Callback"; - static $__getter___Callback_ul(mthis, index_OR_name) native "Storage___getter___Callback_unsigned long"; + static $__getter___Callback_1(mthis, index_OR_name) native "Storage___getter___Callback"; - static $__getter___Callback_DOMString(mthis, index_OR_name) native "Storage___getter___Callback_DOMString"; - - static $__setter___Callback_ul_DOMString(mthis, index_OR_name, value) native "Storage___setter___Callback_unsigned long_DOMString"; - - static $__setter___Callback_DOMString_DOMString(mthis, index_OR_name, value) native "Storage___setter___Callback_DOMString_DOMString"; + static $__setter___Callback_2(mthis, index_OR_name, value) native "Storage___setter___Callback"; static clear_Callback(mthis) native "Storage_clear_Callback"; - static getItem_Callback_DOMString(mthis, key) native "Storage_getItem_Callback_DOMString"; + static getItem_Callback_1(mthis, key) native "Storage_getItem_Callback"; - static key_Callback_ul(mthis, index) native "Storage_key_Callback_unsigned long"; + static key_Callback_1(mthis, index) native "Storage_key_Callback"; - static removeItem_Callback_DOMString(mthis, key) native "Storage_removeItem_Callback_DOMString"; + static removeItem_Callback_1(mthis, key) native "Storage_removeItem_Callback"; - static setItem_Callback_DOMString_DOMString(mthis, key, data) native "Storage_setItem_Callback_DOMString_DOMString"; + static setItem_Callback_2(mthis, key, data) native "Storage_setItem_Callback"; } class BlinkStorageEvent { @@ -7805,7 +7837,7 @@ class BlinkStorageEvent { static url_Getter(mthis) native "StorageEvent_url_Getter"; - static initStorageEvent_Callback_DOMString_boolean_boolean_DOMString_DOMString_DOMString_DOMString_Storage(mthis, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg) native "StorageEvent_initStorageEvent_Callback_DOMString_boolean_boolean_DOMString_DOMString_DOMString_DOMString_Storage"; + static initStorageEvent_Callback_8(mthis, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg) native "StorageEvent_initStorageEvent_Callback"; } class BlinkStorageInfo { @@ -7817,9 +7849,9 @@ class BlinkStorageInfo { class BlinkStorageQuota { static supportedTypes_Getter(mthis) native "StorageQuota_supportedTypes_Getter"; - static queryInfo_Callback_DOMString(mthis, type) native "StorageQuota_queryInfo_Callback_DOMString"; + static queryInfo_Callback_1(mthis, type) native "StorageQuota_queryInfo_Callback"; - static requestPersistentQuota_Callback_ull(mthis, newQuota) native "StorageQuota_requestPersistentQuota_Callback_unsigned long long"; + static requestPersistentQuota_Callback_1(mthis, newQuota) native "StorageQuota_requestPersistentQuota_Callback"; } class BlinkStream { @@ -7829,15 +7861,15 @@ class BlinkStream { class BlinkStyleMedia { static type_Getter(mthis) native "StyleMedia_type_Getter"; - static matchMedium_Callback_DOMString(mthis, mediaquery) native "StyleMedia_matchMedium_Callback_DOMString"; + static matchMedium_Callback_1(mthis, mediaquery) native "StyleMedia_matchMedium_Callback"; } class BlinkStyleSheetList { static length_Getter(mthis) native "StyleSheetList_length_Getter"; - static $__getter___Callback_DOMString(mthis, name) native "StyleSheetList___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "StyleSheetList___getter___Callback"; - static item_Callback_ul(mthis, index) native "StyleSheetList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "StyleSheetList_item_Callback"; } class BlinkSubtleCrypto {} @@ -7845,7 +7877,7 @@ class BlinkSubtleCrypto {} class BlinkTextEvent { static data_Getter(mthis) native "TextEvent_data_Getter"; - static initTextEvent_Callback_DOMString_boolean_boolean_Window_DOMString(mthis, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg) native "TextEvent_initTextEvent_Callback_DOMString_boolean_boolean_Window_DOMString"; + static initTextEvent_Callback_5(mthis, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg) native "TextEvent_initTextEvent_Callback"; } class BlinkTextMetrics { @@ -7889,35 +7921,35 @@ class BlinkTextTrack { static mode_Getter(mthis) native "TextTrack_mode_Getter"; - static mode_Setter_DOMString(mthis, value) native "TextTrack_mode_Setter"; + static mode_Setter(mthis, value) native "TextTrack_mode_Setter"; static regions_Getter(mthis) native "TextTrack_regions_Getter"; - static addCue_Callback_TextTrackCue(mthis, cue) native "TextTrack_addCue_Callback_TextTrackCue"; + static addCue_Callback_1(mthis, cue) native "TextTrack_addCue_Callback"; - static addRegion_Callback_VTTRegion(mthis, region) native "TextTrack_addRegion_Callback_VTTRegion"; + static addRegion_Callback_1(mthis, region) native "TextTrack_addRegion_Callback"; - static removeCue_Callback_TextTrackCue(mthis, cue) native "TextTrack_removeCue_Callback_TextTrackCue"; + static removeCue_Callback_1(mthis, cue) native "TextTrack_removeCue_Callback"; - static removeRegion_Callback_VTTRegion(mthis, region) native "TextTrack_removeRegion_Callback_VTTRegion"; + static removeRegion_Callback_1(mthis, region) native "TextTrack_removeRegion_Callback"; } class BlinkTextTrackCue { static endTime_Getter(mthis) native "TextTrackCue_endTime_Getter"; - static endTime_Setter_double(mthis, value) native "TextTrackCue_endTime_Setter"; + static endTime_Setter(mthis, value) native "TextTrackCue_endTime_Setter"; static id_Getter(mthis) native "TextTrackCue_id_Getter"; - static id_Setter_DOMString(mthis, value) native "TextTrackCue_id_Setter"; + static id_Setter(mthis, value) native "TextTrackCue_id_Setter"; static pauseOnExit_Getter(mthis) native "TextTrackCue_pauseOnExit_Getter"; - static pauseOnExit_Setter_boolean(mthis, value) native "TextTrackCue_pauseOnExit_Setter"; + static pauseOnExit_Setter(mthis, value) native "TextTrackCue_pauseOnExit_Setter"; static startTime_Getter(mthis) native "TextTrackCue_startTime_Getter"; - static startTime_Setter_double(mthis, value) native "TextTrackCue_startTime_Setter"; + static startTime_Setter(mthis, value) native "TextTrackCue_startTime_Setter"; static track_Getter(mthis) native "TextTrackCue_track_Getter"; } @@ -7925,63 +7957,63 @@ class BlinkTextTrackCue { class BlinkTextTrackCueList { static length_Getter(mthis) native "TextTrackCueList_length_Getter"; - static getCueById_Callback_DOMString(mthis, id) native "TextTrackCueList_getCueById_Callback_DOMString"; + static getCueById_Callback_1(mthis, id) native "TextTrackCueList_getCueById_Callback"; - static item_Callback_ul(mthis, index) native "TextTrackCueList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "TextTrackCueList_item_Callback"; } class BlinkTextTrackList { static length_Getter(mthis) native "TextTrackList_length_Getter"; - static getTrackById_Callback_DOMString(mthis, id) native "TextTrackList_getTrackById_Callback_DOMString"; + static getTrackById_Callback_1(mthis, id) native "TextTrackList_getTrackById_Callback"; - static item_Callback_ul(mthis, index) native "TextTrackList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "TextTrackList_item_Callback"; } class BlinkTimeRanges { static length_Getter(mthis) native "TimeRanges_length_Getter"; - static end_Callback_ul(mthis, index) native "TimeRanges_end_Callback_unsigned long"; + static end_Callback_1(mthis, index) native "TimeRanges_end_Callback"; - static start_Callback_ul(mthis, index) native "TimeRanges_start_Callback_unsigned long"; + static start_Callback_1(mthis, index) native "TimeRanges_start_Callback"; } class BlinkTiming { static delay_Getter(mthis) native "Timing_delay_Getter"; - static delay_Setter_double(mthis, value) native "Timing_delay_Setter"; + static delay_Setter(mthis, value) native "Timing_delay_Setter"; static direction_Getter(mthis) native "Timing_direction_Getter"; - static direction_Setter_DOMString(mthis, value) native "Timing_direction_Setter"; + static direction_Setter(mthis, value) native "Timing_direction_Setter"; static easing_Getter(mthis) native "Timing_easing_Getter"; - static easing_Setter_DOMString(mthis, value) native "Timing_easing_Setter"; + static easing_Setter(mthis, value) native "Timing_easing_Setter"; static endDelay_Getter(mthis) native "Timing_endDelay_Getter"; - static endDelay_Setter_double(mthis, value) native "Timing_endDelay_Setter"; + static endDelay_Setter(mthis, value) native "Timing_endDelay_Setter"; static fill_Getter(mthis) native "Timing_fill_Getter"; - static fill_Setter_DOMString(mthis, value) native "Timing_fill_Setter"; + static fill_Setter(mthis, value) native "Timing_fill_Setter"; static iterationStart_Getter(mthis) native "Timing_iterationStart_Getter"; - static iterationStart_Setter_double(mthis, value) native "Timing_iterationStart_Setter"; + static iterationStart_Setter(mthis, value) native "Timing_iterationStart_Setter"; static iterations_Getter(mthis) native "Timing_iterations_Getter"; - static iterations_Setter_double(mthis, value) native "Timing_iterations_Setter"; + static iterations_Setter(mthis, value) native "Timing_iterations_Setter"; static playbackRate_Getter(mthis) native "Timing_playbackRate_Getter"; - static playbackRate_Setter_double(mthis, value) native "Timing_playbackRate_Setter"; + static playbackRate_Setter(mthis, value) native "Timing_playbackRate_Setter"; - static $__getter___Callback_DOMString(mthis, name) native "Timing___getter___Callback_DOMString"; + static $__getter___Callback_1(mthis, name) native "Timing___getter___Callback"; - static $__setter___Callback_DOMString_double(mthis, name, duration) native "Timing___setter___Callback_DOMString_double"; + static $__setter___Callback_2(mthis, name, duration) native "Timing___setter___Callback"; } class BlinkTouch { @@ -8025,13 +8057,13 @@ class BlinkTouchEvent { static touches_Getter(mthis) native "TouchEvent_touches_Getter"; - static initTouchEvent_Callback_TouchList_TouchList_TouchList_DOMString_Window_long_long_long_long_boolean_boolean_boolean_boolean(mthis, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey) native "TouchEvent_initTouchEvent_Callback_TouchList_TouchList_TouchList_DOMString_Window_long_long_long_long_boolean_boolean_boolean_boolean"; + static initTouchEvent_Callback_13(mthis, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey) native "TouchEvent_initTouchEvent_Callback"; } class BlinkTouchList { static length_Getter(mthis) native "TouchList_length_Getter"; - static item_Callback_ul(mthis, index) native "TouchList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "TouchList_item_Callback"; } class BlinkTrackEvent { @@ -8053,7 +8085,7 @@ class BlinkTransitionEvent { class BlinkTreeWalker { static currentNode_Getter(mthis) native "TreeWalker_currentNode_Getter"; - static currentNode_Setter_Node(mthis, value) native "TreeWalker_currentNode_Setter"; + static currentNode_Setter(mthis, value) native "TreeWalker_currentNode_Setter"; static filter_Getter(mthis) native "TreeWalker_filter_Getter"; @@ -8077,55 +8109,51 @@ class BlinkTreeWalker { } class BlinkURL { - static createObjectURL_Callback_Blob(blob_OR_source_OR_stream) native "URL_createObjectURL_Callback_Blob"; - - static createObjectURL_Callback_MediaSource(blob_OR_source_OR_stream) native "URL_createObjectURL_Callback_MediaSource"; - - static createObjectURL_Callback_MediaStream(blob_OR_source_OR_stream) native "URL_createObjectURL_Callback_MediaStream"; + static createObjectURL_Callback_1(blob_OR_source_OR_stream) native "URL_createObjectURL_Callback"; - static revokeObjectURL_Callback_DOMString(url) native "URL_revokeObjectURL_Callback_DOMString"; + static revokeObjectURL_Callback_1(url) native "URL_revokeObjectURL_Callback"; static hash_Getter(mthis) native "URL_hash_Getter"; - static hash_Setter_DOMString(mthis, value) native "URL_hash_Setter"; + static hash_Setter(mthis, value) native "URL_hash_Setter"; static host_Getter(mthis) native "URL_host_Getter"; - static host_Setter_DOMString(mthis, value) native "URL_host_Setter"; + static host_Setter(mthis, value) native "URL_host_Setter"; static hostname_Getter(mthis) native "URL_hostname_Getter"; - static hostname_Setter_DOMString(mthis, value) native "URL_hostname_Setter"; + static hostname_Setter(mthis, value) native "URL_hostname_Setter"; static href_Getter(mthis) native "URL_href_Getter"; - static href_Setter_DOMString(mthis, value) native "URL_href_Setter"; + static href_Setter(mthis, value) native "URL_href_Setter"; static origin_Getter(mthis) native "URL_origin_Getter"; static password_Getter(mthis) native "URL_password_Getter"; - static password_Setter_DOMString(mthis, value) native "URL_password_Setter"; + static password_Setter(mthis, value) native "URL_password_Setter"; static pathname_Getter(mthis) native "URL_pathname_Getter"; - static pathname_Setter_DOMString(mthis, value) native "URL_pathname_Setter"; + static pathname_Setter(mthis, value) native "URL_pathname_Setter"; static port_Getter(mthis) native "URL_port_Getter"; - static port_Setter_DOMString(mthis, value) native "URL_port_Setter"; + static port_Setter(mthis, value) native "URL_port_Setter"; static protocol_Getter(mthis) native "URL_protocol_Getter"; - static protocol_Setter_DOMString(mthis, value) native "URL_protocol_Setter"; + static protocol_Setter(mthis, value) native "URL_protocol_Setter"; static search_Getter(mthis) native "URL_search_Getter"; - static search_Setter_DOMString(mthis, value) native "URL_search_Setter"; + static search_Setter(mthis, value) native "URL_search_Setter"; static username_Getter(mthis) native "URL_username_Getter"; - static username_Setter_DOMString(mthis, value) native "URL_username_Setter"; + static username_Setter(mthis, value) native "URL_username_Setter"; static toString_Callback(mthis) native "URL_toString_Callback"; } @@ -8153,39 +8181,39 @@ class BlinkURLUtilsReadOnly { } class BlinkVTTCue { - static constructorCallback_double_double_DOMString(startTime, endTime, text) native "VTTCue_constructorCallback_double_double_DOMString"; + static constructorCallback_3(startTime, endTime, text) native "VTTCue_constructorCallback"; static align_Getter(mthis) native "VTTCue_align_Getter"; - static align_Setter_DOMString(mthis, value) native "VTTCue_align_Setter"; + static align_Setter(mthis, value) native "VTTCue_align_Setter"; static line_Getter(mthis) native "VTTCue_line_Getter"; - static line_Setter_long(mthis, value) native "VTTCue_line_Setter"; + static line_Setter(mthis, value) native "VTTCue_line_Setter"; static position_Getter(mthis) native "VTTCue_position_Getter"; - static position_Setter_long(mthis, value) native "VTTCue_position_Setter"; + static position_Setter(mthis, value) native "VTTCue_position_Setter"; static regionId_Getter(mthis) native "VTTCue_regionId_Getter"; - static regionId_Setter_DOMString(mthis, value) native "VTTCue_regionId_Setter"; + static regionId_Setter(mthis, value) native "VTTCue_regionId_Setter"; static size_Getter(mthis) native "VTTCue_size_Getter"; - static size_Setter_long(mthis, value) native "VTTCue_size_Setter"; + static size_Setter(mthis, value) native "VTTCue_size_Setter"; static snapToLines_Getter(mthis) native "VTTCue_snapToLines_Getter"; - static snapToLines_Setter_boolean(mthis, value) native "VTTCue_snapToLines_Setter"; + static snapToLines_Setter(mthis, value) native "VTTCue_snapToLines_Setter"; static text_Getter(mthis) native "VTTCue_text_Getter"; - static text_Setter_DOMString(mthis, value) native "VTTCue_text_Setter"; + static text_Setter(mthis, value) native "VTTCue_text_Setter"; static vertical_Getter(mthis) native "VTTCue_vertical_Getter"; - static vertical_Setter_DOMString(mthis, value) native "VTTCue_vertical_Setter"; + static vertical_Setter(mthis, value) native "VTTCue_vertical_Setter"; static getCueAsHTML_Callback(mthis) native "VTTCue_getCueAsHTML_Callback"; } @@ -8195,45 +8223,45 @@ class BlinkVTTRegion { static height_Getter(mthis) native "VTTRegion_height_Getter"; - static height_Setter_long(mthis, value) native "VTTRegion_height_Setter"; + static height_Setter(mthis, value) native "VTTRegion_height_Setter"; static id_Getter(mthis) native "VTTRegion_id_Getter"; - static id_Setter_DOMString(mthis, value) native "VTTRegion_id_Setter"; + static id_Setter(mthis, value) native "VTTRegion_id_Setter"; static regionAnchorX_Getter(mthis) native "VTTRegion_regionAnchorX_Getter"; - static regionAnchorX_Setter_double(mthis, value) native "VTTRegion_regionAnchorX_Setter"; + static regionAnchorX_Setter(mthis, value) native "VTTRegion_regionAnchorX_Setter"; static regionAnchorY_Getter(mthis) native "VTTRegion_regionAnchorY_Getter"; - static regionAnchorY_Setter_double(mthis, value) native "VTTRegion_regionAnchorY_Setter"; + static regionAnchorY_Setter(mthis, value) native "VTTRegion_regionAnchorY_Setter"; static scroll_Getter(mthis) native "VTTRegion_scroll_Getter"; - static scroll_Setter_DOMString(mthis, value) native "VTTRegion_scroll_Setter"; + static scroll_Setter(mthis, value) native "VTTRegion_scroll_Setter"; static track_Getter(mthis) native "VTTRegion_track_Getter"; static viewportAnchorX_Getter(mthis) native "VTTRegion_viewportAnchorX_Getter"; - static viewportAnchorX_Setter_double(mthis, value) native "VTTRegion_viewportAnchorX_Setter"; + static viewportAnchorX_Setter(mthis, value) native "VTTRegion_viewportAnchorX_Setter"; static viewportAnchorY_Getter(mthis) native "VTTRegion_viewportAnchorY_Getter"; - static viewportAnchorY_Setter_double(mthis, value) native "VTTRegion_viewportAnchorY_Setter"; + static viewportAnchorY_Setter(mthis, value) native "VTTRegion_viewportAnchorY_Setter"; static width_Getter(mthis) native "VTTRegion_width_Getter"; - static width_Setter_double(mthis, value) native "VTTRegion_width_Setter"; + static width_Setter(mthis, value) native "VTTRegion_width_Setter"; } class BlinkVTTRegionList { static length_Getter(mthis) native "VTTRegionList_length_Getter"; - static getRegionById_Callback_DOMString(mthis, id) native "VTTRegionList_getRegionById_Callback_DOMString"; + static getRegionById_Callback_1(mthis, id) native "VTTRegionList_getRegionById_Callback"; - static item_Callback_ul(mthis, index) native "VTTRegionList_item_Callback_unsigned long"; + static item_Callback_1(mthis, index) native "VTTRegionList_item_Callback"; } class BlinkValidityState { @@ -8279,7 +8307,7 @@ class BlinkVideoTrack { static selected_Getter(mthis) native "VideoTrack_selected_Getter"; - static selected_Setter_boolean(mthis, value) native "VideoTrack_selected_Setter"; + static selected_Setter(mthis, value) native "VideoTrack_selected_Setter"; } class BlinkVideoTrackList { @@ -8287,19 +8315,19 @@ class BlinkVideoTrackList { static selectedIndex_Getter(mthis) native "VideoTrackList_selectedIndex_Getter"; - static $__getter___Callback_ul(mthis, index) native "VideoTrackList___getter___Callback_unsigned long"; + static $__getter___Callback_1(mthis, index) native "VideoTrackList___getter___Callback"; - static getTrackById_Callback_DOMString(mthis, id) native "VideoTrackList_getTrackById_Callback_DOMString"; + static getTrackById_Callback_1(mthis, id) native "VideoTrackList_getTrackById_Callback"; } class BlinkWaveShaperNode { static curve_Getter(mthis) native "WaveShaperNode_curve_Getter"; - static curve_Setter_Float32Array(mthis, value) native "WaveShaperNode_curve_Setter"; + static curve_Setter(mthis, value) native "WaveShaperNode_curve_Setter"; static oversample_Getter(mthis) native "WaveShaperNode_oversample_Getter"; - static oversample_Setter_DOMString(mthis, value) native "WaveShaperNode_oversample_Setter"; + static oversample_Setter(mthis, value) native "WaveShaperNode_oversample_Setter"; } class BlinkWebGLActiveInfo { @@ -8323,31 +8351,31 @@ class BlinkWebGLCompressedTextureS3TC {} class BlinkWebGLContextAttributes { static alpha_Getter(mthis) native "WebGLContextAttributes_alpha_Getter"; - static alpha_Setter_boolean(mthis, value) native "WebGLContextAttributes_alpha_Setter"; + static alpha_Setter(mthis, value) native "WebGLContextAttributes_alpha_Setter"; static antialias_Getter(mthis) native "WebGLContextAttributes_antialias_Getter"; - static antialias_Setter_boolean(mthis, value) native "WebGLContextAttributes_antialias_Setter"; + static antialias_Setter(mthis, value) native "WebGLContextAttributes_antialias_Setter"; static depth_Getter(mthis) native "WebGLContextAttributes_depth_Getter"; - static depth_Setter_boolean(mthis, value) native "WebGLContextAttributes_depth_Setter"; + static depth_Setter(mthis, value) native "WebGLContextAttributes_depth_Setter"; static failIfMajorPerformanceCaveat_Getter(mthis) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Getter"; - static failIfMajorPerformanceCaveat_Setter_boolean(mthis, value) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Setter"; + static failIfMajorPerformanceCaveat_Setter(mthis, value) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Setter"; static premultipliedAlpha_Getter(mthis) native "WebGLContextAttributes_premultipliedAlpha_Getter"; - static premultipliedAlpha_Setter_boolean(mthis, value) native "WebGLContextAttributes_premultipliedAlpha_Setter"; + static premultipliedAlpha_Setter(mthis, value) native "WebGLContextAttributes_premultipliedAlpha_Setter"; static preserveDrawingBuffer_Getter(mthis) native "WebGLContextAttributes_preserveDrawingBuffer_Getter"; - static preserveDrawingBuffer_Setter_boolean(mthis, value) native "WebGLContextAttributes_preserveDrawingBuffer_Setter"; + static preserveDrawingBuffer_Setter(mthis, value) native "WebGLContextAttributes_preserveDrawingBuffer_Setter"; static stencil_Getter(mthis) native "WebGLContextAttributes_stencil_Getter"; - static stencil_Setter_boolean(mthis, value) native "WebGLContextAttributes_stencil_Setter"; + static stencil_Setter(mthis, value) native "WebGLContextAttributes_stencil_Setter"; } class BlinkWebGLContextEvent { @@ -8359,13 +8387,13 @@ class BlinkWebGLContextEvent { class BlinkWebGLDebugRendererInfo {} class BlinkWebGLDebugShaders { - static getTranslatedShaderSource_Callback_WebGLShader(mthis, shader) native "WebGLDebugShaders_getTranslatedShaderSource_Callback_WebGLShader"; + static getTranslatedShaderSource_Callback_1(mthis, shader) native "WebGLDebugShaders_getTranslatedShaderSource_Callback"; } class BlinkWebGLDepthTexture {} class BlinkWebGLDrawBuffers { - static drawBuffersWEBGL_Callback_SEQ_ul_SEQ(mthis, buffers) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback_sequence"; + static drawBuffersWEBGL_Callback_1(mthis, buffers) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback"; } class BlinkWebGLFramebuffer {} @@ -8389,61 +8417,55 @@ class BlinkWebGLRenderingContext { static drawingBufferWidth_Getter(mthis) native "WebGLRenderingContext_drawingBufferWidth_Getter"; - static activeTexture_Callback_ul(mthis, texture) native "WebGLRenderingContext_activeTexture_Callback_unsigned long"; + static activeTexture_Callback_1(mthis, texture) native "WebGLRenderingContext_activeTexture_Callback"; - static attachShader_Callback_WebGLProgram_WebGLShader(mthis, program, shader) native "WebGLRenderingContext_attachShader_Callback_WebGLProgram_WebGLShader"; + static attachShader_Callback_2(mthis, program, shader) native "WebGLRenderingContext_attachShader_Callback"; - static bindAttribLocation_Callback_WebGLProgram_ul_DOMString(mthis, program, index, name) native "WebGLRenderingContext_bindAttribLocation_Callback_WebGLProgram_unsigned long_DOMString"; + static bindAttribLocation_Callback_3(mthis, program, index, name) native "WebGLRenderingContext_bindAttribLocation_Callback"; - static bindBuffer_Callback_ul_WebGLBuffer(mthis, target, buffer) native "WebGLRenderingContext_bindBuffer_Callback_unsigned long_WebGLBuffer"; + static bindBuffer_Callback_2(mthis, target, buffer) native "WebGLRenderingContext_bindBuffer_Callback"; - static bindFramebuffer_Callback_ul_WebGLFramebuffer(mthis, target, framebuffer) native "WebGLRenderingContext_bindFramebuffer_Callback_unsigned long_WebGLFramebuffer"; + static bindFramebuffer_Callback_2(mthis, target, framebuffer) native "WebGLRenderingContext_bindFramebuffer_Callback"; - static bindRenderbuffer_Callback_ul_WebGLRenderbuffer(mthis, target, renderbuffer) native "WebGLRenderingContext_bindRenderbuffer_Callback_unsigned long_WebGLRenderbuffer"; + static bindRenderbuffer_Callback_2(mthis, target, renderbuffer) native "WebGLRenderingContext_bindRenderbuffer_Callback"; - static bindTexture_Callback_ul_WebGLTexture(mthis, target, texture) native "WebGLRenderingContext_bindTexture_Callback_unsigned long_WebGLTexture"; + static bindTexture_Callback_2(mthis, target, texture) native "WebGLRenderingContext_bindTexture_Callback"; - static blendColor_Callback_float_float_float_float(mthis, red, green, blue, alpha) native "WebGLRenderingContext_blendColor_Callback_float_float_float_float"; + static blendColor_Callback_4(mthis, red, green, blue, alpha) native "WebGLRenderingContext_blendColor_Callback"; - static blendEquation_Callback_ul(mthis, mode) native "WebGLRenderingContext_blendEquation_Callback_unsigned long"; + static blendEquation_Callback_1(mthis, mode) native "WebGLRenderingContext_blendEquation_Callback"; - static blendEquationSeparate_Callback_ul_ul(mthis, modeRGB, modeAlpha) native "WebGLRenderingContext_blendEquationSeparate_Callback_unsigned long_unsigned long"; + static blendEquationSeparate_Callback_2(mthis, modeRGB, modeAlpha) native "WebGLRenderingContext_blendEquationSeparate_Callback"; - static blendFunc_Callback_ul_ul(mthis, sfactor, dfactor) native "WebGLRenderingContext_blendFunc_Callback_unsigned long_unsigned long"; + static blendFunc_Callback_2(mthis, sfactor, dfactor) native "WebGLRenderingContext_blendFunc_Callback"; - static blendFuncSeparate_Callback_ul_ul_ul_ul(mthis, srcRGB, dstRGB, srcAlpha, dstAlpha) native "WebGLRenderingContext_blendFuncSeparate_Callback_unsigned long_unsigned long_unsigned long_unsigned long"; + static blendFuncSeparate_Callback_4(mthis, srcRGB, dstRGB, srcAlpha, dstAlpha) native "WebGLRenderingContext_blendFuncSeparate_Callback"; - static bufferData_Callback_ul_ArrayBuffer_ul(mthis, target, data, usage) native "WebGLRenderingContext_bufferData_Callback_unsigned long_ArrayBuffer_unsigned long"; + static bufferData_Callback_3(mthis, target, data, usage) native "WebGLRenderingContext_bufferData_Callback"; - static bufferData_Callback_ul_ll_ul(mthis, target, data_OR_size, usage) native "WebGLRenderingContext_bufferData_Callback_unsigned long_long long_unsigned long"; + static bufferSubData_Callback_3(mthis, target, offset, data) native "WebGLRenderingContext_bufferSubData_Callback"; - static bufferData_Callback_ul_ArrayBufferView_ul(mthis, target, data_OR_size, usage) native "WebGLRenderingContext_bufferData_Callback_unsigned long_ArrayBufferView_unsigned long"; + static checkFramebufferStatus_Callback_1(mthis, target) native "WebGLRenderingContext_checkFramebufferStatus_Callback"; - static bufferSubData_Callback_ul_ll_ArrayBuffer(mthis, target, offset, data) native "WebGLRenderingContext_bufferSubData_Callback_unsigned long_long long_ArrayBuffer"; + static clear_Callback_1(mthis, mask) native "WebGLRenderingContext_clear_Callback"; - static bufferSubData_Callback_ul_ll_ArrayBufferView(mthis, target, offset, data) native "WebGLRenderingContext_bufferSubData_Callback_unsigned long_long long_ArrayBufferView"; + static clearColor_Callback_4(mthis, red, green, blue, alpha) native "WebGLRenderingContext_clearColor_Callback"; - static checkFramebufferStatus_Callback_ul(mthis, target) native "WebGLRenderingContext_checkFramebufferStatus_Callback_unsigned long"; + static clearDepth_Callback_1(mthis, depth) native "WebGLRenderingContext_clearDepth_Callback"; - static clear_Callback_ul(mthis, mask) native "WebGLRenderingContext_clear_Callback_unsigned long"; + static clearStencil_Callback_1(mthis, s) native "WebGLRenderingContext_clearStencil_Callback"; - static clearColor_Callback_float_float_float_float(mthis, red, green, blue, alpha) native "WebGLRenderingContext_clearColor_Callback_float_float_float_float"; + static colorMask_Callback_4(mthis, red, green, blue, alpha) native "WebGLRenderingContext_colorMask_Callback"; - static clearDepth_Callback_float(mthis, depth) native "WebGLRenderingContext_clearDepth_Callback_float"; + static compileShader_Callback_1(mthis, shader) native "WebGLRenderingContext_compileShader_Callback"; - static clearStencil_Callback_long(mthis, s) native "WebGLRenderingContext_clearStencil_Callback_long"; + static compressedTexImage2D_Callback_7(mthis, target, level, internalformat, width, height, border, data) native "WebGLRenderingContext_compressedTexImage2D_Callback"; - static colorMask_Callback_boolean_boolean_boolean_boolean(mthis, red, green, blue, alpha) native "WebGLRenderingContext_colorMask_Callback_boolean_boolean_boolean_boolean"; + static compressedTexSubImage2D_Callback_8(mthis, target, level, xoffset, yoffset, width, height, format, data) native "WebGLRenderingContext_compressedTexSubImage2D_Callback"; - static compileShader_Callback_WebGLShader(mthis, shader) native "WebGLRenderingContext_compileShader_Callback_WebGLShader"; + static copyTexImage2D_Callback_8(mthis, target, level, internalformat, x, y, width, height, border) native "WebGLRenderingContext_copyTexImage2D_Callback"; - static compressedTexImage2D_Callback_ul_long_ul_long_long_long_ArrayBufferView(mthis, target, level, internalformat, width, height, border, data) native "WebGLRenderingContext_compressedTexImage2D_Callback_unsigned long_long_unsigned long_long_long_long_ArrayBufferView"; - - static compressedTexSubImage2D_Callback_ul_long_long_long_long_long_ul_ArrayBufferView(mthis, target, level, xoffset, yoffset, width, height, format, data) native "WebGLRenderingContext_compressedTexSubImage2D_Callback_unsigned long_long_long_long_long_long_unsigned long_ArrayBufferView"; - - static copyTexImage2D_Callback_ul_long_ul_long_long_long_long_long(mthis, target, level, internalformat, x, y, width, height, border) native "WebGLRenderingContext_copyTexImage2D_Callback_unsigned long_long_unsigned long_long_long_long_long_long"; - - static copyTexSubImage2D_Callback_ul_long_long_long_long_long_long_long(mthis, target, level, xoffset, yoffset, x, y, width, height) native "WebGLRenderingContext_copyTexSubImage2D_Callback_unsigned long_long_long_long_long_long_long_long"; + static copyTexSubImage2D_Callback_8(mthis, target, level, xoffset, yoffset, x, y, width, height) native "WebGLRenderingContext_copyTexSubImage2D_Callback"; static createBuffer_Callback(mthis) native "WebGLRenderingContext_createBuffer_Callback"; @@ -8453,235 +8475,223 @@ class BlinkWebGLRenderingContext { static createRenderbuffer_Callback(mthis) native "WebGLRenderingContext_createRenderbuffer_Callback"; - static createShader_Callback_ul(mthis, type) native "WebGLRenderingContext_createShader_Callback_unsigned long"; + static createShader_Callback_1(mthis, type) native "WebGLRenderingContext_createShader_Callback"; static createTexture_Callback(mthis) native "WebGLRenderingContext_createTexture_Callback"; - static cullFace_Callback_ul(mthis, mode) native "WebGLRenderingContext_cullFace_Callback_unsigned long"; + static cullFace_Callback_1(mthis, mode) native "WebGLRenderingContext_cullFace_Callback"; - static deleteBuffer_Callback_WebGLBuffer(mthis, buffer) native "WebGLRenderingContext_deleteBuffer_Callback_WebGLBuffer"; + static deleteBuffer_Callback_1(mthis, buffer) native "WebGLRenderingContext_deleteBuffer_Callback"; - static deleteFramebuffer_Callback_WebGLFramebuffer(mthis, framebuffer) native "WebGLRenderingContext_deleteFramebuffer_Callback_WebGLFramebuffer"; + static deleteFramebuffer_Callback_1(mthis, framebuffer) native "WebGLRenderingContext_deleteFramebuffer_Callback"; - static deleteProgram_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_deleteProgram_Callback_WebGLProgram"; + static deleteProgram_Callback_1(mthis, program) native "WebGLRenderingContext_deleteProgram_Callback"; - static deleteRenderbuffer_Callback_WebGLRenderbuffer(mthis, renderbuffer) native "WebGLRenderingContext_deleteRenderbuffer_Callback_WebGLRenderbuffer"; + static deleteRenderbuffer_Callback_1(mthis, renderbuffer) native "WebGLRenderingContext_deleteRenderbuffer_Callback"; - static deleteShader_Callback_WebGLShader(mthis, shader) native "WebGLRenderingContext_deleteShader_Callback_WebGLShader"; + static deleteShader_Callback_1(mthis, shader) native "WebGLRenderingContext_deleteShader_Callback"; - static deleteTexture_Callback_WebGLTexture(mthis, texture) native "WebGLRenderingContext_deleteTexture_Callback_WebGLTexture"; + static deleteTexture_Callback_1(mthis, texture) native "WebGLRenderingContext_deleteTexture_Callback"; - static depthFunc_Callback_ul(mthis, func) native "WebGLRenderingContext_depthFunc_Callback_unsigned long"; + static depthFunc_Callback_1(mthis, func) native "WebGLRenderingContext_depthFunc_Callback"; - static depthMask_Callback_boolean(mthis, flag) native "WebGLRenderingContext_depthMask_Callback_boolean"; + static depthMask_Callback_1(mthis, flag) native "WebGLRenderingContext_depthMask_Callback"; - static depthRange_Callback_float_float(mthis, zNear, zFar) native "WebGLRenderingContext_depthRange_Callback_float_float"; + static depthRange_Callback_2(mthis, zNear, zFar) native "WebGLRenderingContext_depthRange_Callback"; - static detachShader_Callback_WebGLProgram_WebGLShader(mthis, program, shader) native "WebGLRenderingContext_detachShader_Callback_WebGLProgram_WebGLShader"; + static detachShader_Callback_2(mthis, program, shader) native "WebGLRenderingContext_detachShader_Callback"; - static disable_Callback_ul(mthis, cap) native "WebGLRenderingContext_disable_Callback_unsigned long"; + static disable_Callback_1(mthis, cap) native "WebGLRenderingContext_disable_Callback"; - static disableVertexAttribArray_Callback_ul(mthis, index) native "WebGLRenderingContext_disableVertexAttribArray_Callback_unsigned long"; + static disableVertexAttribArray_Callback_1(mthis, index) native "WebGLRenderingContext_disableVertexAttribArray_Callback"; - static drawArrays_Callback_ul_long_long(mthis, mode, first, count) native "WebGLRenderingContext_drawArrays_Callback_unsigned long_long_long"; + static drawArrays_Callback_3(mthis, mode, first, count) native "WebGLRenderingContext_drawArrays_Callback"; - static drawElements_Callback_ul_long_ul_ll(mthis, mode, count, type, offset) native "WebGLRenderingContext_drawElements_Callback_unsigned long_long_unsigned long_long long"; + static drawElements_Callback_4(mthis, mode, count, type, offset) native "WebGLRenderingContext_drawElements_Callback"; - static enable_Callback_ul(mthis, cap) native "WebGLRenderingContext_enable_Callback_unsigned long"; + static enable_Callback_1(mthis, cap) native "WebGLRenderingContext_enable_Callback"; - static enableVertexAttribArray_Callback_ul(mthis, index) native "WebGLRenderingContext_enableVertexAttribArray_Callback_unsigned long"; + static enableVertexAttribArray_Callback_1(mthis, index) native "WebGLRenderingContext_enableVertexAttribArray_Callback"; static finish_Callback(mthis) native "WebGLRenderingContext_finish_Callback"; static flush_Callback(mthis) native "WebGLRenderingContext_flush_Callback"; - static framebufferRenderbuffer_Callback_ul_ul_ul_WebGLRenderbuffer(mthis, target, attachment, renderbuffertarget, renderbuffer) native "WebGLRenderingContext_framebufferRenderbuffer_Callback_unsigned long_unsigned long_unsigned long_WebGLRenderbuffer"; + static framebufferRenderbuffer_Callback_4(mthis, target, attachment, renderbuffertarget, renderbuffer) native "WebGLRenderingContext_framebufferRenderbuffer_Callback"; - static framebufferTexture2D_Callback_ul_ul_ul_WebGLTexture_long(mthis, target, attachment, textarget, texture, level) native "WebGLRenderingContext_framebufferTexture2D_Callback_unsigned long_unsigned long_unsigned long_WebGLTexture_long"; + static framebufferTexture2D_Callback_5(mthis, target, attachment, textarget, texture, level) native "WebGLRenderingContext_framebufferTexture2D_Callback"; - static frontFace_Callback_ul(mthis, mode) native "WebGLRenderingContext_frontFace_Callback_unsigned long"; + static frontFace_Callback_1(mthis, mode) native "WebGLRenderingContext_frontFace_Callback"; - static generateMipmap_Callback_ul(mthis, target) native "WebGLRenderingContext_generateMipmap_Callback_unsigned long"; + static generateMipmap_Callback_1(mthis, target) native "WebGLRenderingContext_generateMipmap_Callback"; - static getActiveAttrib_Callback_WebGLProgram_ul(mthis, program, index) native "WebGLRenderingContext_getActiveAttrib_Callback_WebGLProgram_unsigned long"; + static getActiveAttrib_Callback_2(mthis, program, index) native "WebGLRenderingContext_getActiveAttrib_Callback"; - static getActiveUniform_Callback_WebGLProgram_ul(mthis, program, index) native "WebGLRenderingContext_getActiveUniform_Callback_WebGLProgram_unsigned long"; + static getActiveUniform_Callback_2(mthis, program, index) native "WebGLRenderingContext_getActiveUniform_Callback"; - static getAttachedShaders_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_getAttachedShaders_Callback_WebGLProgram"; + static getAttachedShaders_Callback_1(mthis, program) native "WebGLRenderingContext_getAttachedShaders_Callback"; - static getAttribLocation_Callback_WebGLProgram_DOMString(mthis, program, name) native "WebGLRenderingContext_getAttribLocation_Callback_WebGLProgram_DOMString"; + static getAttribLocation_Callback_2(mthis, program, name) native "WebGLRenderingContext_getAttribLocation_Callback"; - static getBufferParameter_Callback_ul_ul(mthis, target, pname) native "WebGLRenderingContext_getBufferParameter_Callback"; + static getBufferParameter_Callback_2(mthis, target, pname) native "WebGLRenderingContext_getBufferParameter_Callback"; static getContextAttributes_Callback(mthis) native "WebGLRenderingContext_getContextAttributes_Callback"; static getError_Callback(mthis) native "WebGLRenderingContext_getError_Callback"; - static getExtension_Callback_DOMString(mthis, name) native "WebGLRenderingContext_getExtension_Callback"; + static getExtension_Callback_1(mthis, name) native "WebGLRenderingContext_getExtension_Callback"; - static getFramebufferAttachmentParameter_Callback_ul_ul_ul(mthis, target, attachment, pname) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback"; + static getFramebufferAttachmentParameter_Callback_3(mthis, target, attachment, pname) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback"; - static getParameter_Callback_ul(mthis, pname) native "WebGLRenderingContext_getParameter_Callback"; + static getParameter_Callback_1(mthis, pname) native "WebGLRenderingContext_getParameter_Callback"; - static getProgramInfoLog_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_getProgramInfoLog_Callback_WebGLProgram"; + static getProgramInfoLog_Callback_1(mthis, program) native "WebGLRenderingContext_getProgramInfoLog_Callback"; - static getProgramParameter_Callback_WebGLProgram_ul(mthis, program, pname) native "WebGLRenderingContext_getProgramParameter_Callback"; + static getProgramParameter_Callback_2(mthis, program, pname) native "WebGLRenderingContext_getProgramParameter_Callback"; - static getRenderbufferParameter_Callback_ul_ul(mthis, target, pname) native "WebGLRenderingContext_getRenderbufferParameter_Callback"; + static getRenderbufferParameter_Callback_2(mthis, target, pname) native "WebGLRenderingContext_getRenderbufferParameter_Callback"; - static getShaderInfoLog_Callback_WebGLShader(mthis, shader) native "WebGLRenderingContext_getShaderInfoLog_Callback_WebGLShader"; + static getShaderInfoLog_Callback_1(mthis, shader) native "WebGLRenderingContext_getShaderInfoLog_Callback"; - static getShaderParameter_Callback_WebGLShader_ul(mthis, shader, pname) native "WebGLRenderingContext_getShaderParameter_Callback"; + static getShaderParameter_Callback_2(mthis, shader, pname) native "WebGLRenderingContext_getShaderParameter_Callback"; - static getShaderPrecisionFormat_Callback_ul_ul(mthis, shadertype, precisiontype) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback_unsigned long_unsigned long"; + static getShaderPrecisionFormat_Callback_2(mthis, shadertype, precisiontype) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback"; - static getShaderSource_Callback_WebGLShader(mthis, shader) native "WebGLRenderingContext_getShaderSource_Callback_WebGLShader"; + static getShaderSource_Callback_1(mthis, shader) native "WebGLRenderingContext_getShaderSource_Callback"; static getSupportedExtensions_Callback(mthis) native "WebGLRenderingContext_getSupportedExtensions_Callback"; - static getTexParameter_Callback_ul_ul(mthis, target, pname) native "WebGLRenderingContext_getTexParameter_Callback"; + static getTexParameter_Callback_2(mthis, target, pname) native "WebGLRenderingContext_getTexParameter_Callback"; - static getUniform_Callback_WebGLProgram_WebGLUniformLocation(mthis, program, location) native "WebGLRenderingContext_getUniform_Callback"; + static getUniform_Callback_2(mthis, program, location) native "WebGLRenderingContext_getUniform_Callback"; - static getUniformLocation_Callback_WebGLProgram_DOMString(mthis, program, name) native "WebGLRenderingContext_getUniformLocation_Callback_WebGLProgram_DOMString"; + static getUniformLocation_Callback_2(mthis, program, name) native "WebGLRenderingContext_getUniformLocation_Callback"; - static getVertexAttrib_Callback_ul_ul(mthis, index, pname) native "WebGLRenderingContext_getVertexAttrib_Callback"; + static getVertexAttrib_Callback_2(mthis, index, pname) native "WebGLRenderingContext_getVertexAttrib_Callback"; - static getVertexAttribOffset_Callback_ul_ul(mthis, index, pname) native "WebGLRenderingContext_getVertexAttribOffset_Callback_unsigned long_unsigned long"; + static getVertexAttribOffset_Callback_2(mthis, index, pname) native "WebGLRenderingContext_getVertexAttribOffset_Callback"; - static hint_Callback_ul_ul(mthis, target, mode) native "WebGLRenderingContext_hint_Callback_unsigned long_unsigned long"; + static hint_Callback_2(mthis, target, mode) native "WebGLRenderingContext_hint_Callback"; - static isBuffer_Callback_WebGLBuffer(mthis, buffer) native "WebGLRenderingContext_isBuffer_Callback_WebGLBuffer"; + static isBuffer_Callback_1(mthis, buffer) native "WebGLRenderingContext_isBuffer_Callback"; static isContextLost_Callback(mthis) native "WebGLRenderingContext_isContextLost_Callback"; - static isEnabled_Callback_ul(mthis, cap) native "WebGLRenderingContext_isEnabled_Callback_unsigned long"; - - static isFramebuffer_Callback_WebGLFramebuffer(mthis, framebuffer) native "WebGLRenderingContext_isFramebuffer_Callback_WebGLFramebuffer"; + static isEnabled_Callback_1(mthis, cap) native "WebGLRenderingContext_isEnabled_Callback"; - static isProgram_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_isProgram_Callback_WebGLProgram"; + static isFramebuffer_Callback_1(mthis, framebuffer) native "WebGLRenderingContext_isFramebuffer_Callback"; - static isRenderbuffer_Callback_WebGLRenderbuffer(mthis, renderbuffer) native "WebGLRenderingContext_isRenderbuffer_Callback_WebGLRenderbuffer"; + static isProgram_Callback_1(mthis, program) native "WebGLRenderingContext_isProgram_Callback"; - static isShader_Callback_WebGLShader(mthis, shader) native "WebGLRenderingContext_isShader_Callback_WebGLShader"; + static isRenderbuffer_Callback_1(mthis, renderbuffer) native "WebGLRenderingContext_isRenderbuffer_Callback"; - static isTexture_Callback_WebGLTexture(mthis, texture) native "WebGLRenderingContext_isTexture_Callback_WebGLTexture"; + static isShader_Callback_1(mthis, shader) native "WebGLRenderingContext_isShader_Callback"; - static lineWidth_Callback_float(mthis, width) native "WebGLRenderingContext_lineWidth_Callback_float"; + static isTexture_Callback_1(mthis, texture) native "WebGLRenderingContext_isTexture_Callback"; - static linkProgram_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_linkProgram_Callback_WebGLProgram"; + static lineWidth_Callback_1(mthis, width) native "WebGLRenderingContext_lineWidth_Callback"; - static pixelStorei_Callback_ul_long(mthis, pname, param) native "WebGLRenderingContext_pixelStorei_Callback_unsigned long_long"; + static linkProgram_Callback_1(mthis, program) native "WebGLRenderingContext_linkProgram_Callback"; - static polygonOffset_Callback_float_float(mthis, factor, units) native "WebGLRenderingContext_polygonOffset_Callback_float_float"; + static pixelStorei_Callback_2(mthis, pname, param) native "WebGLRenderingContext_pixelStorei_Callback"; - static readPixels_Callback_long_long_long_long_ul_ul_ArrayBufferView(mthis, x, y, width, height, format, type, pixels) native "WebGLRenderingContext_readPixels_Callback_long_long_long_long_unsigned long_unsigned long_ArrayBufferView"; + static polygonOffset_Callback_2(mthis, factor, units) native "WebGLRenderingContext_polygonOffset_Callback"; - static renderbufferStorage_Callback_ul_ul_long_long(mthis, target, internalformat, width, height) native "WebGLRenderingContext_renderbufferStorage_Callback_unsigned long_unsigned long_long_long"; + static readPixels_Callback_7(mthis, x, y, width, height, format, type, pixels) native "WebGLRenderingContext_readPixels_Callback"; - static sampleCoverage_Callback_float_boolean(mthis, value, invert) native "WebGLRenderingContext_sampleCoverage_Callback_float_boolean"; + static renderbufferStorage_Callback_4(mthis, target, internalformat, width, height) native "WebGLRenderingContext_renderbufferStorage_Callback"; - static scissor_Callback_long_long_long_long(mthis, x, y, width, height) native "WebGLRenderingContext_scissor_Callback_long_long_long_long"; + static sampleCoverage_Callback_2(mthis, value, invert) native "WebGLRenderingContext_sampleCoverage_Callback"; - static shaderSource_Callback_WebGLShader_DOMString(mthis, shader, string) native "WebGLRenderingContext_shaderSource_Callback_WebGLShader_DOMString"; + static scissor_Callback_4(mthis, x, y, width, height) native "WebGLRenderingContext_scissor_Callback"; - static stencilFunc_Callback_ul_long_ul(mthis, func, ref, mask) native "WebGLRenderingContext_stencilFunc_Callback_unsigned long_long_unsigned long"; + static shaderSource_Callback_2(mthis, shader, string) native "WebGLRenderingContext_shaderSource_Callback"; - static stencilFuncSeparate_Callback_ul_ul_long_ul(mthis, face, func, ref, mask) native "WebGLRenderingContext_stencilFuncSeparate_Callback_unsigned long_unsigned long_long_unsigned long"; + static stencilFunc_Callback_3(mthis, func, ref, mask) native "WebGLRenderingContext_stencilFunc_Callback"; - static stencilMask_Callback_ul(mthis, mask) native "WebGLRenderingContext_stencilMask_Callback_unsigned long"; + static stencilFuncSeparate_Callback_4(mthis, face, func, ref, mask) native "WebGLRenderingContext_stencilFuncSeparate_Callback"; - static stencilMaskSeparate_Callback_ul_ul(mthis, face, mask) native "WebGLRenderingContext_stencilMaskSeparate_Callback_unsigned long_unsigned long"; + static stencilMask_Callback_1(mthis, mask) native "WebGLRenderingContext_stencilMask_Callback"; - static stencilOp_Callback_ul_ul_ul(mthis, fail, zfail, zpass) native "WebGLRenderingContext_stencilOp_Callback_unsigned long_unsigned long_unsigned long"; + static stencilMaskSeparate_Callback_2(mthis, face, mask) native "WebGLRenderingContext_stencilMaskSeparate_Callback"; - static stencilOpSeparate_Callback_ul_ul_ul_ul(mthis, face, fail, zfail, zpass) native "WebGLRenderingContext_stencilOpSeparate_Callback_unsigned long_unsigned long_unsigned long_unsigned long"; + static stencilOp_Callback_3(mthis, fail, zfail, zpass) native "WebGLRenderingContext_stencilOp_Callback"; - static texImage2D_Callback_ul_long_ul_long_long_long_ul_ul_ArrayBufferView(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) native "WebGLRenderingContext_texImage2D_Callback_unsigned long_long_unsigned long_long_long_long_unsigned long_unsigned long_ArrayBufferView"; + static stencilOpSeparate_Callback_4(mthis, face, fail, zfail, zpass) native "WebGLRenderingContext_stencilOpSeparate_Callback"; - static texImage2D_Callback_ul_long_ul_ul_ul_ImageData(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texImage2D_Callback_unsigned long_long_unsigned long_unsigned long_unsigned long_ImageData"; + static texImage2D_Callback_9(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) native "WebGLRenderingContext_texImage2D_Callback"; - static texImage2D_Callback_ul_long_ul_ul_ul_HTMLImageElement(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texImage2D_Callback_unsigned long_long_unsigned long_unsigned long_unsigned long_HTMLImageElement"; + static texImage2D_Callback_6(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texImage2D_Callback"; - static texImage2D_Callback_ul_long_ul_ul_ul_HTMLCanvasElement(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texImage2D_Callback_unsigned long_long_unsigned long_unsigned long_unsigned long_HTMLCanvasElement"; + static texParameterf_Callback_3(mthis, target, pname, param) native "WebGLRenderingContext_texParameterf_Callback"; - static texImage2D_Callback_ul_long_ul_ul_ul_HTMLVideoElement(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texImage2D_Callback_unsigned long_long_unsigned long_unsigned long_unsigned long_HTMLVideoElement"; + static texParameteri_Callback_3(mthis, target, pname, param) native "WebGLRenderingContext_texParameteri_Callback"; - static texParameterf_Callback_ul_ul_float(mthis, target, pname, param) native "WebGLRenderingContext_texParameterf_Callback_unsigned long_unsigned long_float"; + static texSubImage2D_Callback_9(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) native "WebGLRenderingContext_texSubImage2D_Callback"; - static texParameteri_Callback_ul_ul_long(mthis, target, pname, param) native "WebGLRenderingContext_texParameteri_Callback_unsigned long_unsigned long_long"; + static texSubImage2D_Callback_7(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texSubImage2D_Callback"; - static texSubImage2D_Callback_ul_long_long_long_long_long_ul_ul_ArrayBufferView(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) native "WebGLRenderingContext_texSubImage2D_Callback_unsigned long_long_long_long_long_long_unsigned long_unsigned long_ArrayBufferView"; + static uniform1f_Callback_2(mthis, location, x) native "WebGLRenderingContext_uniform1f_Callback"; - static texSubImage2D_Callback_ul_long_long_long_ul_ul_ImageData(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texSubImage2D_Callback_unsigned long_long_long_long_unsigned long_unsigned long_ImageData"; + static uniform1fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform1fv_Callback"; - static texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLImageElement(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texSubImage2D_Callback_unsigned long_long_long_long_unsigned long_unsigned long_HTMLImageElement"; + static uniform1i_Callback_2(mthis, location, x) native "WebGLRenderingContext_uniform1i_Callback"; - static texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLCanvasElement(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texSubImage2D_Callback_unsigned long_long_long_long_unsigned long_unsigned long_HTMLCanvasElement"; + static uniform1iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform1iv_Callback"; - static texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLVideoElement(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texSubImage2D_Callback_unsigned long_long_long_long_unsigned long_unsigned long_HTMLVideoElement"; + static uniform2f_Callback_3(mthis, location, x, y) native "WebGLRenderingContext_uniform2f_Callback"; - static uniform1f_Callback_WebGLUniformLocation_float(mthis, location, x) native "WebGLRenderingContext_uniform1f_Callback_WebGLUniformLocation_float"; + static uniform2fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform2fv_Callback"; - static uniform1fv_Callback_WebGLUniformLocation_Float32Array(mthis, location, v) native "WebGLRenderingContext_uniform1fv_Callback"; + static uniform2i_Callback_3(mthis, location, x, y) native "WebGLRenderingContext_uniform2i_Callback"; - static uniform1i_Callback_WebGLUniformLocation_long(mthis, location, x) native "WebGLRenderingContext_uniform1i_Callback_WebGLUniformLocation_long"; + static uniform2iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform2iv_Callback"; - static uniform1iv_Callback_WebGLUniformLocation_Int32Array(mthis, location, v) native "WebGLRenderingContext_uniform1iv_Callback"; + static uniform3f_Callback_4(mthis, location, x, y, z) native "WebGLRenderingContext_uniform3f_Callback"; - static uniform2f_Callback_WebGLUniformLocation_float_float(mthis, location, x, y) native "WebGLRenderingContext_uniform2f_Callback_WebGLUniformLocation_float_float"; + static uniform3fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform3fv_Callback"; - static uniform2fv_Callback_WebGLUniformLocation_Float32Array(mthis, location, v) native "WebGLRenderingContext_uniform2fv_Callback"; + static uniform3i_Callback_4(mthis, location, x, y, z) native "WebGLRenderingContext_uniform3i_Callback"; - static uniform2i_Callback_WebGLUniformLocation_long_long(mthis, location, x, y) native "WebGLRenderingContext_uniform2i_Callback_WebGLUniformLocation_long_long"; + static uniform3iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform3iv_Callback"; - static uniform2iv_Callback_WebGLUniformLocation_Int32Array(mthis, location, v) native "WebGLRenderingContext_uniform2iv_Callback"; + static uniform4f_Callback_5(mthis, location, x, y, z, w) native "WebGLRenderingContext_uniform4f_Callback"; - static uniform3f_Callback_WebGLUniformLocation_float_float_float(mthis, location, x, y, z) native "WebGLRenderingContext_uniform3f_Callback_WebGLUniformLocation_float_float_float"; + static uniform4fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform4fv_Callback"; - static uniform3fv_Callback_WebGLUniformLocation_Float32Array(mthis, location, v) native "WebGLRenderingContext_uniform3fv_Callback"; + static uniform4i_Callback_5(mthis, location, x, y, z, w) native "WebGLRenderingContext_uniform4i_Callback"; - static uniform3i_Callback_WebGLUniformLocation_long_long_long(mthis, location, x, y, z) native "WebGLRenderingContext_uniform3i_Callback_WebGLUniformLocation_long_long_long"; + static uniform4iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform4iv_Callback"; - static uniform3iv_Callback_WebGLUniformLocation_Int32Array(mthis, location, v) native "WebGLRenderingContext_uniform3iv_Callback"; + static uniformMatrix2fv_Callback_3(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix2fv_Callback"; - static uniform4f_Callback_WebGLUniformLocation_float_float_float_float(mthis, location, x, y, z, w) native "WebGLRenderingContext_uniform4f_Callback_WebGLUniformLocation_float_float_float_float"; + static uniformMatrix3fv_Callback_3(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix3fv_Callback"; - static uniform4fv_Callback_WebGLUniformLocation_Float32Array(mthis, location, v) native "WebGLRenderingContext_uniform4fv_Callback"; + static uniformMatrix4fv_Callback_3(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix4fv_Callback"; - static uniform4i_Callback_WebGLUniformLocation_long_long_long_long(mthis, location, x, y, z, w) native "WebGLRenderingContext_uniform4i_Callback_WebGLUniformLocation_long_long_long_long"; + static useProgram_Callback_1(mthis, program) native "WebGLRenderingContext_useProgram_Callback"; - static uniform4iv_Callback_WebGLUniformLocation_Int32Array(mthis, location, v) native "WebGLRenderingContext_uniform4iv_Callback"; + static validateProgram_Callback_1(mthis, program) native "WebGLRenderingContext_validateProgram_Callback"; - static uniformMatrix2fv_Callback_WebGLUniformLocation_boolean_Float32Array(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix2fv_Callback"; + static vertexAttrib1f_Callback_2(mthis, indx, x) native "WebGLRenderingContext_vertexAttrib1f_Callback"; - static uniformMatrix3fv_Callback_WebGLUniformLocation_boolean_Float32Array(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix3fv_Callback"; + static vertexAttrib1fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib1fv_Callback"; - static uniformMatrix4fv_Callback_WebGLUniformLocation_boolean_Float32Array(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix4fv_Callback"; + static vertexAttrib2f_Callback_3(mthis, indx, x, y) native "WebGLRenderingContext_vertexAttrib2f_Callback"; - static useProgram_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_useProgram_Callback_WebGLProgram"; + static vertexAttrib2fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib2fv_Callback"; - static validateProgram_Callback_WebGLProgram(mthis, program) native "WebGLRenderingContext_validateProgram_Callback_WebGLProgram"; + static vertexAttrib3f_Callback_4(mthis, indx, x, y, z) native "WebGLRenderingContext_vertexAttrib3f_Callback"; - static vertexAttrib1f_Callback_ul_float(mthis, indx, x) native "WebGLRenderingContext_vertexAttrib1f_Callback_unsigned long_float"; + static vertexAttrib3fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib3fv_Callback"; - static vertexAttrib1fv_Callback_ul_Float32Array(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib1fv_Callback"; + static vertexAttrib4f_Callback_5(mthis, indx, x, y, z, w) native "WebGLRenderingContext_vertexAttrib4f_Callback"; - static vertexAttrib2f_Callback_ul_float_float(mthis, indx, x, y) native "WebGLRenderingContext_vertexAttrib2f_Callback_unsigned long_float_float"; + static vertexAttrib4fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib4fv_Callback"; - static vertexAttrib2fv_Callback_ul_Float32Array(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib2fv_Callback"; + static vertexAttribPointer_Callback_6(mthis, indx, size, type, normalized, stride, offset) native "WebGLRenderingContext_vertexAttribPointer_Callback"; - static vertexAttrib3f_Callback_ul_float_float_float(mthis, indx, x, y, z) native "WebGLRenderingContext_vertexAttrib3f_Callback_unsigned long_float_float_float"; - - static vertexAttrib3fv_Callback_ul_Float32Array(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib3fv_Callback"; - - static vertexAttrib4f_Callback_ul_float_float_float_float(mthis, indx, x, y, z, w) native "WebGLRenderingContext_vertexAttrib4f_Callback_unsigned long_float_float_float_float"; - - static vertexAttrib4fv_Callback_ul_Float32Array(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib4fv_Callback"; - - static vertexAttribPointer_Callback_ul_long_ul_boolean_long_ll(mthis, indx, size, type, normalized, stride, offset) native "WebGLRenderingContext_vertexAttribPointer_Callback_unsigned long_long_unsigned long_boolean_long_long long"; - - static viewport_Callback_long_long_long_long(mthis, x, y, width, height) native "WebGLRenderingContext_viewport_Callback_long_long_long_long"; + static viewport_Callback_4(mthis, x, y, width, height) native "WebGLRenderingContext_viewport_Callback"; } class BlinkWebGLShader {} @@ -8715,33 +8725,31 @@ class BlinkWebKitCSSFilterRule { class BlinkWebKitCSSFilterValue {} class BlinkWebKitCSSMatrix { - static constructorCallback_DOMString(cssValue) native "WebKitCSSMatrix_constructorCallback_DOMString"; + static constructorCallback_1(cssValue) native "WebKitCSSMatrix_constructorCallback"; } class BlinkWebKitCSSTransformValue {} class BlinkWebKitPoint { - static constructorCallback_float_float(x, y) native "WebKitPoint_constructorCallback"; + static constructorCallback_2(x, y) native "WebKitPoint_constructorCallback"; static x_Getter(mthis) native "WebKitPoint_x_Getter"; - static x_Setter_float(mthis, value) native "WebKitPoint_x_Setter"; + static x_Setter(mthis, value) native "WebKitPoint_x_Setter"; static y_Getter(mthis) native "WebKitPoint_y_Getter"; - static y_Setter_float(mthis, value) native "WebKitPoint_y_Setter"; + static y_Setter(mthis, value) native "WebKitPoint_y_Setter"; } class BlinkWebSocket { - static constructorCallback_DOMString(url) native "WebSocket_constructorCallback_DOMString"; - - static constructorCallback_DOMString_DOMString(url, protocol_OR_protocols) native "WebSocket_constructorCallback_DOMString_DOMString"; + static constructorCallback_1(url) native "WebSocket_constructorCallback"; - static constructorCallback_DOMString_SEQ_DOMString_SEQ(url, protocol_OR_protocols) native "WebSocket_constructorCallback_DOMString_sequence"; + static constructorCallback_2(url, protocol_OR_protocols) native "WebSocket_constructorCallback"; static binaryType_Getter(mthis) native "WebSocket_binaryType_Getter"; - static binaryType_Setter_DOMString(mthis, value) native "WebSocket_binaryType_Setter"; + static binaryType_Setter(mthis, value) native "WebSocket_binaryType_Setter"; static bufferedAmount_Getter(mthis) native "WebSocket_bufferedAmount_Getter"; @@ -8753,19 +8761,13 @@ class BlinkWebSocket { static url_Getter(mthis) native "WebSocket_url_Getter"; - static close_Callback_us_DOMString(mthis, code, reason) native "WebSocket_close_Callback_unsigned short_DOMString"; + static close_Callback_2(mthis, code, reason) native "WebSocket_close_Callback"; - static close_Callback_us(mthis, code) native "WebSocket_close_Callback_unsigned short"; + static close_Callback_1(mthis, code) native "WebSocket_close_Callback"; static close_Callback(mthis) native "WebSocket_close_Callback"; - static send_Callback_DOMString(mthis, data) native "WebSocket_send_Callback_DOMString"; - - static send_Callback_Blob(mthis, data) native "WebSocket_send_Callback_Blob"; - - static send_Callback_ArrayBufferView(mthis, data) native "WebSocket_send_Callback_ArrayBufferView"; - - static send_Callback_ArrayBuffer(mthis, data) native "WebSocket_send_Callback_ArrayBuffer"; + static send_Callback_1(mthis, data) native "WebSocket_send_Callback"; } class BlinkWheelEvent { @@ -8797,11 +8799,11 @@ class BlinkWindow { static defaultStatus_Getter(mthis) native "Window_defaultStatus_Getter"; - static defaultStatus_Setter_DOMString(mthis, value) native "Window_defaultStatus_Setter"; + static defaultStatus_Setter(mthis, value) native "Window_defaultStatus_Setter"; static defaultstatus_Getter(mthis) native "Window_defaultstatus_Getter"; - static defaultstatus_Setter_DOMString(mthis, value) native "Window_defaultstatus_Setter"; + static defaultstatus_Setter(mthis, value) native "Window_defaultstatus_Setter"; static devicePixelRatio_Getter(mthis) native "Window_devicePixelRatio_Getter"; @@ -8825,7 +8827,7 @@ class BlinkWindow { static name_Getter(mthis) native "Window_name_Getter"; - static name_Setter_DOMString(mthis, value) native "Window_name_Setter"; + static name_Setter(mthis, value) native "Window_name_Setter"; static navigator_Getter(mthis) native "Window_navigator_Getter"; @@ -8833,7 +8835,7 @@ class BlinkWindow { static opener_Getter(mthis) native "Window_opener_Getter"; - static opener_Setter_Window(mthis, value) native "Window_opener_Setter"; + static opener_Setter(mthis, value) native "Window_opener_Setter"; static orientation_Getter(mthis) native "Window_orientation_Getter"; @@ -8873,7 +8875,7 @@ class BlinkWindow { static status_Getter(mthis) native "Window_status_Getter"; - static status_Setter_DOMString(mthis, value) native "Window_status_Setter"; + static status_Setter(mthis, value) native "Window_status_Setter"; static statusbar_Getter(mthis) native "Window_statusbar_Getter"; @@ -8885,81 +8887,91 @@ class BlinkWindow { static window_Getter(mthis) native "Window_window_Getter"; - static $__getter___Callback_ul(mthis, index_OR_name) native "Window___getter___Callback_unsigned long"; - - static $__getter___Callback_DOMString(mthis, index_OR_name) native "Window___getter___Callback"; + static $__getter___Callback_1(mthis, index_OR_name) native "Window___getter___Callback"; - static alert_Callback_DOMString(mthis, message) native "Window_alert_Callback_DOMString"; + static alert_Callback_1(mthis, message) native "Window_alert_Callback"; static alert_Callback(mthis) native "Window_alert_Callback"; - static cancelAnimationFrame_Callback_long(mthis, id) native "Window_cancelAnimationFrame_Callback_long"; + static cancelAnimationFrame_Callback_1(mthis, id) native "Window_cancelAnimationFrame_Callback"; static close_Callback(mthis) native "Window_close_Callback"; - static confirm_Callback_DOMString(mthis, message) native "Window_confirm_Callback_DOMString"; + static confirm_Callback_1(mthis, message) native "Window_confirm_Callback"; static confirm_Callback(mthis) native "Window_confirm_Callback"; - static find_Callback_DOMString_boolean_boolean_boolean_boolean_boolean_boolean(mthis, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog) native "Window_find_Callback_DOMString_boolean_boolean_boolean_boolean_boolean_boolean"; + static find_Callback_7(mthis, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog) native "Window_find_Callback"; - static getComputedStyle_Callback_Element_DOMString(mthis, element, pseudoElement) native "Window_getComputedStyle_Callback_Element_DOMString"; + static getComputedStyle_Callback_2(mthis, element, pseudoElement) native "Window_getComputedStyle_Callback"; - static getMatchedCSSRules_Callback_Element_DOMString(mthis, element, pseudoElement) native "Window_getMatchedCSSRules_Callback_Element_DOMString"; + static getMatchedCSSRules_Callback_2(mthis, element, pseudoElement) native "Window_getMatchedCSSRules_Callback"; static getSelection_Callback(mthis) native "Window_getSelection_Callback"; - static matchMedia_Callback_DOMString(mthis, query) native "Window_matchMedia_Callback_DOMString"; + static matchMedia_Callback_1(mthis, query) native "Window_matchMedia_Callback"; - static moveBy_Callback_float_float(mthis, x, y) native "Window_moveBy_Callback_float_float"; + static moveBy_Callback_2(mthis, x, y) native "Window_moveBy_Callback"; - static moveTo_Callback_float_float(mthis, x, y) native "Window_moveTo_Callback_float_float"; + static moveTo_Callback_2(mthis, x, y) native "Window_moveTo_Callback"; - static open_Callback_DOMString_DOMString_DOMString(mthis, url, name, options) native "Window_open_Callback"; + static open_Callback_3(mthis, url, name, options) native "Window_open_Callback"; - static openDatabase_Callback_DOMString_DOMString_DOMString_ul_DatabaseCallback(mthis, name, version, displayName, estimatedSize, creationCallback) native "Window_openDatabase_Callback_DOMString_DOMString_DOMString_unsigned long_DatabaseCallback"; + static openDatabase_Callback_5(mthis, name, version, displayName, estimatedSize, creationCallback) native "Window_openDatabase_Callback"; - static postMessage_Callback_SerializedScriptValue_DOMString_SEQ_MessagePort_SEQ(mthis, message, targetOrigin, transfer) native "Window_postMessage_Callback"; + static openDatabase_Callback_4(mthis, name, version, displayName, estimatedSize) native "Window_openDatabase_Callback"; + + static postMessage_Callback_3(mthis, message, targetOrigin, transfer) native "Window_postMessage_Callback"; static print_Callback(mthis) native "Window_print_Callback"; - static requestAnimationFrame_Callback_RequestAnimationFrameCallback(mthis, callback) native "Window_requestAnimationFrame_Callback_RequestAnimationFrameCallback"; + static requestAnimationFrame_Callback_1(mthis, callback) native "Window_requestAnimationFrame_Callback"; + + static resizeBy_Callback_2(mthis, x, y) native "Window_resizeBy_Callback"; - static resizeBy_Callback_float_float(mthis, x, y) native "Window_resizeBy_Callback_float_float"; + static resizeTo_Callback_2(mthis, width, height) native "Window_resizeTo_Callback"; - static resizeTo_Callback_float_float(mthis, width, height) native "Window_resizeTo_Callback_float_float"; + static scroll_Callback_3(mthis, x, y, scrollOptions) native "Window_scroll_Callback"; - static scroll_Callback_long_long_Dictionary(mthis, x, y, scrollOptions) native "Window_scroll_Callback_long_long_Dictionary"; + static scroll_Callback_2(mthis, x, y) native "Window_scroll_Callback"; - static scrollBy_Callback_long_long_Dictionary(mthis, x, y, scrollOptions) native "Window_scrollBy_Callback_long_long_Dictionary"; + static scrollBy_Callback_3(mthis, x, y, scrollOptions) native "Window_scrollBy_Callback"; - static scrollTo_Callback_long_long_Dictionary(mthis, x, y, scrollOptions) native "Window_scrollTo_Callback_long_long_Dictionary"; + static scrollBy_Callback_2(mthis, x, y) native "Window_scrollBy_Callback"; - static showModalDialog_Callback_DOMString_ScriptValue_DOMString(mthis, url, dialogArgs, featureArgs) native "Window_showModalDialog_Callback"; + static scrollTo_Callback_3(mthis, x, y, scrollOptions) native "Window_scrollTo_Callback"; + + static scrollTo_Callback_2(mthis, x, y) native "Window_scrollTo_Callback"; + + static showModalDialog_Callback_3(mthis, url, dialogArgs, featureArgs) native "Window_showModalDialog_Callback"; static stop_Callback(mthis) native "Window_stop_Callback"; - static webkitRequestFileSystem_Callback_us_ll_FileSystemCallback_ErrorCallback(mthis, type, size, successCallback, errorCallback) native "Window_webkitRequestFileSystem_Callback_unsigned short_long long_FileSystemCallback_ErrorCallback"; + static webkitRequestFileSystem_Callback_4(mthis, type, size, successCallback, errorCallback) native "Window_webkitRequestFileSystem_Callback"; + + static webkitRequestFileSystem_Callback_3(mthis, type, size, successCallback) native "Window_webkitRequestFileSystem_Callback"; + + static webkitResolveLocalFileSystemURL_Callback_3(mthis, url, successCallback, errorCallback) native "Window_webkitResolveLocalFileSystemURL_Callback"; - static webkitResolveLocalFileSystemURL_Callback_DOMString_EntryCallback_ErrorCallback(mthis, url, successCallback, errorCallback) native "Window_webkitResolveLocalFileSystemURL_Callback_DOMString_EntryCallback_ErrorCallback"; + static webkitResolveLocalFileSystemURL_Callback_2(mthis, url, successCallback) native "Window_webkitResolveLocalFileSystemURL_Callback"; - static atob_Callback_DOMString(mthis, string) native "Window_atob_Callback_DOMString"; + static atob_Callback_1(mthis, string) native "Window_atob_Callback"; - static btoa_Callback_DOMString(mthis, string) native "Window_btoa_Callback_DOMString"; + static btoa_Callback_1(mthis, string) native "Window_btoa_Callback"; - static clearInterval_Callback_long(mthis, handle) native "Window_clearInterval_Callback_long"; + static clearInterval_Callback_1(mthis, handle) native "Window_clearInterval_Callback"; - static clearTimeout_Callback_long(mthis, handle) native "Window_clearTimeout_Callback_long"; + static clearTimeout_Callback_1(mthis, handle) native "Window_clearTimeout_Callback"; - static setInterval_Callback_ScriptValue_long(mthis, handler, timeout) native "Window_setInterval_Callback"; + static setInterval_Callback_2(mthis, handler, timeout) native "Window_setInterval_Callback"; - static setTimeout_Callback_ScriptValue_long(mthis, handler, timeout) native "Window_setTimeout_Callback"; + static setTimeout_Callback_2(mthis, handler, timeout) native "Window_setTimeout_Callback"; } class BlinkWorker { - static constructorCallback_DOMString(scriptUrl) native "Worker_constructorCallback_DOMString"; + static constructorCallback_1(scriptUrl) native "Worker_constructorCallback"; - static postMessage_Callback_SerializedScriptValue_SEQ_MessagePort_SEQ(mthis, message, transfer) native "Worker_postMessage_Callback"; + static postMessage_Callback_2(mthis, message, transfer) native "Worker_postMessage_Callback"; static terminate_Callback(mthis) native "Worker_terminate_Callback"; } @@ -8991,7 +9003,7 @@ class BlinkXMLHttpRequest { static responseType_Getter(mthis) native "XMLHttpRequest_responseType_Getter"; - static responseType_Setter_DOMString(mthis, value) native "XMLHttpRequest_responseType_Setter"; + static responseType_Setter(mthis, value) native "XMLHttpRequest_responseType_Setter"; static responseURL_Getter(mthis) native "XMLHttpRequest_responseURL_Getter"; @@ -9003,27 +9015,27 @@ class BlinkXMLHttpRequest { static timeout_Getter(mthis) native "XMLHttpRequest_timeout_Getter"; - static timeout_Setter_ul(mthis, value) native "XMLHttpRequest_timeout_Setter"; + static timeout_Setter(mthis, value) native "XMLHttpRequest_timeout_Setter"; static upload_Getter(mthis) native "XMLHttpRequest_upload_Getter"; static withCredentials_Getter(mthis) native "XMLHttpRequest_withCredentials_Getter"; - static withCredentials_Setter_boolean(mthis, value) native "XMLHttpRequest_withCredentials_Setter"; + static withCredentials_Setter(mthis, value) native "XMLHttpRequest_withCredentials_Setter"; static abort_Callback(mthis) native "XMLHttpRequest_abort_Callback"; static getAllResponseHeaders_Callback(mthis) native "XMLHttpRequest_getAllResponseHeaders_Callback"; - static getResponseHeader_Callback_DOMString(mthis, header) native "XMLHttpRequest_getResponseHeader_Callback_DOMString"; + static getResponseHeader_Callback_1(mthis, header) native "XMLHttpRequest_getResponseHeader_Callback"; - static open_Callback_DOMString_DOMString_boolean_DOMString_DOMString(mthis, method, url, async, user, password) native "XMLHttpRequest_open_Callback"; + static open_Callback_5(mthis, method, url, async, user, password) native "XMLHttpRequest_open_Callback"; - static overrideMimeType_Callback_DOMString(mthis, override) native "XMLHttpRequest_overrideMimeType_Callback_DOMString"; + static overrideMimeType_Callback_1(mthis, override) native "XMLHttpRequest_overrideMimeType_Callback"; - static send_Callback(mthis, data) native "XMLHttpRequest_send_Callback"; + static send_Callback_1(mthis, data) native "XMLHttpRequest_send_Callback"; - static setRequestHeader_Callback_DOMString_DOMString(mthis, header, value) native "XMLHttpRequest_setRequestHeader_Callback_DOMString_DOMString"; + static setRequestHeader_Callback_2(mthis, header, value) native "XMLHttpRequest_setRequestHeader_Callback"; } class BlinkXMLHttpRequestProgressEvent {} @@ -9033,25 +9045,25 @@ class BlinkXMLHttpRequestUpload {} class BlinkXMLSerializer { static constructorCallback() native "XMLSerializer_constructorCallback"; - static serializeToString_Callback_Node(mthis, node) native "XMLSerializer_serializeToString_Callback_Node"; + static serializeToString_Callback_1(mthis, node) native "XMLSerializer_serializeToString_Callback"; } class BlinkXPathEvaluator { static constructorCallback() native "XPathEvaluator_constructorCallback"; - static createExpression_Callback_DOMString_XPathNSResolver(mthis, expression, resolver) native "XPathEvaluator_createExpression_Callback_DOMString_XPathNSResolver"; + static createExpression_Callback_2(mthis, expression, resolver) native "XPathEvaluator_createExpression_Callback"; - static createNSResolver_Callback_Node(mthis, nodeResolver) native "XPathEvaluator_createNSResolver_Callback_Node"; + static createNSResolver_Callback_1(mthis, nodeResolver) native "XPathEvaluator_createNSResolver_Callback"; - static evaluate_Callback_DOMString_Node_XPathNSResolver_us_XPathResult(mthis, expression, contextNode, resolver, type, inResult) native "XPathEvaluator_evaluate_Callback_DOMString_Node_XPathNSResolver_unsigned short_XPathResult"; + static evaluate_Callback_5(mthis, expression, contextNode, resolver, type, inResult) native "XPathEvaluator_evaluate_Callback"; } class BlinkXPathExpression { - static evaluate_Callback_Node_us_XPathResult(mthis, contextNode, type, inResult) native "XPathExpression_evaluate_Callback_Node_unsigned short_XPathResult"; + static evaluate_Callback_3(mthis, contextNode, type, inResult) native "XPathExpression_evaluate_Callback"; } class BlinkXPathNSResolver { - static lookupNamespaceURI_Callback_DOMString(mthis, prefix) native "XPathNSResolver_lookupNamespaceURI_Callback_DOMString"; + static lookupNamespaceURI_Callback_1(mthis, prefix) native "XPathNSResolver_lookupNamespaceURI_Callback"; } class BlinkXPathResult { @@ -9071,7 +9083,7 @@ class BlinkXPathResult { static iterateNext_Callback(mthis) native "XPathResult_iterateNext_Callback"; - static snapshotItem_Callback_ul(mthis, index) native "XPathResult_snapshotItem_Callback_unsigned long"; + static snapshotItem_Callback_1(mthis, index) native "XPathResult_snapshotItem_Callback"; } class BlinkXSLTProcessor { @@ -9079,19 +9091,19 @@ class BlinkXSLTProcessor { static clearParameters_Callback(mthis) native "XSLTProcessor_clearParameters_Callback"; - static getParameter_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "XSLTProcessor_getParameter_Callback"; + static getParameter_Callback_2(mthis, namespaceURI, localName) native "XSLTProcessor_getParameter_Callback"; - static importStylesheet_Callback_Node(mthis, stylesheet) native "XSLTProcessor_importStylesheet_Callback_Node"; + static importStylesheet_Callback_1(mthis, stylesheet) native "XSLTProcessor_importStylesheet_Callback"; - static removeParameter_Callback_DOMString_DOMString(mthis, namespaceURI, localName) native "XSLTProcessor_removeParameter_Callback"; + static removeParameter_Callback_2(mthis, namespaceURI, localName) native "XSLTProcessor_removeParameter_Callback"; static reset_Callback(mthis) native "XSLTProcessor_reset_Callback"; - static setParameter_Callback_DOMString_DOMString_DOMString(mthis, namespaceURI, localName, value) native "XSLTProcessor_setParameter_Callback"; + static setParameter_Callback_3(mthis, namespaceURI, localName, value) native "XSLTProcessor_setParameter_Callback"; - static transformToDocument_Callback_Node(mthis, source) native "XSLTProcessor_transformToDocument_Callback_Node"; + static transformToDocument_Callback_1(mthis, source) native "XSLTProcessor_transformToDocument_Callback"; - static transformToFragment_Callback_Node_Document(mthis, source, docVal) native "XSLTProcessor_transformToFragment_Callback_Node_Document"; + static transformToFragment_Callback_2(mthis, source, docVal) native "XSLTProcessor_transformToFragment_Callback"; } diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart index 95b421973f66..1c465c629b09 100644 --- a/sdk/lib/html/dart2js/html_dart2js.dart +++ b/sdk/lib/html/dart2js/html_dart2js.dart @@ -25541,10 +25541,10 @@ class ServiceWorkerGlobalScope extends WorkerGlobalScope { var requestInitDict_1 = convertDartToNative_Dictionary(requestInitDict); return _fetch_2(request, requestInitDict_1); } - if ((request is Request || request == null) && requestInitDict == null) { + if ((request is _Request || request == null) && requestInitDict == null) { return _fetch_3(request); } - if (requestInitDict != null && (request is Request || request == null)) { + if (requestInitDict != null && (request is _Request || request == null)) { var requestInitDict_2 = convertDartToNative_Dictionary(requestInitDict); return _fetch_4(request, requestInitDict_2); } @@ -25564,12 +25564,12 @@ class ServiceWorkerGlobalScope extends WorkerGlobalScope { @DomName('ServiceWorkerGlobalScope.fetch') @DocsEditable() @Experimental() // untriaged - Future _fetch_3(Request request) native; + Future _fetch_3(_Request request) native; @JSName('fetch') @DomName('ServiceWorkerGlobalScope.fetch') @DocsEditable() @Experimental() // untriaged - Future _fetch_4(Request request, requestInitDict) native; + Future _fetch_4(_Request request, requestInitDict) native; @DomName('ServiceWorkerGlobalScope.onmessage') @DocsEditable() diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart index cd0f9d89017c..e1b8b5ef9826 100644 --- a/sdk/lib/html/dartium/html_dartium.dart +++ b/sdk/lib/html/dartium/html_dartium.dart @@ -670,7 +670,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.download') @DocsEditable() - void set download(String value) => _blink.BlinkHTMLAnchorElement.download_Setter_DOMString(this, value); + void set download(String value) => _blink.BlinkHTMLAnchorElement.download_Setter(this, value); @DomName('HTMLAnchorElement.hreflang') @DocsEditable() @@ -678,7 +678,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.hreflang') @DocsEditable() - void set hreflang(String value) => _blink.BlinkHTMLAnchorElement.hreflang_Setter_DOMString(this, value); + void set hreflang(String value) => _blink.BlinkHTMLAnchorElement.hreflang_Setter(this, value); @DomName('HTMLAnchorElement.integrity') @DocsEditable() @@ -688,7 +688,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLAnchorElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLAnchorElement.integrity_Setter(this, value); @DomName('HTMLAnchorElement.rel') @DocsEditable() @@ -696,7 +696,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.rel') @DocsEditable() - void set rel(String value) => _blink.BlinkHTMLAnchorElement.rel_Setter_DOMString(this, value); + void set rel(String value) => _blink.BlinkHTMLAnchorElement.rel_Setter(this, value); @DomName('HTMLAnchorElement.target') @DocsEditable() @@ -704,7 +704,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.target') @DocsEditable() - void set target(String value) => _blink.BlinkHTMLAnchorElement.target_Setter_DOMString(this, value); + void set target(String value) => _blink.BlinkHTMLAnchorElement.target_Setter(this, value); @DomName('HTMLAnchorElement.type') @DocsEditable() @@ -712,7 +712,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLAnchorElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLAnchorElement.type_Setter(this, value); @DomName('HTMLAnchorElement.hash') @DocsEditable() @@ -720,7 +720,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.hash') @DocsEditable() - void set hash(String value) => _blink.BlinkHTMLAnchorElement.hash_Setter_DOMString(this, value); + void set hash(String value) => _blink.BlinkHTMLAnchorElement.hash_Setter(this, value); @DomName('HTMLAnchorElement.host') @DocsEditable() @@ -728,7 +728,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.host') @DocsEditable() - void set host(String value) => _blink.BlinkHTMLAnchorElement.host_Setter_DOMString(this, value); + void set host(String value) => _blink.BlinkHTMLAnchorElement.host_Setter(this, value); @DomName('HTMLAnchorElement.hostname') @DocsEditable() @@ -736,7 +736,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.hostname') @DocsEditable() - void set hostname(String value) => _blink.BlinkHTMLAnchorElement.hostname_Setter_DOMString(this, value); + void set hostname(String value) => _blink.BlinkHTMLAnchorElement.hostname_Setter(this, value); @DomName('HTMLAnchorElement.href') @DocsEditable() @@ -744,7 +744,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.href') @DocsEditable() - void set href(String value) => _blink.BlinkHTMLAnchorElement.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkHTMLAnchorElement.href_Setter(this, value); @DomName('HTMLAnchorElement.origin') @DocsEditable() @@ -760,7 +760,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.password') @DocsEditable() @Experimental() // untriaged - void set password(String value) => _blink.BlinkHTMLAnchorElement.password_Setter_DOMString(this, value); + void set password(String value) => _blink.BlinkHTMLAnchorElement.password_Setter(this, value); @DomName('HTMLAnchorElement.pathname') @DocsEditable() @@ -768,7 +768,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.pathname') @DocsEditable() - void set pathname(String value) => _blink.BlinkHTMLAnchorElement.pathname_Setter_DOMString(this, value); + void set pathname(String value) => _blink.BlinkHTMLAnchorElement.pathname_Setter(this, value); @DomName('HTMLAnchorElement.port') @DocsEditable() @@ -776,7 +776,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.port') @DocsEditable() - void set port(String value) => _blink.BlinkHTMLAnchorElement.port_Setter_DOMString(this, value); + void set port(String value) => _blink.BlinkHTMLAnchorElement.port_Setter(this, value); @DomName('HTMLAnchorElement.protocol') @DocsEditable() @@ -784,7 +784,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.protocol') @DocsEditable() - void set protocol(String value) => _blink.BlinkHTMLAnchorElement.protocol_Setter_DOMString(this, value); + void set protocol(String value) => _blink.BlinkHTMLAnchorElement.protocol_Setter(this, value); @DomName('HTMLAnchorElement.search') @DocsEditable() @@ -792,7 +792,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.search') @DocsEditable() - void set search(String value) => _blink.BlinkHTMLAnchorElement.search_Setter_DOMString(this, value); + void set search(String value) => _blink.BlinkHTMLAnchorElement.search_Setter(this, value); @DomName('HTMLAnchorElement.username') @DocsEditable() @@ -802,7 +802,7 @@ class AnchorElement extends HtmlElement implements UrlUtils { @DomName('HTMLAnchorElement.username') @DocsEditable() @Experimental() // untriaged - void set username(String value) => _blink.BlinkHTMLAnchorElement.username_Setter_DOMString(this, value); + void set username(String value) => _blink.BlinkHTMLAnchorElement.username_Setter(this, value); @DomName('HTMLAnchorElement.toString') @DocsEditable() @@ -827,13 +827,13 @@ class Animation extends AnimationNode { @DocsEditable() factory Animation(Element target, List keyframes, [timingInput]) { if ((keyframes is List || keyframes == null) && (target is Element || target == null) && timingInput == null) { - return _blink.BlinkAnimation.constructorCallback_Element_SEQ_Dictionary_SEQ(target, keyframes); + return _blink.BlinkAnimation.constructorCallback_2(target, keyframes); } if ((timingInput is num || timingInput == null) && (keyframes is List || keyframes == null) && (target is Element || target == null)) { - return _blink.BlinkAnimation.constructorCallback_Element_SEQ_Dictionary_SEQ_double(target, keyframes, timingInput); + return _blink.BlinkAnimation.constructorCallback_3(target, keyframes, timingInput); } if ((timingInput is Map || timingInput == null) && (keyframes is List || keyframes == null) && (target is Element || target == null)) { - return _blink.BlinkAnimation.constructorCallback_Element_SEQ_Dictionary_SEQ_Dictionary(target, keyframes, timingInput); + return _blink.BlinkAnimation.constructorCallback_3(target, keyframes, timingInput); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -956,7 +956,7 @@ class AnimationPlayer extends EventTarget { @DomName('AnimationPlayer.currentTime') @DocsEditable() @Experimental() // untriaged - void set currentTime(num value) => _blink.BlinkAnimationPlayer.currentTime_Setter_double(this, value); + void set currentTime(num value) => _blink.BlinkAnimationPlayer.currentTime_Setter(this, value); @DomName('AnimationPlayer.finished') @DocsEditable() @@ -976,7 +976,7 @@ class AnimationPlayer extends EventTarget { @DomName('AnimationPlayer.playbackRate') @DocsEditable() @Experimental() // untriaged - void set playbackRate(num value) => _blink.BlinkAnimationPlayer.playbackRate_Setter_double(this, value); + void set playbackRate(num value) => _blink.BlinkAnimationPlayer.playbackRate_Setter(this, value); @DomName('AnimationPlayer.source') @DocsEditable() @@ -986,7 +986,7 @@ class AnimationPlayer extends EventTarget { @DomName('AnimationPlayer.source') @DocsEditable() @Experimental() // untriaged - void set source(AnimationNode value) => _blink.BlinkAnimationPlayer.source_Setter_AnimationNode(this, value); + void set source(AnimationNode value) => _blink.BlinkAnimationPlayer.source_Setter(this, value); @DomName('AnimationPlayer.startTime') @DocsEditable() @@ -996,7 +996,7 @@ class AnimationPlayer extends EventTarget { @DomName('AnimationPlayer.startTime') @DocsEditable() @Experimental() // untriaged - void set startTime(num value) => _blink.BlinkAnimationPlayer.startTime_Setter_double(this, value); + void set startTime(num value) => _blink.BlinkAnimationPlayer.startTime_Setter(this, value); @DomName('AnimationPlayer.cancel') @DocsEditable() @@ -1076,7 +1076,7 @@ class AnimationTimeline extends NativeFieldWrapperClass2 { @DomName('AnimationTimeline.play') @DocsEditable() @Experimental() // untriaged - AnimationPlayer play(AnimationNode source) => _blink.BlinkAnimationTimeline.play_Callback_AnimationNode(this, source); + AnimationPlayer play(AnimationNode source) => _blink.BlinkAnimationTimeline.play_Callback_1(this, source); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1339,7 +1339,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.alt') @DocsEditable() - void set alt(String value) => _blink.BlinkHTMLAreaElement.alt_Setter_DOMString(this, value); + void set alt(String value) => _blink.BlinkHTMLAreaElement.alt_Setter(this, value); @DomName('HTMLAreaElement.coords') @DocsEditable() @@ -1347,7 +1347,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.coords') @DocsEditable() - void set coords(String value) => _blink.BlinkHTMLAreaElement.coords_Setter_DOMString(this, value); + void set coords(String value) => _blink.BlinkHTMLAreaElement.coords_Setter(this, value); @DomName('HTMLAreaElement.shape') @DocsEditable() @@ -1355,7 +1355,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.shape') @DocsEditable() - void set shape(String value) => _blink.BlinkHTMLAreaElement.shape_Setter_DOMString(this, value); + void set shape(String value) => _blink.BlinkHTMLAreaElement.shape_Setter(this, value); @DomName('HTMLAreaElement.target') @DocsEditable() @@ -1363,7 +1363,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.target') @DocsEditable() - void set target(String value) => _blink.BlinkHTMLAreaElement.target_Setter_DOMString(this, value); + void set target(String value) => _blink.BlinkHTMLAreaElement.target_Setter(this, value); @DomName('HTMLAreaElement.hash') @DocsEditable() @@ -1371,7 +1371,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.hash') @DocsEditable() - void set hash(String value) => _blink.BlinkHTMLAreaElement.hash_Setter_DOMString(this, value); + void set hash(String value) => _blink.BlinkHTMLAreaElement.hash_Setter(this, value); @DomName('HTMLAreaElement.host') @DocsEditable() @@ -1379,7 +1379,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.host') @DocsEditable() - void set host(String value) => _blink.BlinkHTMLAreaElement.host_Setter_DOMString(this, value); + void set host(String value) => _blink.BlinkHTMLAreaElement.host_Setter(this, value); @DomName('HTMLAreaElement.hostname') @DocsEditable() @@ -1387,7 +1387,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.hostname') @DocsEditable() - void set hostname(String value) => _blink.BlinkHTMLAreaElement.hostname_Setter_DOMString(this, value); + void set hostname(String value) => _blink.BlinkHTMLAreaElement.hostname_Setter(this, value); @DomName('HTMLAreaElement.href') @DocsEditable() @@ -1395,7 +1395,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.href') @DocsEditable() - void set href(String value) => _blink.BlinkHTMLAreaElement.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkHTMLAreaElement.href_Setter(this, value); @DomName('HTMLAreaElement.origin') @DocsEditable() @@ -1410,7 +1410,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.password') @DocsEditable() @Experimental() // untriaged - void set password(String value) => _blink.BlinkHTMLAreaElement.password_Setter_DOMString(this, value); + void set password(String value) => _blink.BlinkHTMLAreaElement.password_Setter(this, value); @DomName('HTMLAreaElement.pathname') @DocsEditable() @@ -1418,7 +1418,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.pathname') @DocsEditable() - void set pathname(String value) => _blink.BlinkHTMLAreaElement.pathname_Setter_DOMString(this, value); + void set pathname(String value) => _blink.BlinkHTMLAreaElement.pathname_Setter(this, value); @DomName('HTMLAreaElement.port') @DocsEditable() @@ -1426,7 +1426,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.port') @DocsEditable() - void set port(String value) => _blink.BlinkHTMLAreaElement.port_Setter_DOMString(this, value); + void set port(String value) => _blink.BlinkHTMLAreaElement.port_Setter(this, value); @DomName('HTMLAreaElement.protocol') @DocsEditable() @@ -1434,7 +1434,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.protocol') @DocsEditable() - void set protocol(String value) => _blink.BlinkHTMLAreaElement.protocol_Setter_DOMString(this, value); + void set protocol(String value) => _blink.BlinkHTMLAreaElement.protocol_Setter(this, value); @DomName('HTMLAreaElement.search') @DocsEditable() @@ -1442,7 +1442,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.search') @DocsEditable() - void set search(String value) => _blink.BlinkHTMLAreaElement.search_Setter_DOMString(this, value); + void set search(String value) => _blink.BlinkHTMLAreaElement.search_Setter(this, value); @DomName('HTMLAreaElement.username') @DocsEditable() @@ -1452,7 +1452,7 @@ class AreaElement extends HtmlElement implements UrlUtils { @DomName('HTMLAreaElement.username') @DocsEditable() @Experimental() // untriaged - void set username(String value) => _blink.BlinkHTMLAreaElement.username_Setter_DOMString(this, value); + void set username(String value) => _blink.BlinkHTMLAreaElement.username_Setter(this, value); @DomName('HTMLAreaElement.toString') @DocsEditable() @@ -1476,7 +1476,7 @@ class AudioElement extends MediaElement { @DomName('HTMLAudioElement.HTMLAudioElement') @DocsEditable() factory AudioElement([String src]) { - return _blink.BlinkHTMLAudioElement.constructorCallback_DOMString(src); + return _blink.BlinkHTMLAudioElement.constructorCallback_1(src); } /** * Constructor instantiated by the DOM when a custom element has been created. @@ -1508,7 +1508,7 @@ class AudioTrack extends NativeFieldWrapperClass2 { @DomName('AudioTrack.enabled') @DocsEditable() @Experimental() // untriaged - void set enabled(bool value) => _blink.BlinkAudioTrack.enabled_Setter_boolean(this, value); + void set enabled(bool value) => _blink.BlinkAudioTrack.enabled_Setter(this, value); @DomName('AudioTrack.id') @DocsEditable() @@ -1558,12 +1558,12 @@ class AudioTrackList extends EventTarget { @DomName('AudioTrackList.__getter__') @DocsEditable() @Experimental() // untriaged - AudioTrack __getter__(int index) => _blink.BlinkAudioTrackList.$__getter___Callback_ul(this, index); + AudioTrack __getter__(int index) => _blink.BlinkAudioTrackList.$__getter___Callback_1(this, index); @DomName('AudioTrackList.getTrackById') @DocsEditable() @Experimental() // untriaged - AudioTrack getTrackById(String id) => _blink.BlinkAudioTrackList.getTrackById_Callback_DOMString(this, id); + AudioTrack getTrackById(String id) => _blink.BlinkAudioTrackList.getTrackById_Callback_1(this, id); @DomName('AudioTrackList.onchange') @DocsEditable() @@ -1664,7 +1664,7 @@ class BaseElement extends HtmlElement { @DomName('HTMLBaseElement.href') @DocsEditable() - void set href(String value) => _blink.BlinkHTMLBaseElement.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkHTMLBaseElement.href_Setter(this, value); @DomName('HTMLBaseElement.target') @DocsEditable() @@ -1672,7 +1672,7 @@ class BaseElement extends HtmlElement { @DomName('HTMLBaseElement.target') @DocsEditable() - void set target(String value) => _blink.BlinkHTMLBaseElement.target_Setter_DOMString(this, value); + void set target(String value) => _blink.BlinkHTMLBaseElement.target_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1726,7 +1726,7 @@ class BeforeUnloadEvent extends Event { @DomName('BeforeUnloadEvent.returnValue') @DocsEditable() - void set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.returnValue_Setter_DOMString(this, value); + void set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.returnValue_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1744,7 +1744,7 @@ class Blob extends NativeFieldWrapperClass2 { factory Blob(List blobParts, [String type, String endings]) => _create(blobParts, type, endings); @DocsEditable() - static Blob _create(blobParts, type, endings) => _blink.BlinkBlob.constructorCallback_Array_DOMString_DOMString(blobParts, type, endings); + static Blob _create(blobParts, type, endings) => _blink.BlinkBlob.constructorCallback_3(blobParts, type, endings); @DomName('Blob.size') @DocsEditable() @@ -1761,13 +1761,13 @@ class Blob extends NativeFieldWrapperClass2 { Blob slice([int start, int end, String contentType]) { if (contentType != null) { - return _blink.BlinkBlob.slice_Callback_ll_ll_DOMString(this, start, end, contentType); + return _blink.BlinkBlob.slice_Callback_3(this, start, end, contentType); } if (end != null) { - return _blink.BlinkBlob.slice_Callback_ll_ll(this, start, end); + return _blink.BlinkBlob.slice_Callback_2(this, start, end); } if (start != null) { - return _blink.BlinkBlob.slice_Callback_ll(this, start); + return _blink.BlinkBlob.slice_Callback_1(this, start); } return _blink.BlinkBlob.slice_Callback(this); } @@ -2016,7 +2016,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.autofocus') @DocsEditable() - void set autofocus(bool value) => _blink.BlinkHTMLButtonElement.autofocus_Setter_boolean(this, value); + void set autofocus(bool value) => _blink.BlinkHTMLButtonElement.autofocus_Setter(this, value); @DomName('HTMLButtonElement.disabled') @DocsEditable() @@ -2024,7 +2024,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLButtonElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLButtonElement.disabled_Setter(this, value); @DomName('HTMLButtonElement.form') @DocsEditable() @@ -2036,7 +2036,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.formAction') @DocsEditable() - void set formAction(String value) => _blink.BlinkHTMLButtonElement.formAction_Setter_DOMString(this, value); + void set formAction(String value) => _blink.BlinkHTMLButtonElement.formAction_Setter(this, value); @DomName('HTMLButtonElement.formEnctype') @DocsEditable() @@ -2044,7 +2044,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.formEnctype') @DocsEditable() - void set formEnctype(String value) => _blink.BlinkHTMLButtonElement.formEnctype_Setter_DOMString(this, value); + void set formEnctype(String value) => _blink.BlinkHTMLButtonElement.formEnctype_Setter(this, value); @DomName('HTMLButtonElement.formMethod') @DocsEditable() @@ -2052,7 +2052,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.formMethod') @DocsEditable() - void set formMethod(String value) => _blink.BlinkHTMLButtonElement.formMethod_Setter_DOMString(this, value); + void set formMethod(String value) => _blink.BlinkHTMLButtonElement.formMethod_Setter(this, value); @DomName('HTMLButtonElement.formNoValidate') @DocsEditable() @@ -2060,7 +2060,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.formNoValidate') @DocsEditable() - void set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.formNoValidate_Setter_boolean(this, value); + void set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.formNoValidate_Setter(this, value); @DomName('HTMLButtonElement.formTarget') @DocsEditable() @@ -2068,7 +2068,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.formTarget') @DocsEditable() - void set formTarget(String value) => _blink.BlinkHTMLButtonElement.formTarget_Setter_DOMString(this, value); + void set formTarget(String value) => _blink.BlinkHTMLButtonElement.formTarget_Setter(this, value); @DomName('HTMLButtonElement.labels') @DocsEditable() @@ -2081,7 +2081,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLButtonElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLButtonElement.name_Setter(this, value); @DomName('HTMLButtonElement.type') @DocsEditable() @@ -2089,7 +2089,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLButtonElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLButtonElement.type_Setter(this, value); @DomName('HTMLButtonElement.validationMessage') @DocsEditable() @@ -2105,7 +2105,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLButtonElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLButtonElement.value_Setter(this, value); @DomName('HTMLButtonElement.willValidate') @DocsEditable() @@ -2117,7 +2117,7 @@ class ButtonElement extends HtmlElement { @DomName('HTMLButtonElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLButtonElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLButtonElement.setCustomValidity_Callback_1(this, error); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -2153,22 +2153,22 @@ class CacheStorage extends NativeFieldWrapperClass2 { @DomName('CacheStorage.create') @DocsEditable() @Experimental() // untriaged - Future create(String cacheName) => _blink.BlinkCacheStorage.create_Callback_DOMString(this, cacheName); + Future create(String cacheName) => _blink.BlinkCacheStorage.create_Callback_1(this, cacheName); @DomName('CacheStorage.delete') @DocsEditable() @Experimental() // untriaged - Future delete(String cacheName) => _blink.BlinkCacheStorage.delete_Callback_DOMString(this, cacheName); + Future delete(String cacheName) => _blink.BlinkCacheStorage.delete_Callback_1(this, cacheName); @DomName('CacheStorage.get') @DocsEditable() @Experimental() // untriaged - Future get(String cacheName) => _blink.BlinkCacheStorage.get_Callback_DOMString(this, cacheName); + Future get(String cacheName) => _blink.BlinkCacheStorage.get_Callback_1(this, cacheName); @DomName('CacheStorage.has') @DocsEditable() @Experimental() // untriaged - Future has(String cacheName) => _blink.BlinkCacheStorage.has_Callback_DOMString(this, cacheName); + Future has(String cacheName) => _blink.BlinkCacheStorage.has_Callback_1(this, cacheName); @DomName('CacheStorage.keys') @DocsEditable() @@ -2197,7 +2197,7 @@ class Canvas2DContextAttributes extends NativeFieldWrapperClass2 { @DomName('Canvas2DContextAttributes.alpha') @DocsEditable() - void set alpha(bool value) => _blink.BlinkCanvas2DContextAttributes.alpha_Setter_boolean(this, value); + void set alpha(bool value) => _blink.BlinkCanvas2DContextAttributes.alpha_Setter(this, value); @DomName('Canvas2DContextAttributes.storage') @DocsEditable() @@ -2207,7 +2207,7 @@ class Canvas2DContextAttributes extends NativeFieldWrapperClass2 { @DomName('Canvas2DContextAttributes.storage') @DocsEditable() @Experimental() // untriaged - void set storage(String value) => _blink.BlinkCanvas2DContextAttributes.storage_Setter_DOMString(this, value); + void set storage(String value) => _blink.BlinkCanvas2DContextAttributes.storage_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -2263,7 +2263,7 @@ class CanvasElement extends HtmlElement implements CanvasImageSource { /// The height of this canvas element in CSS pixels. @DomName('HTMLCanvasElement.height') @DocsEditable() - void set height(int value) => _blink.BlinkHTMLCanvasElement.height_Setter_long(this, value); + void set height(int value) => _blink.BlinkHTMLCanvasElement.height_Setter(this, value); /// The width of this canvas element in CSS pixels. @DomName('HTMLCanvasElement.width') @@ -2273,15 +2273,15 @@ class CanvasElement extends HtmlElement implements CanvasImageSource { /// The width of this canvas element in CSS pixels. @DomName('HTMLCanvasElement.width') @DocsEditable() - void set width(int value) => _blink.BlinkHTMLCanvasElement.width_Setter_long(this, value); + void set width(int value) => _blink.BlinkHTMLCanvasElement.width_Setter(this, value); @DomName('HTMLCanvasElement.getContext') @DocsEditable() - Object getContext(String contextId, [Map attrs]) => _blink.BlinkHTMLCanvasElement.getContext_Callback_DOMString_Dictionary(this, contextId, attrs); + Object getContext(String contextId, [Map attrs]) => _blink.BlinkHTMLCanvasElement.getContext_Callback_2(this, contextId, attrs); @DomName('HTMLCanvasElement.toDataURL') @DocsEditable() - String _toDataUrl(String type, [num quality]) => _blink.BlinkHTMLCanvasElement.toDataURL_Callback_DOMString_float(this, type, quality); + String _toDataUrl(String type, [num quality]) => _blink.BlinkHTMLCanvasElement.toDataURL_Callback_2(this, type, quality); /// Stream of `webglcontextlost` events handled by this [CanvasElement]. @DomName('HTMLCanvasElement.onwebglcontextlost') @@ -2424,7 +2424,7 @@ class CanvasGradient extends NativeFieldWrapperClass2 { */ @DomName('CanvasGradient.addColorStop') @DocsEditable() - void addColorStop(num offset, String color) => _blink.BlinkCanvasGradient.addColorStop_Callback_float_DOMString(this, offset, color); + void addColorStop(num offset, String color) => _blink.BlinkCanvasGradient.addColorStop_Callback_2(this, offset, color); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -2495,7 +2495,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.currentTransform') @DocsEditable() @Experimental() // untriaged - void set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.currentTransform_Setter_SVGMatrix(this, value); + void set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.currentTransform_Setter(this, value); @DomName('CanvasRenderingContext2D.fillStyle') @DocsEditable() @@ -2503,7 +2503,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.fillStyle') @DocsEditable() - void set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.fillStyle_Setter_object(this, value); + void set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.fillStyle_Setter(this, value); @DomName('CanvasRenderingContext2D.font') @DocsEditable() @@ -2511,7 +2511,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.font') @DocsEditable() - void set font(String value) => _blink.BlinkCanvasRenderingContext2D.font_Setter_DOMString(this, value); + void set font(String value) => _blink.BlinkCanvasRenderingContext2D.font_Setter(this, value); @DomName('CanvasRenderingContext2D.globalAlpha') @DocsEditable() @@ -2519,7 +2519,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.globalAlpha') @DocsEditable() - void set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.globalAlpha_Setter_float(this, value); + void set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.globalAlpha_Setter(this, value); @DomName('CanvasRenderingContext2D.globalCompositeOperation') @DocsEditable() @@ -2527,7 +2527,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.globalCompositeOperation') @DocsEditable() - void set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.globalCompositeOperation_Setter_DOMString(this, value); + void set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.globalCompositeOperation_Setter(this, value); /** * Whether images and patterns on this canvas will be smoothed when this @@ -2557,7 +2557,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.imageSmoothingEnabled') @DocsEditable() @Experimental() // untriaged - void set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.imageSmoothingEnabled_Setter_boolean(this, value); + void set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.imageSmoothingEnabled_Setter(this, value); @DomName('CanvasRenderingContext2D.lineCap') @DocsEditable() @@ -2565,7 +2565,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.lineCap') @DocsEditable() - void set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.lineCap_Setter_DOMString(this, value); + void set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.lineCap_Setter(this, value); @DomName('CanvasRenderingContext2D.lineDashOffset') @DocsEditable() @@ -2573,7 +2573,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.lineDashOffset') @DocsEditable() - void set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.lineDashOffset_Setter_float(this, value); + void set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.lineDashOffset_Setter(this, value); @DomName('CanvasRenderingContext2D.lineJoin') @DocsEditable() @@ -2581,7 +2581,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.lineJoin') @DocsEditable() - void set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.lineJoin_Setter_DOMString(this, value); + void set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.lineJoin_Setter(this, value); @DomName('CanvasRenderingContext2D.lineWidth') @DocsEditable() @@ -2589,7 +2589,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.lineWidth') @DocsEditable() - void set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.lineWidth_Setter_float(this, value); + void set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.lineWidth_Setter(this, value); @DomName('CanvasRenderingContext2D.miterLimit') @DocsEditable() @@ -2597,7 +2597,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.miterLimit') @DocsEditable() - void set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.miterLimit_Setter_float(this, value); + void set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.miterLimit_Setter(this, value); @DomName('CanvasRenderingContext2D.shadowBlur') @DocsEditable() @@ -2605,7 +2605,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.shadowBlur') @DocsEditable() - void set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.shadowBlur_Setter_float(this, value); + void set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.shadowBlur_Setter(this, value); @DomName('CanvasRenderingContext2D.shadowColor') @DocsEditable() @@ -2613,7 +2613,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.shadowColor') @DocsEditable() - void set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.shadowColor_Setter_DOMString(this, value); + void set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.shadowColor_Setter(this, value); @DomName('CanvasRenderingContext2D.shadowOffsetX') @DocsEditable() @@ -2621,7 +2621,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.shadowOffsetX') @DocsEditable() - void set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.shadowOffsetX_Setter_float(this, value); + void set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.shadowOffsetX_Setter(this, value); @DomName('CanvasRenderingContext2D.shadowOffsetY') @DocsEditable() @@ -2629,7 +2629,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.shadowOffsetY') @DocsEditable() - void set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.shadowOffsetY_Setter_float(this, value); + void set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.shadowOffsetY_Setter(this, value); @DomName('CanvasRenderingContext2D.strokeStyle') @DocsEditable() @@ -2637,7 +2637,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.strokeStyle') @DocsEditable() - void set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.strokeStyle_Setter_object(this, value); + void set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.strokeStyle_Setter(this, value); @DomName('CanvasRenderingContext2D.textAlign') @DocsEditable() @@ -2645,7 +2645,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.textAlign') @DocsEditable() - void set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.textAlign_Setter_DOMString(this, value); + void set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.textAlign_Setter(this, value); @DomName('CanvasRenderingContext2D.textBaseline') @DocsEditable() @@ -2653,12 +2653,16 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.textBaseline') @DocsEditable() - void set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.textBaseline_Setter_DOMString(this, value); + void set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.textBaseline_Setter(this, value); - @DomName('CanvasRenderingContext2D.addHitRegion') - @DocsEditable() - @Experimental() // untriaged - void addHitRegion([Map options]) => _blink.BlinkCanvasRenderingContext2D.addHitRegion_Callback_Dictionary(this, options); + void addHitRegion([Map options]) { + if (options != null) { + _blink.BlinkCanvasRenderingContext2D.addHitRegion_Callback_1(this, options); + return; + } + _blink.BlinkCanvasRenderingContext2D.addHitRegion_Callback(this); + return; + } @DomName('CanvasRenderingContext2D.beginPath') @DocsEditable() @@ -2671,7 +2675,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.clearRect') @DocsEditable() - void clearRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.clearRect_Callback_float_float_float_float(this, x, y, width, height); + void clearRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.clearRect_Callback_4(this, x, y, width, height); void clip([path_OR_winding, String winding]) { if (path_OR_winding == null && winding == null) { @@ -2679,15 +2683,15 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva return; } if ((path_OR_winding is String) && winding == null) { - _blink.BlinkCanvasRenderingContext2D.clip_Callback_DOMString(this, path_OR_winding); + _blink.BlinkCanvasRenderingContext2D.clip_Callback_1(this, path_OR_winding); return; } if ((path_OR_winding is Path2D) && winding == null) { - _blink.BlinkCanvasRenderingContext2D.clip_Callback_Path2D(this, path_OR_winding); + _blink.BlinkCanvasRenderingContext2D.clip_Callback_1(this, path_OR_winding); return; } if ((winding is String) && (path_OR_winding is Path2D)) { - _blink.BlinkCanvasRenderingContext2D.clip_Callback_Path2D_DOMString(this, path_OR_winding, winding); + _blink.BlinkCanvasRenderingContext2D.clip_Callback_2(this, path_OR_winding, winding); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2695,41 +2699,41 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.createImageData') @DocsEditable() - ImageData createImageData(num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.createImageData_Callback_float_float(this, sw, sh); + ImageData createImageData(num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.createImageData_Callback_2(this, sw, sh); @DomName('CanvasRenderingContext2D.createImageDataFromImageData') @DocsEditable() - ImageData createImageDataFromImageData(ImageData imagedata) => _blink.BlinkCanvasRenderingContext2D.createImageData_Callback_ImageData(this, imagedata); + ImageData createImageDataFromImageData(ImageData imagedata) => _blink.BlinkCanvasRenderingContext2D.createImageData_Callback_1(this, imagedata); @DomName('CanvasRenderingContext2D.createLinearGradient') @DocsEditable() - CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) => _blink.BlinkCanvasRenderingContext2D.createLinearGradient_Callback_float_float_float_float(this, x0, y0, x1, y1); + CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) => _blink.BlinkCanvasRenderingContext2D.createLinearGradient_Callback_4(this, x0, y0, x1, y1); CanvasPattern createPattern(canvas_OR_image, String repetitionType) { if ((repetitionType is String || repetitionType == null) && (canvas_OR_image is CanvasElement)) { - return _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_HTMLCanvasElement_DOMString(this, canvas_OR_image, repetitionType); + return _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_2(this, canvas_OR_image, repetitionType); } if ((repetitionType is String || repetitionType == null) && (canvas_OR_image is VideoElement)) { - return _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_HTMLVideoElement_DOMString(this, canvas_OR_image, repetitionType); + return _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_2(this, canvas_OR_image, repetitionType); } throw new ArgumentError("Incorrect number or type of arguments"); } @DomName('CanvasRenderingContext2D.createPatternFromImage') @DocsEditable() - CanvasPattern createPatternFromImage(ImageElement image, String repetitionType) => _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_HTMLImageElement_DOMString(this, image, repetitionType); + CanvasPattern createPatternFromImage(ImageElement image, String repetitionType) => _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_2(this, image, repetitionType); @DomName('CanvasRenderingContext2D.createRadialGradient') @DocsEditable() - CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) => _blink.BlinkCanvasRenderingContext2D.createRadialGradient_Callback_float_float_float_float_float_float(this, x0, y0, r0, x1, y1, r1); + CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) => _blink.BlinkCanvasRenderingContext2D.createRadialGradient_Callback_6(this, x0, y0, r0, x1, y1, r1); void drawFocusIfNeeded(element_OR_path, [Element element]) { if ((element_OR_path is Element) && element == null) { - _blink.BlinkCanvasRenderingContext2D.drawFocusIfNeeded_Callback_Element(this, element_OR_path); + _blink.BlinkCanvasRenderingContext2D.drawFocusIfNeeded_Callback_1(this, element_OR_path); return; } if ((element is Element) && (element_OR_path is Path2D)) { - _blink.BlinkCanvasRenderingContext2D.drawFocusIfNeeded_Callback_Path2D_Element(this, element_OR_path, element); + _blink.BlinkCanvasRenderingContext2D.drawFocusIfNeeded_Callback_2(this, element_OR_path, element); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2737,51 +2741,51 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva void _drawImage(canvas_OR_image_OR_imageBitmap_OR_video, num sx_OR_x, num sy_OR_y, [num sw_OR_width, num height_OR_sh, num dx, num dy, num dw, num dh]) { if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageElement) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLImageElement_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); return; } if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageElement) && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLImageElement_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); return; } if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageElement)) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLImageElement_float_float_float_float_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); return; } if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is CanvasElement) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLCanvasElement_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); return; } if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is CanvasElement) && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLCanvasElement_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); return; } if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is CanvasElement)) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLCanvasElement_float_float_float_float_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); return; } if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is VideoElement) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLVideoElement_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); return; } if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is VideoElement) && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLVideoElement_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); return; } if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is VideoElement)) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_HTMLVideoElement_float_float_float_float_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); return; } if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageBitmap) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_ImageBitmap_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y); return; } if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageBitmap) && dx == null && dy == null && dw == null && dh == null) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_ImageBitmap_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh); return; } if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageBitmap)) { - _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_ImageBitmap_float_float_float_float_float_float_float_float(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); + _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2793,15 +2797,15 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva return; } if ((path_OR_winding is String) && winding == null) { - _blink.BlinkCanvasRenderingContext2D.fill_Callback_DOMString(this, path_OR_winding); + _blink.BlinkCanvasRenderingContext2D.fill_Callback_1(this, path_OR_winding); return; } if ((path_OR_winding is Path2D) && winding == null) { - _blink.BlinkCanvasRenderingContext2D.fill_Callback_Path2D(this, path_OR_winding); + _blink.BlinkCanvasRenderingContext2D.fill_Callback_1(this, path_OR_winding); return; } if ((winding is String) && (path_OR_winding is Path2D)) { - _blink.BlinkCanvasRenderingContext2D.fill_Callback_Path2D_DOMString(this, path_OR_winding, winding); + _blink.BlinkCanvasRenderingContext2D.fill_Callback_2(this, path_OR_winding, winding); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2809,14 +2813,14 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.fillRect') @DocsEditable() - void fillRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.fillRect_Callback_float_float_float_float(this, x, y, width, height); + void fillRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.fillRect_Callback_4(this, x, y, width, height); void fillText(String text, num x, num y, [num maxWidth]) { if (maxWidth != null) { - _blink.BlinkCanvasRenderingContext2D.fillText_Callback_DOMString_float_float_float(this, text, x, y, maxWidth); + _blink.BlinkCanvasRenderingContext2D.fillText_Callback_4(this, text, x, y, maxWidth); return; } - _blink.BlinkCanvasRenderingContext2D.fillText_Callback_DOMString_float_float(this, text, x, y); + _blink.BlinkCanvasRenderingContext2D.fillText_Callback_3(this, text, x, y); return; } @@ -2828,7 +2832,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.getImageData') @DocsEditable() - ImageData getImageData(num sx, num sy, num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.getImageData_Callback_float_float_float_float(this, sx, sy, sw, sh); + ImageData getImageData(num sx, num sy, num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.getImageData_Callback_4(this, sx, sy, sw, sh); @DomName('CanvasRenderingContext2D.getLineDash') @DocsEditable() @@ -2841,41 +2845,41 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva bool isPointInPath(path_OR_x, num x_OR_y, [winding_OR_y, String winding]) { if ((x_OR_y is num) && (path_OR_x is num) && winding_OR_y == null && winding == null) { - return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_float_float(this, path_OR_x, x_OR_y); + return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_2(this, path_OR_x, x_OR_y); } if ((winding_OR_y is String) && (x_OR_y is num) && (path_OR_x is num) && winding == null) { - return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_float_float_DOMString(this, path_OR_x, x_OR_y, winding_OR_y); + return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_3(this, path_OR_x, x_OR_y, winding_OR_y); } if ((winding_OR_y is num) && (x_OR_y is num) && (path_OR_x is Path2D) && winding == null) { - return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_Path2D_float_float(this, path_OR_x, x_OR_y, winding_OR_y); + return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_3(this, path_OR_x, x_OR_y, winding_OR_y); } if ((winding is String) && (winding_OR_y is num) && (x_OR_y is num) && (path_OR_x is Path2D)) { - return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_Path2D_float_float_DOMString(this, path_OR_x, x_OR_y, winding_OR_y, winding); + return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_4(this, path_OR_x, x_OR_y, winding_OR_y, winding); } throw new ArgumentError("Incorrect number or type of arguments"); } bool isPointInStroke(path_OR_x, num x_OR_y, [num y]) { if ((x_OR_y is num) && (path_OR_x is num) && y == null) { - return _blink.BlinkCanvasRenderingContext2D.isPointInStroke_Callback_float_float(this, path_OR_x, x_OR_y); + return _blink.BlinkCanvasRenderingContext2D.isPointInStroke_Callback_2(this, path_OR_x, x_OR_y); } if ((y is num) && (x_OR_y is num) && (path_OR_x is Path2D)) { - return _blink.BlinkCanvasRenderingContext2D.isPointInStroke_Callback_Path2D_float_float(this, path_OR_x, x_OR_y, y); + return _blink.BlinkCanvasRenderingContext2D.isPointInStroke_Callback_3(this, path_OR_x, x_OR_y, y); } throw new ArgumentError("Incorrect number or type of arguments"); } @DomName('CanvasRenderingContext2D.measureText') @DocsEditable() - TextMetrics measureText(String text) => _blink.BlinkCanvasRenderingContext2D.measureText_Callback_DOMString(this, text); + TextMetrics measureText(String text) => _blink.BlinkCanvasRenderingContext2D.measureText_Callback_1(this, text); void putImageData(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) { if ((dy is num) && (dx is num) && (imagedata is ImageData) && dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) { - _blink.BlinkCanvasRenderingContext2D.putImageData_Callback_ImageData_float_float(this, imagedata, dx, dy); + _blink.BlinkCanvasRenderingContext2D.putImageData_Callback_3(this, imagedata, dx, dy); return; } if ((dirtyHeight is num) && (dirtyWidth is num) && (dirtyY is num) && (dirtyX is num) && (dy is num) && (dx is num) && (imagedata is ImageData)) { - _blink.BlinkCanvasRenderingContext2D.putImageData_Callback_ImageData_float_float_float_float_float_float(this, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight); + _blink.BlinkCanvasRenderingContext2D.putImageData_Callback_7(this, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2884,7 +2888,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.removeHitRegion') @DocsEditable() @Experimental() // untriaged - void removeHitRegion(String id) => _blink.BlinkCanvasRenderingContext2D.removeHitRegion_Callback_DOMString(this, id); + void removeHitRegion(String id) => _blink.BlinkCanvasRenderingContext2D.removeHitRegion_Callback_1(this, id); @DomName('CanvasRenderingContext2D.resetTransform') @DocsEditable() @@ -2897,7 +2901,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.rotate') @DocsEditable() - void rotate(num angle) => _blink.BlinkCanvasRenderingContext2D.rotate_Callback_float(this, angle); + void rotate(num angle) => _blink.BlinkCanvasRenderingContext2D.rotate_Callback_1(this, angle); @DomName('CanvasRenderingContext2D.save') @DocsEditable() @@ -2905,11 +2909,11 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.scale') @DocsEditable() - void scale(num x, num y) => _blink.BlinkCanvasRenderingContext2D.scale_Callback_float_float(this, x, y); + void scale(num x, num y) => _blink.BlinkCanvasRenderingContext2D.scale_Callback_2(this, x, y); void scrollPathIntoView([Path2D path]) { if (path != null) { - _blink.BlinkCanvasRenderingContext2D.scrollPathIntoView_Callback_Path2D(this, path); + _blink.BlinkCanvasRenderingContext2D.scrollPathIntoView_Callback_1(this, path); return; } _blink.BlinkCanvasRenderingContext2D.scrollPathIntoView_Callback(this); @@ -2918,11 +2922,11 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.setLineDash') @DocsEditable() - void setLineDash(List dash) => _blink.BlinkCanvasRenderingContext2D.setLineDash_Callback_SEQ_float_SEQ(this, dash); + void setLineDash(List dash) => _blink.BlinkCanvasRenderingContext2D.setLineDash_Callback_1(this, dash); @DomName('CanvasRenderingContext2D.setTransform') @DocsEditable() - void setTransform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.setTransform_Callback_float_float_float_float_float_float(this, a, b, c, d, e, f); + void setTransform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.setTransform_Callback_6(this, a, b, c, d, e, f); void stroke([Path2D path]) { if (path == null) { @@ -2930,7 +2934,7 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva return; } if ((path is Path2D)) { - _blink.BlinkCanvasRenderingContext2D.stroke_Callback_Path2D(this, path); + _blink.BlinkCanvasRenderingContext2D.stroke_Callback_1(this, path); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2938,36 +2942,36 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.strokeRect') @DocsEditable() - void strokeRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.strokeRect_Callback_float_float_float_float(this, x, y, width, height); + void strokeRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.strokeRect_Callback_4(this, x, y, width, height); void strokeText(String text, num x, num y, [num maxWidth]) { if (maxWidth != null) { - _blink.BlinkCanvasRenderingContext2D.strokeText_Callback_DOMString_float_float_float(this, text, x, y, maxWidth); + _blink.BlinkCanvasRenderingContext2D.strokeText_Callback_4(this, text, x, y, maxWidth); return; } - _blink.BlinkCanvasRenderingContext2D.strokeText_Callback_DOMString_float_float(this, text, x, y); + _blink.BlinkCanvasRenderingContext2D.strokeText_Callback_3(this, text, x, y); return; } @DomName('CanvasRenderingContext2D.transform') @DocsEditable() - void transform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.transform_Callback_float_float_float_float_float_float(this, a, b, c, d, e, f); + void transform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.transform_Callback_6(this, a, b, c, d, e, f); @DomName('CanvasRenderingContext2D.translate') @DocsEditable() - void translate(num x, num y) => _blink.BlinkCanvasRenderingContext2D.translate_Callback_float_float(this, x, y); + void translate(num x, num y) => _blink.BlinkCanvasRenderingContext2D.translate_Callback_2(this, x, y); @DomName('CanvasRenderingContext2D.arc') @DocsEditable() - void _arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.arc_Callback_float_float_float_float_float_boolean(this, x, y, radius, startAngle, endAngle, anticlockwise); + void _arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.arc_Callback_6(this, x, y, radius, startAngle, endAngle, anticlockwise); @DomName('CanvasRenderingContext2D.arcTo') @DocsEditable() - void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkCanvasRenderingContext2D.arcTo_Callback_float_float_float_float_float(this, x1, y1, x2, y2, radius); + void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkCanvasRenderingContext2D.arcTo_Callback_5(this, x1, y1, x2, y2, radius); @DomName('CanvasRenderingContext2D.bezierCurveTo') @DocsEditable() - void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkCanvasRenderingContext2D.bezierCurveTo_Callback_float_float_float_float_float_float(this, cp1x, cp1y, cp2x, cp2y, x, y); + void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkCanvasRenderingContext2D.bezierCurveTo_Callback_6(this, cp1x, cp1y, cp2x, cp2y, x, y); @DomName('CanvasRenderingContext2D.closePath') @DocsEditable() @@ -2976,23 +2980,23 @@ class CanvasRenderingContext2D extends NativeFieldWrapperClass2 implements Canva @DomName('CanvasRenderingContext2D.ellipse') @DocsEditable() @Experimental() // untriaged - void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.ellipse_Callback_float_float_float_float_float_float_float_boolean(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise); + void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.ellipse_Callback_8(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise); @DomName('CanvasRenderingContext2D.lineTo') @DocsEditable() - void lineTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.lineTo_Callback_float_float(this, x, y); + void lineTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.lineTo_Callback_2(this, x, y); @DomName('CanvasRenderingContext2D.moveTo') @DocsEditable() - void moveTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.moveTo_Callback_float_float(this, x, y); + void moveTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.moveTo_Callback_2(this, x, y); @DomName('CanvasRenderingContext2D.quadraticCurveTo') @DocsEditable() - void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkCanvasRenderingContext2D.quadraticCurveTo_Callback_float_float_float_float(this, cpx, cpy, x, y); + void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkCanvasRenderingContext2D.quadraticCurveTo_Callback_4(this, cpx, cpy, x, y); @DomName('CanvasRenderingContext2D.rect') @DocsEditable() - void rect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.rect_Callback_float_float_float_float(this, x, y, width, height); + void rect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.rect_Callback_4(this, x, y, width, height); /** @@ -3248,7 +3252,7 @@ class CharacterData extends Node implements ChildNode { @DomName('CharacterData.data') @DocsEditable() - void set data(String value) => _blink.BlinkCharacterData.data_Setter_DOMString(this, value); + void set data(String value) => _blink.BlinkCharacterData.data_Setter(this, value); @DomName('CharacterData.length') @DocsEditable() @@ -3256,23 +3260,23 @@ class CharacterData extends Node implements ChildNode { @DomName('CharacterData.appendData') @DocsEditable() - void appendData(String data) => _blink.BlinkCharacterData.appendData_Callback_DOMString(this, data); + void appendData(String data) => _blink.BlinkCharacterData.appendData_Callback_1(this, data); @DomName('CharacterData.deleteData') @DocsEditable() - void deleteData(int offset, int length) => _blink.BlinkCharacterData.deleteData_Callback_ul_ul(this, offset, length); + void deleteData(int offset, int length) => _blink.BlinkCharacterData.deleteData_Callback_2(this, offset, length); @DomName('CharacterData.insertData') @DocsEditable() - void insertData(int offset, String data) => _blink.BlinkCharacterData.insertData_Callback_ul_DOMString(this, offset, data); + void insertData(int offset, String data) => _blink.BlinkCharacterData.insertData_Callback_2(this, offset, data); @DomName('CharacterData.replaceData') @DocsEditable() - void replaceData(int offset, int length, String data) => _blink.BlinkCharacterData.replaceData_Callback_ul_ul_DOMString(this, offset, length, data); + void replaceData(int offset, int length, String data) => _blink.BlinkCharacterData.replaceData_Callback_3(this, offset, length, data); @DomName('CharacterData.substringData') @DocsEditable() - String substringData(int offset, int length) => _blink.BlinkCharacterData.substringData_Callback_ul_ul(this, offset, length); + String substringData(int offset, int length) => _blink.BlinkCharacterData.substringData_Callback_2(this, offset, length); @DomName('CharacterData.nextElementSibling') @DocsEditable() @@ -3330,7 +3334,7 @@ class CircularRegion extends GeofencingRegion { @DomName('CircularRegion.CircularRegion') @DocsEditable() factory CircularRegion(Map init) { - return _blink.BlinkCircularRegion.constructorCallback_Dictionary(init); + return _blink.BlinkCircularRegion.constructorCallback_1(init); } @DomName('CircularRegion.MAX_RADIUS') @@ -3400,7 +3404,7 @@ class Comment extends CharacterData { @DocsEditable() factory Comment([String data]) { if (data != null) { - return _blink.BlinkComment.constructorCallback_DOMString(data); + return _blink.BlinkComment.constructorCallback_1(data); } return _blink.BlinkComment.constructorCallback(); } @@ -3448,7 +3452,7 @@ class CompositionEvent extends UIEvent { @DomName('CompositionEvent.initCompositionEvent') @DocsEditable() - void _initCompositionEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkCompositionEvent.initCompositionEvent_Callback_DOMString_boolean_boolean_Window_DOMString(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg); + void _initCompositionEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkCompositionEvent.initCompositionEvent_Callback_5(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3487,47 +3491,47 @@ class ConsoleBase extends NativeFieldWrapperClass2 { @DomName('ConsoleBase.assertCondition') @DocsEditable() @Experimental() // untriaged - void assertCondition(bool condition, Object arg) => _blink.BlinkConsoleBase.assert_Callback_boolean_object(this, condition, arg); + void assertCondition(bool condition, Object arg) => _blink.BlinkConsoleBase.assert_Callback_2(this, condition, arg); @DomName('ConsoleBase.clear') @DocsEditable() @Experimental() // untriaged - void clear(Object arg) => _blink.BlinkConsoleBase.clear_Callback_object(this, arg); + void clear(Object arg) => _blink.BlinkConsoleBase.clear_Callback_1(this, arg); @DomName('ConsoleBase.count') @DocsEditable() @Experimental() // untriaged - void count(Object arg) => _blink.BlinkConsoleBase.count_Callback_object(this, arg); + void count(Object arg) => _blink.BlinkConsoleBase.count_Callback_1(this, arg); @DomName('ConsoleBase.debug') @DocsEditable() @Experimental() // untriaged - void debug(Object arg) => _blink.BlinkConsoleBase.debug_Callback_object(this, arg); + void debug(Object arg) => _blink.BlinkConsoleBase.debug_Callback_1(this, arg); @DomName('ConsoleBase.dir') @DocsEditable() @Experimental() // untriaged - void dir(Object arg) => _blink.BlinkConsoleBase.dir_Callback_object(this, arg); + void dir(Object arg) => _blink.BlinkConsoleBase.dir_Callback_1(this, arg); @DomName('ConsoleBase.dirxml') @DocsEditable() @Experimental() // untriaged - void dirxml(Object arg) => _blink.BlinkConsoleBase.dirxml_Callback_object(this, arg); + void dirxml(Object arg) => _blink.BlinkConsoleBase.dirxml_Callback_1(this, arg); @DomName('ConsoleBase.error') @DocsEditable() @Experimental() // untriaged - void error(Object arg) => _blink.BlinkConsoleBase.error_Callback_object(this, arg); + void error(Object arg) => _blink.BlinkConsoleBase.error_Callback_1(this, arg); @DomName('ConsoleBase.group') @DocsEditable() @Experimental() // untriaged - void group(Object arg) => _blink.BlinkConsoleBase.group_Callback_object(this, arg); + void group(Object arg) => _blink.BlinkConsoleBase.group_Callback_1(this, arg); @DomName('ConsoleBase.groupCollapsed') @DocsEditable() @Experimental() // untriaged - void groupCollapsed(Object arg) => _blink.BlinkConsoleBase.groupCollapsed_Callback_object(this, arg); + void groupCollapsed(Object arg) => _blink.BlinkConsoleBase.groupCollapsed_Callback_1(this, arg); @DomName('ConsoleBase.groupEnd') @DocsEditable() @@ -3537,67 +3541,67 @@ class ConsoleBase extends NativeFieldWrapperClass2 { @DomName('ConsoleBase.info') @DocsEditable() @Experimental() // untriaged - void info(Object arg) => _blink.BlinkConsoleBase.info_Callback_object(this, arg); + void info(Object arg) => _blink.BlinkConsoleBase.info_Callback_1(this, arg); @DomName('ConsoleBase.log') @DocsEditable() @Experimental() // untriaged - void log(Object arg) => _blink.BlinkConsoleBase.log_Callback_object(this, arg); + void log(Object arg) => _blink.BlinkConsoleBase.log_Callback_1(this, arg); @DomName('ConsoleBase.markTimeline') @DocsEditable() @Experimental() // untriaged - void markTimeline(String title) => _blink.BlinkConsoleBase.markTimeline_Callback_DOMString(this, title); + void markTimeline(String title) => _blink.BlinkConsoleBase.markTimeline_Callback_1(this, title); @DomName('ConsoleBase.profile') @DocsEditable() @Experimental() // untriaged - void profile(String title) => _blink.BlinkConsoleBase.profile_Callback_DOMString(this, title); + void profile(String title) => _blink.BlinkConsoleBase.profile_Callback_1(this, title); @DomName('ConsoleBase.profileEnd') @DocsEditable() @Experimental() // untriaged - void profileEnd(String title) => _blink.BlinkConsoleBase.profileEnd_Callback_DOMString(this, title); + void profileEnd(String title) => _blink.BlinkConsoleBase.profileEnd_Callback_1(this, title); @DomName('ConsoleBase.table') @DocsEditable() @Experimental() // untriaged - void table(Object arg) => _blink.BlinkConsoleBase.table_Callback_object(this, arg); + void table(Object arg) => _blink.BlinkConsoleBase.table_Callback_1(this, arg); @DomName('ConsoleBase.time') @DocsEditable() @Experimental() // untriaged - void time(String title) => _blink.BlinkConsoleBase.time_Callback_DOMString(this, title); + void time(String title) => _blink.BlinkConsoleBase.time_Callback_1(this, title); @DomName('ConsoleBase.timeEnd') @DocsEditable() @Experimental() // untriaged - void timeEnd(String title) => _blink.BlinkConsoleBase.timeEnd_Callback_DOMString(this, title); + void timeEnd(String title) => _blink.BlinkConsoleBase.timeEnd_Callback_1(this, title); @DomName('ConsoleBase.timeStamp') @DocsEditable() @Experimental() // untriaged - void timeStamp(String title) => _blink.BlinkConsoleBase.timeStamp_Callback_DOMString(this, title); + void timeStamp(String title) => _blink.BlinkConsoleBase.timeStamp_Callback_1(this, title); @DomName('ConsoleBase.timeline') @DocsEditable() @Experimental() // untriaged - void timeline(String title) => _blink.BlinkConsoleBase.timeline_Callback_DOMString(this, title); + void timeline(String title) => _blink.BlinkConsoleBase.timeline_Callback_1(this, title); @DomName('ConsoleBase.timelineEnd') @DocsEditable() @Experimental() // untriaged - void timelineEnd(String title) => _blink.BlinkConsoleBase.timelineEnd_Callback_DOMString(this, title); + void timelineEnd(String title) => _blink.BlinkConsoleBase.timelineEnd_Callback_1(this, title); @DomName('ConsoleBase.trace') @DocsEditable() @Experimental() // untriaged - void trace(Object arg) => _blink.BlinkConsoleBase.trace_Callback_object(this, arg); + void trace(Object arg) => _blink.BlinkConsoleBase.trace_Callback_1(this, arg); @DomName('ConsoleBase.warn') @DocsEditable() @Experimental() // untriaged - void warn(Object arg) => _blink.BlinkConsoleBase.warn_Callback_object(this, arg); + void warn(Object arg) => _blink.BlinkConsoleBase.warn_Callback_1(this, arg); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3635,7 +3639,7 @@ class ContentElement extends HtmlElement { @DomName('HTMLContentElement.select') @DocsEditable() - void set select(String value) => _blink.BlinkHTMLContentElement.select_Setter_DOMString(this, value); + void set select(String value) => _blink.BlinkHTMLContentElement.select_Setter(this, value); @DomName('HTMLContentElement.getDistributedNodes') @DocsEditable() @@ -3730,14 +3734,14 @@ class CredentialsContainer extends NativeFieldWrapperClass2 { Future notifyFailedSignIn([Credential credential]) { if (credential != null) { - return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback_Credential(this, credential); + return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback_1(this, credential); } return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback(this); } Future notifySignedIn([Credential credential]) { if (credential != null) { - return _blink.BlinkCredentialsContainer.notifySignedIn_Callback_Credential(this, credential); + return _blink.BlinkCredentialsContainer.notifySignedIn_Callback_1(this, credential); } return _blink.BlinkCredentialsContainer.notifySignedIn_Callback(this); } @@ -3747,10 +3751,12 @@ class CredentialsContainer extends NativeFieldWrapperClass2 { @Experimental() // untriaged Future notifySignedOut() => _blink.BlinkCredentialsContainer.notifySignedOut_Callback(this); - @DomName('CredentialsContainer.request') - @DocsEditable() - @Experimental() // untriaged - Future request([Map options]) => _blink.BlinkCredentialsContainer.request_Callback_Dictionary(this, options); + Future request([Map options]) { + if (options != null) { + return _blink.BlinkCredentialsContainer.request_Callback_1(this, options); + } + return _blink.BlinkCredentialsContainer.request_Callback(this); + } } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3780,7 +3786,7 @@ class Crypto extends NativeFieldWrapperClass2 { @DomName('Crypto.getRandomValues') @DocsEditable() - TypedData getRandomValues(TypedData array) => _blink.BlinkCrypto.getRandomValues_Callback_ArrayBufferView(this, array); + TypedData getRandomValues(TypedData array) => _blink.BlinkCrypto.getRandomValues_Callback_1(this, array); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3835,11 +3841,11 @@ class Css extends NativeFieldWrapperClass2 { @DomName('CSS.supports') @DocsEditable() - bool supports(String property, String value) => _blink.BlinkCSS.supports_Callback_DOMString_DOMString(this, property, value); + bool supports(String property, String value) => _blink.BlinkCSS.supports_Callback_2(this, property, value); @DomName('CSS.supportsCondition') @DocsEditable() - bool supportsCondition(String conditionText) => _blink.BlinkCSS.supports_Callback_DOMString(this, conditionText); + bool supportsCondition(String conditionText) => _blink.BlinkCSS.supports_Callback_1(this, conditionText); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3863,7 +3869,7 @@ class CssCharsetRule extends CssRule { @DomName('CSSCharsetRule.encoding') @DocsEditable() - void set encoding(String value) => _blink.BlinkCSSCharsetRule.encoding_Setter_DOMString(this, value); + void set encoding(String value) => _blink.BlinkCSSCharsetRule.encoding_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3954,7 +3960,7 @@ class CssKeyframeRule extends CssRule { @DomName('CSSKeyframeRule.keyText') @DocsEditable() @Experimental() // untriaged - void set keyText(String value) => _blink.BlinkCSSKeyframeRule.keyText_Setter_DOMString(this, value); + void set keyText(String value) => _blink.BlinkCSSKeyframeRule.keyText_Setter(this, value); @DomName('CSSKeyframeRule.style') @DocsEditable() @@ -3989,27 +3995,27 @@ class CssKeyframesRule extends CssRule { @DomName('CSSKeyframesRule.name') @DocsEditable() @Experimental() // untriaged - void set name(String value) => _blink.BlinkCSSKeyframesRule.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkCSSKeyframesRule.name_Setter(this, value); @DomName('CSSKeyframesRule.__getter__') @DocsEditable() @Experimental() // untriaged - CssKeyframeRule __getter__(int index) => _blink.BlinkCSSKeyframesRule.$__getter___Callback_ul(this, index); + CssKeyframeRule __getter__(int index) => _blink.BlinkCSSKeyframesRule.$__getter___Callback_1(this, index); @DomName('CSSKeyframesRule.deleteRule') @DocsEditable() @Experimental() // untriaged - void deleteRule(String key) => _blink.BlinkCSSKeyframesRule.deleteRule_Callback_DOMString(this, key); + void deleteRule(String key) => _blink.BlinkCSSKeyframesRule.deleteRule_Callback_1(this, key); @DomName('CSSKeyframesRule.findRule') @DocsEditable() @Experimental() // untriaged - CssKeyframeRule findRule(String key) => _blink.BlinkCSSKeyframesRule.findRule_Callback_DOMString(this, key); + CssKeyframeRule findRule(String key) => _blink.BlinkCSSKeyframesRule.findRule_Callback_1(this, key); @DomName('CSSKeyframesRule.insertRule') @DocsEditable() @Experimental() // untriaged - void appendRule(String rule) => _blink.BlinkCSSKeyframesRule.insertRule_Callback_DOMString(this, rule); + void appendRule(String rule) => _blink.BlinkCSSKeyframesRule.insertRule_Callback_1(this, rule); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4035,11 +4041,11 @@ class CssMediaRule extends CssRule { @DomName('CSSMediaRule.deleteRule') @DocsEditable() - void deleteRule(int index) => _blink.BlinkCSSMediaRule.deleteRule_Callback_ul(this, index); + void deleteRule(int index) => _blink.BlinkCSSMediaRule.deleteRule_Callback_1(this, index); @DomName('CSSMediaRule.insertRule') @DocsEditable() - int insertRule(String rule, int index) => _blink.BlinkCSSMediaRule.insertRule_Callback_DOMString_ul(this, rule, index); + int insertRule(String rule, int index) => _blink.BlinkCSSMediaRule.insertRule_Callback_2(this, rule, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4061,7 +4067,7 @@ class CssPageRule extends CssRule { @DomName('CSSPageRule.selectorText') @DocsEditable() - void set selectorText(String value) => _blink.BlinkCSSPageRule.selectorText_Setter_DOMString(this, value); + void set selectorText(String value) => _blink.BlinkCSSPageRule.selectorText_Setter(this, value); @DomName('CSSPageRule.style') @DocsEditable() @@ -4148,7 +4154,7 @@ class CssRule extends NativeFieldWrapperClass2 { @DomName('CSSRule.cssText') @DocsEditable() - void set cssText(String value) => _blink.BlinkCSSRule.cssText_Setter_DOMString(this, value); + void set cssText(String value) => _blink.BlinkCSSRule.cssText_Setter(this, value); @DomName('CSSRule.parentRule') @DocsEditable() @@ -4222,7 +4228,7 @@ class CssRule extends NativeFieldWrapperClass2 { } bool _hasProperty(String propertyName) => - _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_DOMString(this, propertyName); + _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, propertyName); @DomName('CSSStyleDeclaration.setProperty') void setProperty(String propertyName, String value, [String priority]) { @@ -4261,7 +4267,7 @@ class CssRule extends NativeFieldWrapperClass2 { @DomName('CSSStyleDeclaration.cssText') @DocsEditable() - void set cssText(String value) => _blink.BlinkCSSStyleDeclaration.cssText_Setter_DOMString(this, value); + void set cssText(String value) => _blink.BlinkCSSStyleDeclaration.cssText_Setter(this, value); @DomName('CSSStyleDeclaration.length') @DocsEditable() @@ -4274,36 +4280,36 @@ class CssRule extends NativeFieldWrapperClass2 { @DomName('CSSStyleDeclaration.__getter__') @DocsEditable() @Experimental() // untriaged - Object __getter__(String name) => _blink.BlinkCSSStyleDeclaration.$__getter___Callback_DOMString(this, name); + Object __getter__(String name) => _blink.BlinkCSSStyleDeclaration.$__getter___Callback_1(this, name); @DomName('CSSStyleDeclaration.__propertyQuery__') @DocsEditable() @Experimental() // untriaged - bool __propertyQuery__(String name) => _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_DOMString(this, name); + bool __propertyQuery__(String name) => _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, name); @DomName('CSSStyleDeclaration.__setter__') @DocsEditable() - void __setter__(String propertyName, String propertyValue) => _blink.BlinkCSSStyleDeclaration.$__setter___Callback_DOMString_DOMString(this, propertyName, propertyValue); + void __setter__(String propertyName, String propertyValue) => _blink.BlinkCSSStyleDeclaration.$__setter___Callback_2(this, propertyName, propertyValue); @DomName('CSSStyleDeclaration.getPropertyPriority') @DocsEditable() - String getPropertyPriority(String propertyName) => _blink.BlinkCSSStyleDeclaration.getPropertyPriority_Callback_DOMString(this, propertyName); + String getPropertyPriority(String propertyName) => _blink.BlinkCSSStyleDeclaration.getPropertyPriority_Callback_1(this, propertyName); @DomName('CSSStyleDeclaration.getPropertyValue') @DocsEditable() - String _getPropertyValue(String propertyName) => _blink.BlinkCSSStyleDeclaration.getPropertyValue_Callback_DOMString(this, propertyName); + String _getPropertyValue(String propertyName) => _blink.BlinkCSSStyleDeclaration.getPropertyValue_Callback_1(this, propertyName); @DomName('CSSStyleDeclaration.item') @DocsEditable() - String item(int index) => _blink.BlinkCSSStyleDeclaration.item_Callback_ul(this, index); + String item(int index) => _blink.BlinkCSSStyleDeclaration.item_Callback_1(this, index); @DomName('CSSStyleDeclaration.removeProperty') @DocsEditable() - String removeProperty(String propertyName) => _blink.BlinkCSSStyleDeclaration.removeProperty_Callback_DOMString(this, propertyName); + String removeProperty(String propertyName) => _blink.BlinkCSSStyleDeclaration.removeProperty_Callback_1(this, propertyName); @DomName('CSSStyleDeclaration.setProperty') @DocsEditable() - void _setProperty(String propertyName, String value, String priority) => _blink.BlinkCSSStyleDeclaration.setProperty_Callback_DOMString_DOMString_DOMString(this, propertyName, value, priority); + void _setProperty(String propertyName, String value, String priority) => _blink.BlinkCSSStyleDeclaration.setProperty_Callback_3(this, propertyName, value, priority); } @@ -7438,7 +7444,7 @@ class CssStyleRule extends CssRule { @DomName('CSSStyleRule.selectorText') @DocsEditable() - void set selectorText(String value) => _blink.BlinkCSSStyleRule.selectorText_Setter_DOMString(this, value); + void set selectorText(String value) => _blink.BlinkCSSStyleRule.selectorText_Setter(this, value); @DomName('CSSStyleRule.style') @DocsEditable() @@ -7473,26 +7479,26 @@ class CssStyleSheet extends StyleSheet { int addRule(String selector, String style, [int index]) { if (index != null) { - return _blink.BlinkCSSStyleSheet.addRule_Callback_DOMString_DOMString_ul(this, selector, style, index); + return _blink.BlinkCSSStyleSheet.addRule_Callback_3(this, selector, style, index); } - return _blink.BlinkCSSStyleSheet.addRule_Callback_DOMString_DOMString(this, selector, style); + return _blink.BlinkCSSStyleSheet.addRule_Callback_2(this, selector, style); } @DomName('CSSStyleSheet.deleteRule') @DocsEditable() - void deleteRule(int index) => _blink.BlinkCSSStyleSheet.deleteRule_Callback_ul(this, index); + void deleteRule(int index) => _blink.BlinkCSSStyleSheet.deleteRule_Callback_1(this, index); int insertRule(String rule, [int index]) { if (index != null) { - return _blink.BlinkCSSStyleSheet.insertRule_Callback_DOMString_ul(this, rule, index); + return _blink.BlinkCSSStyleSheet.insertRule_Callback_2(this, rule, index); } - return _blink.BlinkCSSStyleSheet.insertRule_Callback_DOMString(this, rule); + return _blink.BlinkCSSStyleSheet.insertRule_Callback_1(this, rule); } @DomName('CSSStyleSheet.removeRule') @DocsEditable() @Experimental() // non-standard - void removeRule(int index) => _blink.BlinkCSSStyleSheet.removeRule_Callback_ul(this, index); + void removeRule(int index) => _blink.BlinkCSSStyleSheet.removeRule_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7518,11 +7524,11 @@ class CssSupportsRule extends CssRule { @DomName('CSSSupportsRule.deleteRule') @DocsEditable() - void deleteRule(int index) => _blink.BlinkCSSSupportsRule.deleteRule_Callback_ul(this, index); + void deleteRule(int index) => _blink.BlinkCSSSupportsRule.deleteRule_Callback_1(this, index); @DomName('CSSSupportsRule.insertRule') @DocsEditable() - int insertRule(String rule, int index) => _blink.BlinkCSSSupportsRule.insertRule_Callback_DOMString_ul(this, rule, index); + int insertRule(String rule, int index) => _blink.BlinkCSSSupportsRule.insertRule_Callback_2(this, rule, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7594,7 +7600,7 @@ class CustomEvent extends Event { @DomName('CustomEvent.initCustomEvent') @DocsEditable() - void _initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) => _blink.BlinkCustomEvent.initCustomEvent_Callback_DOMString_boolean_boolean_ScriptValue(this, typeArg, canBubbleArg, cancelableArg, detailArg); + void _initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) => _blink.BlinkCustomEvent.initCustomEvent_Callback_4(this, typeArg, canBubbleArg, cancelableArg, detailArg); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7678,7 +7684,7 @@ class DataTransfer extends NativeFieldWrapperClass2 { @DomName('DataTransfer.dropEffect') @DocsEditable() @Experimental() // untriaged - void set dropEffect(String value) => _blink.BlinkDataTransfer.dropEffect_Setter_DOMString(this, value); + void set dropEffect(String value) => _blink.BlinkDataTransfer.dropEffect_Setter(this, value); @DomName('DataTransfer.effectAllowed') @DocsEditable() @@ -7688,7 +7694,7 @@ class DataTransfer extends NativeFieldWrapperClass2 { @DomName('DataTransfer.effectAllowed') @DocsEditable() @Experimental() // untriaged - void set effectAllowed(String value) => _blink.BlinkDataTransfer.effectAllowed_Setter_DOMString(this, value); + void set effectAllowed(String value) => _blink.BlinkDataTransfer.effectAllowed_Setter(this, value); @DomName('DataTransfer.files') @DocsEditable() @@ -7707,7 +7713,7 @@ class DataTransfer extends NativeFieldWrapperClass2 { void clearData([String type]) { if (type != null) { - _blink.BlinkDataTransfer.clearData_Callback_DOMString(this, type); + _blink.BlinkDataTransfer.clearData_Callback_1(this, type); return; } _blink.BlinkDataTransfer.clearData_Callback(this); @@ -7717,17 +7723,17 @@ class DataTransfer extends NativeFieldWrapperClass2 { @DomName('DataTransfer.getData') @DocsEditable() @Experimental() // untriaged - String getData(String type) => _blink.BlinkDataTransfer.getData_Callback_DOMString(this, type); + String getData(String type) => _blink.BlinkDataTransfer.getData_Callback_1(this, type); @DomName('DataTransfer.setData') @DocsEditable() @Experimental() // untriaged - void setData(String type, String data) => _blink.BlinkDataTransfer.setData_Callback_DOMString_DOMString(this, type, data); + void setData(String type, String data) => _blink.BlinkDataTransfer.setData_Callback_2(this, type, data); @DomName('DataTransfer.setDragImage') @DocsEditable() @Experimental() // untriaged - void setDragImage(Element image, int x, int y) => _blink.BlinkDataTransfer.setDragImage_Callback_Element_long_long(this, image, x, y); + void setDragImage(Element image, int x, int y) => _blink.BlinkDataTransfer.setDragImage_Callback_3(this, image, x, y); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7759,7 +7765,7 @@ class DataTransferItem extends NativeFieldWrapperClass2 { @DomName('DataTransferItem.getAsString') @DocsEditable() - void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.getAsString_Callback_StringCallback(this, callback); + void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.getAsString_Callback_1(this, callback); Future getAsString() { var completer = new Completer(); @@ -7796,25 +7802,25 @@ class DataTransferItemList extends NativeFieldWrapperClass2 { @DomName('DataTransferItemList.__getter__') @DocsEditable() @Experimental() // untriaged - DataTransferItem __getter__(int index) => _blink.BlinkDataTransferItemList.$__getter___Callback_ul(this, index); + DataTransferItem __getter__(int index) => _blink.BlinkDataTransferItemList.$__getter___Callback_1(this, index); DataTransferItem add(data_OR_file, [String type]) { if ((type is String) && (data_OR_file is String)) { - return _blink.BlinkDataTransferItemList.add_Callback_DOMString_DOMString(this, data_OR_file, type); + return _blink.BlinkDataTransferItemList.add_Callback_2(this, data_OR_file, type); } if ((data_OR_file is File || data_OR_file == null) && type == null) { - return _blink.BlinkDataTransferItemList.add_Callback_File(this, data_OR_file); + return _blink.BlinkDataTransferItemList.add_Callback_1(this, data_OR_file); } throw new ArgumentError("Incorrect number or type of arguments"); } @DomName('DataTransferItemList.addData') @DocsEditable() - DataTransferItem addData(String data, String type) => _blink.BlinkDataTransferItemList.add_Callback_DOMString_DOMString(this, data, type); + DataTransferItem addData(String data, String type) => _blink.BlinkDataTransferItemList.add_Callback_2(this, data, type); @DomName('DataTransferItemList.addFile') @DocsEditable() - DataTransferItem addFile(File file) => _blink.BlinkDataTransferItemList.add_Callback_File(this, file); + DataTransferItem addFile(File file) => _blink.BlinkDataTransferItemList.add_Callback_1(this, file); @DomName('DataTransferItemList.clear') @DocsEditable() @@ -7823,7 +7829,7 @@ class DataTransferItemList extends NativeFieldWrapperClass2 { @DomName('DataTransferItemList.remove') @DocsEditable() @Experimental() // untriaged - void remove(int index) => _blink.BlinkDataTransferItemList.remove_Callback_ul(this, index); + void remove(int index) => _blink.BlinkDataTransferItemList.remove_Callback_1(this, index); DataTransferItem operator[] (int index) { @@ -7870,7 +7876,7 @@ class DedicatedWorkerGlobalScope extends WorkerGlobalScope { @DomName('DedicatedWorkerGlobalScope.postMessage') @DocsEditable() @Experimental() // untriaged - void postMessage(Object message, [List transfer]) => _blink.BlinkDedicatedWorkerGlobalScope.postMessage_Callback_ScriptValue_SEQ_MessagePort_SEQ(this, message, transfer); + void postMessage(Object message, [List transfer]) => _blink.BlinkDedicatedWorkerGlobalScope.postMessage_Callback_2(this, message, transfer); /// Stream of `message` events handled by this [DedicatedWorkerGlobalScope]. @DomName('DedicatedWorkerGlobalScope.onmessage') @@ -7903,15 +7909,31 @@ class DeprecatedStorageInfo extends NativeFieldWrapperClass2 { @Experimental() // untriaged static const int TEMPORARY = 0; - @DomName('DeprecatedStorageInfo.queryUsageAndQuota') - @DocsEditable() - @Experimental() // untriaged - void queryUsageAndQuota(int storageType, [StorageUsageCallback usageCallback, StorageErrorCallback errorCallback]) => _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_us_StorageUsageCallback_StorageErrorCallback(this, storageType, usageCallback, errorCallback); + void queryUsageAndQuota(int storageType, [StorageUsageCallback usageCallback, StorageErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_3(this, storageType, usageCallback, errorCallback); + return; + } + if (usageCallback != null) { + _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_2(this, storageType, usageCallback); + return; + } + _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_1(this, storageType); + return; + } - @DomName('DeprecatedStorageInfo.requestQuota') - @DocsEditable() - @Experimental() // untriaged - void requestQuota(int storageType, int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) => _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_us_ull_StorageQuotaCallback_StorageErrorCallback(this, storageType, newQuotaInBytes, quotaCallback, errorCallback); + void requestQuota(int storageType, int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_4(this, storageType, newQuotaInBytes, quotaCallback, errorCallback); + return; + } + if (quotaCallback != null) { + _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_3(this, storageType, newQuotaInBytes, quotaCallback); + return; + } + _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_2(this, storageType, newQuotaInBytes); + return; + } } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7928,15 +7950,27 @@ class DeprecatedStorageQuota extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory DeprecatedStorageQuota._() { throw new UnsupportedError("Not supported"); } - @DomName('DeprecatedStorageQuota.queryUsageAndQuota') - @DocsEditable() - @Experimental() // untriaged - void queryUsageAndQuota(StorageUsageCallback usageCallback, [StorageErrorCallback errorCallback]) => _blink.BlinkDeprecatedStorageQuota.queryUsageAndQuota_Callback_StorageUsageCallback_StorageErrorCallback(this, usageCallback, errorCallback); + void queryUsageAndQuota(StorageUsageCallback usageCallback, [StorageErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkDeprecatedStorageQuota.queryUsageAndQuota_Callback_2(this, usageCallback, errorCallback); + return; + } + _blink.BlinkDeprecatedStorageQuota.queryUsageAndQuota_Callback_1(this, usageCallback); + return; + } - @DomName('DeprecatedStorageQuota.requestQuota') - @DocsEditable() - @Experimental() // untriaged - void requestQuota(int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) => _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_ull_StorageQuotaCallback_StorageErrorCallback(this, newQuotaInBytes, quotaCallback, errorCallback); + void requestQuota(int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_3(this, newQuotaInBytes, quotaCallback, errorCallback); + return; + } + if (quotaCallback != null) { + _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_2(this, newQuotaInBytes, quotaCallback); + return; + } + _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_1(this, newQuotaInBytes); + return; + } } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7974,7 +8008,7 @@ class DetailsElement extends HtmlElement { @DomName('HTMLDetailsElement.open') @DocsEditable() - void set open(bool value) => _blink.BlinkHTMLDetailsElement.open_Setter_boolean(this, value); + void set open(bool value) => _blink.BlinkHTMLDetailsElement.open_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -8059,7 +8093,7 @@ class DeviceMotionEvent extends Event { @DomName('DeviceMotionEvent.initDeviceMotionEvent') @DocsEditable() @Experimental() // untriaged - void initDeviceMotionEvent(String type, bool bubbles, bool cancelable, DeviceAcceleration acceleration, DeviceAcceleration accelerationIncludingGravity, DeviceRotationRate rotationRate, num interval) => _blink.BlinkDeviceMotionEvent.initDeviceMotionEvent_Callback_DOMString_boolean_boolean_DeviceAcceleration_DeviceAcceleration_DeviceRotationRate_double(this, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval); + void initDeviceMotionEvent(String type, bool bubbles, bool cancelable, DeviceAcceleration acceleration, DeviceAcceleration accelerationIncludingGravity, DeviceRotationRate rotationRate, num interval) => _blink.BlinkDeviceMotionEvent.initDeviceMotionEvent_Callback_7(this, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval); } // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file @@ -8101,7 +8135,7 @@ class DeviceOrientationEvent extends Event { @DomName('DeviceOrientationEvent.initDeviceOrientationEvent') @DocsEditable() - void _initDeviceOrientationEvent(String type, bool bubbles, bool cancelable, num alpha, num beta, num gamma, bool absolute) => _blink.BlinkDeviceOrientationEvent.initDeviceOrientationEvent_Callback_DOMString_boolean_boolean_double_double_double_boolean(this, type, bubbles, cancelable, alpha, beta, gamma, absolute); + void _initDeviceOrientationEvent(String type, bool bubbles, bool cancelable, num alpha, num beta, num gamma, bool absolute) => _blink.BlinkDeviceOrientationEvent.initDeviceOrientationEvent_Callback_7(this, type, bubbles, cancelable, alpha, beta, gamma, absolute); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -8158,7 +8192,7 @@ class DialogElement extends HtmlElement { @DomName('HTMLDialogElement.open') @DocsEditable() - void set open(bool value) => _blink.BlinkHTMLDialogElement.open_Setter_boolean(this, value); + void set open(bool value) => _blink.BlinkHTMLDialogElement.open_Setter(this, value); @DomName('HTMLDialogElement.returnValue') @DocsEditable() @@ -8168,11 +8202,11 @@ class DialogElement extends HtmlElement { @DomName('HTMLDialogElement.returnValue') @DocsEditable() @Experimental() // untriaged - void set returnValue(String value) => _blink.BlinkHTMLDialogElement.returnValue_Setter_DOMString(this, value); + void set returnValue(String value) => _blink.BlinkHTMLDialogElement.returnValue_Setter(this, value); @DomName('HTMLDialogElement.close') @DocsEditable() - void close(String returnValue) => _blink.BlinkHTMLDialogElement.close_Callback_DOMString(this, returnValue); + void close(String returnValue) => _blink.BlinkHTMLDialogElement.close_Callback_1(this, returnValue); @DomName('HTMLDialogElement.show') @DocsEditable() @@ -8236,9 +8270,22 @@ class DirectoryEntry extends Entry { @DocsEditable() DirectoryReader createReader() => _blink.BlinkDirectoryEntry.createReader_Callback(this); - @DomName('DirectoryEntry.getDirectory') - @DocsEditable() - void __getDirectory(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) => _blink.BlinkDirectoryEntry.getDirectory_Callback_DOMString_Dictionary_EntryCallback_ErrorCallback(this, path, options, successCallback, errorCallback); + void __getDirectory(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) { + if (errorCallback != null) { + _blink.BlinkDirectoryEntry.getDirectory_Callback_4(this, path, options, successCallback, errorCallback); + return; + } + if (successCallback != null) { + _blink.BlinkDirectoryEntry.getDirectory_Callback_3(this, path, options, successCallback); + return; + } + if (options != null) { + _blink.BlinkDirectoryEntry.getDirectory_Callback_2(this, path, options); + return; + } + _blink.BlinkDirectoryEntry.getDirectory_Callback_1(this, path); + return; + } Future _getDirectory(String path, {Map options}) { var completer = new Completer(); @@ -8248,9 +8295,22 @@ class DirectoryEntry extends Entry { return completer.future; } - @DomName('DirectoryEntry.getFile') - @DocsEditable() - void __getFile(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) => _blink.BlinkDirectoryEntry.getFile_Callback_DOMString_Dictionary_EntryCallback_ErrorCallback(this, path, options, successCallback, errorCallback); + void __getFile(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) { + if (errorCallback != null) { + _blink.BlinkDirectoryEntry.getFile_Callback_4(this, path, options, successCallback, errorCallback); + return; + } + if (successCallback != null) { + _blink.BlinkDirectoryEntry.getFile_Callback_3(this, path, options, successCallback); + return; + } + if (options != null) { + _blink.BlinkDirectoryEntry.getFile_Callback_2(this, path, options); + return; + } + _blink.BlinkDirectoryEntry.getFile_Callback_1(this, path); + return; + } Future _getFile(String path, {Map options}) { var completer = new Completer(); @@ -8260,9 +8320,14 @@ class DirectoryEntry extends Entry { return completer.future; } - @DomName('DirectoryEntry.removeRecursively') - @DocsEditable() - void _removeRecursively(VoidCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkDirectoryEntry.removeRecursively_Callback_VoidCallback_ErrorCallback(this, successCallback, errorCallback); + void _removeRecursively(VoidCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkDirectoryEntry.removeRecursively_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkDirectoryEntry.removeRecursively_Callback_1(this, successCallback); + return; + } Future removeRecursively() { var completer = new Completer(); @@ -8288,9 +8353,14 @@ class DirectoryReader extends NativeFieldWrapperClass2 { // To suppress missing implicit constructor warnings. factory DirectoryReader._() { throw new UnsupportedError("Not supported"); } - @DomName('DirectoryReader.readEntries') - @DocsEditable() - void _readEntries(_EntriesCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkDirectoryReader.readEntries_Callback_EntriesCallback_ErrorCallback(this, successCallback, errorCallback); + void _readEntries(_EntriesCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkDirectoryReader.readEntries_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkDirectoryReader.readEntries_Callback_1(this, successCallback); + return; + } Future> readEntries() { var completer = new Completer>(); @@ -8412,7 +8482,7 @@ class Document extends Node @DomName('Document.body') @DocsEditable() - void set _body(HtmlElement value) => _blink.BlinkDocument.body_Setter_HTMLElement(this, value); + void set _body(HtmlElement value) => _blink.BlinkDocument.body_Setter(this, value); @DomName('Document.contentType') @DocsEditable() @@ -8425,7 +8495,7 @@ class Document extends Node @DomName('Document.cookie') @DocsEditable() - void set cookie(String value) => _blink.BlinkDocument.cookie_Setter_DOMString(this, value); + void set cookie(String value) => _blink.BlinkDocument.cookie_Setter(this, value); @DomName('Document.currentScript') @DocsEditable() @@ -8504,7 +8574,7 @@ class Document extends Node @DomName('Document.selectedStylesheetSet') @DocsEditable() - void set _selectedStylesheetSet(String value) => _blink.BlinkDocument.selectedStylesheetSet_Setter_DOMString(this, value); + void set _selectedStylesheetSet(String value) => _blink.BlinkDocument.selectedStylesheetSet_Setter(this, value); @DomName('Document.styleSheets') @DocsEditable() @@ -8521,7 +8591,7 @@ class Document extends Node @DomName('Document.title') @DocsEditable() - void set _title(String value) => _blink.BlinkDocument.title_Setter_DOMString(this, value); + void set _title(String value) => _blink.BlinkDocument.title_Setter(this, value); @DomName('Document.visibilityState') @DocsEditable() @@ -8562,13 +8632,13 @@ class Document extends Node @DomName('Document.adoptNode') @DocsEditable() - Node adoptNode(Node node) => _blink.BlinkDocument.adoptNode_Callback_Node(this, node); + Node adoptNode(Node node) => _blink.BlinkDocument.adoptNode_Callback_1(this, node); @DomName('Document.caretRangeFromPoint') @DocsEditable() // http://www.w3.org/TR/2009/WD-cssom-view-20090804/#dom-documentview-caretrangefrompoint @Experimental() - Range _caretRangeFromPoint(int x, int y) => _blink.BlinkDocument.caretRangeFromPoint_Callback_long_long(this, x, y); + Range _caretRangeFromPoint(int x, int y) => _blink.BlinkDocument.caretRangeFromPoint_Callback_2(this, x, y); @DomName('Document.createDocumentFragment') @DocsEditable() @@ -8576,21 +8646,21 @@ class Document extends Node @DomName('Document.createElement') @DocsEditable() - Element _createElement(String localName_OR_tagName, [String typeExtension]) => _blink.BlinkDocument.createElement_Callback_DOMString(this, localName_OR_tagName, typeExtension); + Element _createElement(String localName_OR_tagName, [String typeExtension]) => _blink.BlinkDocument.createElement_Callback_2(this, localName_OR_tagName, typeExtension); @DomName('Document.createElementNS') @DocsEditable() - Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) => _blink.BlinkDocument.createElementNS_Callback_DOMString_DOMString(this, namespaceURI, qualifiedName, typeExtension); + Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) => _blink.BlinkDocument.createElementNS_Callback_3(this, namespaceURI, qualifiedName, typeExtension); @DomName('Document.createEvent') @DocsEditable() - Event _createEvent(String eventType) => _blink.BlinkDocument.createEvent_Callback_DOMString(this, eventType); + Event _createEvent(String eventType) => _blink.BlinkDocument.createEvent_Callback_1(this, eventType); NodeIterator _createNodeIterator(Node root, [int whatToShow, NodeFilter filter]) { if (whatToShow != null) { - return _blink.BlinkDocument.createNodeIterator_Callback_Node_ul_NodeFilter(this, root, whatToShow, filter); + return _blink.BlinkDocument.createNodeIterator_Callback_3(this, root, whatToShow, filter); } - return _blink.BlinkDocument.createNodeIterator_Callback_Node(this, root); + return _blink.BlinkDocument.createNodeIterator_Callback_1(this, root); } @DomName('Document.createRange') @@ -8599,34 +8669,34 @@ class Document extends Node @DomName('Document.createTextNode') @DocsEditable() - Text _createTextNode(String data) => _blink.BlinkDocument.createTextNode_Callback_DOMString(this, data); + Text _createTextNode(String data) => _blink.BlinkDocument.createTextNode_Callback_1(this, data); @DomName('Document.createTouch') @DocsEditable() // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features @Experimental() - Touch _createTouch(Window window, EventTarget target, int identifier, num pageX, num pageY, num screenX, num screenY, num webkitRadiusX, num webkitRadiusY, num webkitRotationAngle, num webkitForce) => _blink.BlinkDocument.createTouch_Callback_Window_EventTarget_long_double_double_double_double_double_double_float_float(this, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce); + Touch _createTouch(Window window, EventTarget target, int identifier, num pageX, num pageY, num screenX, num screenY, num webkitRadiusX, num webkitRadiusY, num webkitRotationAngle, num webkitForce) => _blink.BlinkDocument.createTouch_Callback_11(this, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce); @DomName('Document.createTouchList') @DocsEditable() // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features @Experimental() - TouchList _createTouchList(Touch touches) => _blink.BlinkDocument.createTouchList_Callback_Touch(this, touches); + TouchList _createTouchList(Touch touches) => _blink.BlinkDocument.createTouchList_Callback_1(this, touches); TreeWalker _createTreeWalker(Node root, [int whatToShow, NodeFilter filter]) { if (whatToShow != null) { - return _blink.BlinkDocument.createTreeWalker_Callback_Node_ul_NodeFilter(this, root, whatToShow, filter); + return _blink.BlinkDocument.createTreeWalker_Callback_3(this, root, whatToShow, filter); } - return _blink.BlinkDocument.createTreeWalker_Callback_Node(this, root); + return _blink.BlinkDocument.createTreeWalker_Callback_1(this, root); } @DomName('Document.elementFromPoint') @DocsEditable() - Element _elementFromPoint(int x, int y) => _blink.BlinkDocument.elementFromPoint_Callback_long_long(this, x, y); + Element _elementFromPoint(int x, int y) => _blink.BlinkDocument.elementFromPoint_Callback_2(this, x, y); @DomName('Document.execCommand') @DocsEditable() - bool execCommand(String command, bool userInterface, String value) => _blink.BlinkDocument.execCommand_Callback_DOMString_boolean_DOMString(this, command, userInterface, value); + bool execCommand(String command, bool userInterface, String value) => _blink.BlinkDocument.execCommand_Callback_3(this, command, userInterface, value); @DomName('Document.exitFullscreen') @DocsEditable() @@ -8642,50 +8712,50 @@ class Document extends Node @DocsEditable() // https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html @Experimental() // non-standard - Object _getCssCanvasContext(String contextId, String name, int width, int height) => _blink.BlinkDocument.getCSSCanvasContext_Callback_DOMString_DOMString_long_long(this, contextId, name, width, height); + Object _getCssCanvasContext(String contextId, String name, int width, int height) => _blink.BlinkDocument.getCSSCanvasContext_Callback_4(this, contextId, name, width, height); @DomName('Document.getElementById') @DocsEditable() - Element getElementById(String elementId) => _blink.BlinkDocument.getElementById_Callback_DOMString(this, elementId); + Element getElementById(String elementId) => _blink.BlinkDocument.getElementById_Callback_1(this, elementId); @DomName('Document.getElementsByClassName') @DocsEditable() - List getElementsByClassName(String classNames) => _blink.BlinkDocument.getElementsByClassName_Callback_DOMString(this, classNames); + List getElementsByClassName(String classNames) => _blink.BlinkDocument.getElementsByClassName_Callback_1(this, classNames); @DomName('Document.getElementsByName') @DocsEditable() - List getElementsByName(String elementName) => _blink.BlinkDocument.getElementsByName_Callback_DOMString(this, elementName); + List getElementsByName(String elementName) => _blink.BlinkDocument.getElementsByName_Callback_1(this, elementName); @DomName('Document.getElementsByTagName') @DocsEditable() - List getElementsByTagName(String localName) => _blink.BlinkDocument.getElementsByTagName_Callback_DOMString(this, localName); + List getElementsByTagName(String localName) => _blink.BlinkDocument.getElementsByTagName_Callback_1(this, localName); Node importNode(Node node, [bool deep]) { if (deep != null) { - return _blink.BlinkDocument.importNode_Callback_Node_boolean(this, node, deep); + return _blink.BlinkDocument.importNode_Callback_2(this, node, deep); } - return _blink.BlinkDocument.importNode_Callback_Node(this, node); + return _blink.BlinkDocument.importNode_Callback_1(this, node); } @DomName('Document.queryCommandEnabled') @DocsEditable() - bool queryCommandEnabled(String command) => _blink.BlinkDocument.queryCommandEnabled_Callback_DOMString(this, command); + bool queryCommandEnabled(String command) => _blink.BlinkDocument.queryCommandEnabled_Callback_1(this, command); @DomName('Document.queryCommandIndeterm') @DocsEditable() - bool queryCommandIndeterm(String command) => _blink.BlinkDocument.queryCommandIndeterm_Callback_DOMString(this, command); + bool queryCommandIndeterm(String command) => _blink.BlinkDocument.queryCommandIndeterm_Callback_1(this, command); @DomName('Document.queryCommandState') @DocsEditable() - bool queryCommandState(String command) => _blink.BlinkDocument.queryCommandState_Callback_DOMString(this, command); + bool queryCommandState(String command) => _blink.BlinkDocument.queryCommandState_Callback_1(this, command); @DomName('Document.queryCommandSupported') @DocsEditable() - bool queryCommandSupported(String command) => _blink.BlinkDocument.queryCommandSupported_Callback_DOMString(this, command); + bool queryCommandSupported(String command) => _blink.BlinkDocument.queryCommandSupported_Callback_1(this, command); @DomName('Document.queryCommandValue') @DocsEditable() - String queryCommandValue(String command) => _blink.BlinkDocument.queryCommandValue_Callback_DOMString(this, command); + String queryCommandValue(String command) => _blink.BlinkDocument.queryCommandValue_Callback_1(this, command); @DomName('Document.webkitExitFullscreen') @DocsEditable() @@ -8730,11 +8800,11 @@ class Document extends Node */ @DomName('Document.querySelector') @DocsEditable() - Element querySelector(String selectors) => _blink.BlinkDocument.querySelector_Callback_DOMString(this, selectors); + Element querySelector(String selectors) => _blink.BlinkDocument.querySelector_Callback_1(this, selectors); @DomName('Document.querySelectorAll') @DocsEditable() - List _querySelectorAll(String selectors) => _blink.BlinkDocument.querySelectorAll_Callback_DOMString(this, selectors); + List _querySelectorAll(String selectors) => _blink.BlinkDocument.querySelectorAll_Callback_1(this, selectors); /// Stream of `abort` events handled by this [Document]. @DomName('Document.onabort') @@ -9279,7 +9349,7 @@ class DocumentFragment extends Node implements ParentNode { @DomName('DocumentFragment.getElementById') @DocsEditable() @Experimental() // untriaged - Element getElementById(String elementId) => _blink.BlinkDocumentFragment.getElementById_Callback_DOMString(this, elementId); + Element getElementById(String elementId) => _blink.BlinkDocumentFragment.getElementById_Callback_1(this, elementId); @DomName('DocumentFragment.childElementCount') @DocsEditable() @@ -9307,11 +9377,11 @@ class DocumentFragment extends Node implements ParentNode { */ @DomName('DocumentFragment.querySelector') @DocsEditable() - Element querySelector(String selectors) => _blink.BlinkDocumentFragment.querySelector_Callback_DOMString(this, selectors); + Element querySelector(String selectors) => _blink.BlinkDocumentFragment.querySelector_Callback_1(this, selectors); @DomName('DocumentFragment.querySelectorAll') @DocsEditable() - List _querySelectorAll(String selectors) => _blink.BlinkDocumentFragment.querySelectorAll_Callback_DOMString(this, selectors); + List _querySelectorAll(String selectors) => _blink.BlinkDocumentFragment.querySelectorAll_Callback_1(this, selectors); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -9330,7 +9400,7 @@ class DomError extends NativeFieldWrapperClass2 { @DomName('DOMError.DOMError') @DocsEditable() factory DomError(String name, [String message]) { - return _blink.BlinkDOMError.constructorCallback_DOMString_DOMString(name, message); + return _blink.BlinkDOMError.constructorCallback_2(name, message); } @DomName('DOMError.message') @@ -9405,19 +9475,19 @@ class DomImplementation extends NativeFieldWrapperClass2 { @DomName('DOMImplementation.createDocument') @DocsEditable() - XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => _blink.BlinkDOMImplementation.createDocument_Callback_DOMString_DOMString_DocumentType(this, namespaceURI, qualifiedName, doctype); + XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => _blink.BlinkDOMImplementation.createDocument_Callback_3(this, namespaceURI, qualifiedName, doctype); @DomName('DOMImplementation.createDocumentType') @DocsEditable() - _DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) => _blink.BlinkDOMImplementation.createDocumentType_Callback_DOMString_DOMString_DOMString(this, qualifiedName, publicId, systemId); + _DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) => _blink.BlinkDOMImplementation.createDocumentType_Callback_3(this, qualifiedName, publicId, systemId); @DomName('DOMImplementation.createHTMLDocument') @DocsEditable() - HtmlDocument createHtmlDocument(String title) => _blink.BlinkDOMImplementation.createHTMLDocument_Callback_DOMString(this, title); + HtmlDocument createHtmlDocument(String title) => _blink.BlinkDOMImplementation.createHTMLDocument_Callback_1(this, title); @DomName('DOMImplementation.hasFeature') @DocsEditable() - bool hasFeature(String feature, String version) => _blink.BlinkDOMImplementation.hasFeature_Callback_DOMString_DOMString(this, feature, version); + bool hasFeature(String feature, String version) => _blink.BlinkDOMImplementation.hasFeature_Callback_2(this, feature, version); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -9441,7 +9511,7 @@ class DomMatrix extends DomMatrixReadOnly { return _blink.BlinkDOMMatrix.constructorCallback(); } if ((other is DomMatrixReadOnly || other == null)) { - return _blink.BlinkDOMMatrix.constructorCallback_DOMMatrixReadOnly(other); + return _blink.BlinkDOMMatrix.constructorCallback_1(other); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -9454,7 +9524,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.a') @DocsEditable() @Experimental() // untriaged - void set a(num value) => _blink.BlinkDOMMatrix.a_Setter_double(this, value); + void set a(num value) => _blink.BlinkDOMMatrix.a_Setter(this, value); @DomName('DOMMatrix.b') @DocsEditable() @@ -9464,7 +9534,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.b') @DocsEditable() @Experimental() // untriaged - void set b(num value) => _blink.BlinkDOMMatrix.b_Setter_double(this, value); + void set b(num value) => _blink.BlinkDOMMatrix.b_Setter(this, value); @DomName('DOMMatrix.c') @DocsEditable() @@ -9474,7 +9544,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.c') @DocsEditable() @Experimental() // untriaged - void set c(num value) => _blink.BlinkDOMMatrix.c_Setter_double(this, value); + void set c(num value) => _blink.BlinkDOMMatrix.c_Setter(this, value); @DomName('DOMMatrix.d') @DocsEditable() @@ -9484,7 +9554,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.d') @DocsEditable() @Experimental() // untriaged - void set d(num value) => _blink.BlinkDOMMatrix.d_Setter_double(this, value); + void set d(num value) => _blink.BlinkDOMMatrix.d_Setter(this, value); @DomName('DOMMatrix.e') @DocsEditable() @@ -9494,7 +9564,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.e') @DocsEditable() @Experimental() // untriaged - void set e(num value) => _blink.BlinkDOMMatrix.e_Setter_double(this, value); + void set e(num value) => _blink.BlinkDOMMatrix.e_Setter(this, value); @DomName('DOMMatrix.f') @DocsEditable() @@ -9504,7 +9574,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.f') @DocsEditable() @Experimental() // untriaged - void set f(num value) => _blink.BlinkDOMMatrix.f_Setter_double(this, value); + void set f(num value) => _blink.BlinkDOMMatrix.f_Setter(this, value); @DomName('DOMMatrix.m11') @DocsEditable() @@ -9514,7 +9584,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m11') @DocsEditable() @Experimental() // untriaged - void set m11(num value) => _blink.BlinkDOMMatrix.m11_Setter_double(this, value); + void set m11(num value) => _blink.BlinkDOMMatrix.m11_Setter(this, value); @DomName('DOMMatrix.m12') @DocsEditable() @@ -9524,7 +9594,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m12') @DocsEditable() @Experimental() // untriaged - void set m12(num value) => _blink.BlinkDOMMatrix.m12_Setter_double(this, value); + void set m12(num value) => _blink.BlinkDOMMatrix.m12_Setter(this, value); @DomName('DOMMatrix.m13') @DocsEditable() @@ -9534,7 +9604,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m13') @DocsEditable() @Experimental() // untriaged - void set m13(num value) => _blink.BlinkDOMMatrix.m13_Setter_double(this, value); + void set m13(num value) => _blink.BlinkDOMMatrix.m13_Setter(this, value); @DomName('DOMMatrix.m14') @DocsEditable() @@ -9544,7 +9614,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m14') @DocsEditable() @Experimental() // untriaged - void set m14(num value) => _blink.BlinkDOMMatrix.m14_Setter_double(this, value); + void set m14(num value) => _blink.BlinkDOMMatrix.m14_Setter(this, value); @DomName('DOMMatrix.m21') @DocsEditable() @@ -9554,7 +9624,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m21') @DocsEditable() @Experimental() // untriaged - void set m21(num value) => _blink.BlinkDOMMatrix.m21_Setter_double(this, value); + void set m21(num value) => _blink.BlinkDOMMatrix.m21_Setter(this, value); @DomName('DOMMatrix.m22') @DocsEditable() @@ -9564,7 +9634,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m22') @DocsEditable() @Experimental() // untriaged - void set m22(num value) => _blink.BlinkDOMMatrix.m22_Setter_double(this, value); + void set m22(num value) => _blink.BlinkDOMMatrix.m22_Setter(this, value); @DomName('DOMMatrix.m23') @DocsEditable() @@ -9574,7 +9644,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m23') @DocsEditable() @Experimental() // untriaged - void set m23(num value) => _blink.BlinkDOMMatrix.m23_Setter_double(this, value); + void set m23(num value) => _blink.BlinkDOMMatrix.m23_Setter(this, value); @DomName('DOMMatrix.m24') @DocsEditable() @@ -9584,7 +9654,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m24') @DocsEditable() @Experimental() // untriaged - void set m24(num value) => _blink.BlinkDOMMatrix.m24_Setter_double(this, value); + void set m24(num value) => _blink.BlinkDOMMatrix.m24_Setter(this, value); @DomName('DOMMatrix.m31') @DocsEditable() @@ -9594,7 +9664,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m31') @DocsEditable() @Experimental() // untriaged - void set m31(num value) => _blink.BlinkDOMMatrix.m31_Setter_double(this, value); + void set m31(num value) => _blink.BlinkDOMMatrix.m31_Setter(this, value); @DomName('DOMMatrix.m32') @DocsEditable() @@ -9604,7 +9674,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m32') @DocsEditable() @Experimental() // untriaged - void set m32(num value) => _blink.BlinkDOMMatrix.m32_Setter_double(this, value); + void set m32(num value) => _blink.BlinkDOMMatrix.m32_Setter(this, value); @DomName('DOMMatrix.m33') @DocsEditable() @@ -9614,7 +9684,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m33') @DocsEditable() @Experimental() // untriaged - void set m33(num value) => _blink.BlinkDOMMatrix.m33_Setter_double(this, value); + void set m33(num value) => _blink.BlinkDOMMatrix.m33_Setter(this, value); @DomName('DOMMatrix.m34') @DocsEditable() @@ -9624,7 +9694,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m34') @DocsEditable() @Experimental() // untriaged - void set m34(num value) => _blink.BlinkDOMMatrix.m34_Setter_double(this, value); + void set m34(num value) => _blink.BlinkDOMMatrix.m34_Setter(this, value); @DomName('DOMMatrix.m41') @DocsEditable() @@ -9634,7 +9704,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m41') @DocsEditable() @Experimental() // untriaged - void set m41(num value) => _blink.BlinkDOMMatrix.m41_Setter_double(this, value); + void set m41(num value) => _blink.BlinkDOMMatrix.m41_Setter(this, value); @DomName('DOMMatrix.m42') @DocsEditable() @@ -9644,7 +9714,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m42') @DocsEditable() @Experimental() // untriaged - void set m42(num value) => _blink.BlinkDOMMatrix.m42_Setter_double(this, value); + void set m42(num value) => _blink.BlinkDOMMatrix.m42_Setter(this, value); @DomName('DOMMatrix.m43') @DocsEditable() @@ -9654,7 +9724,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m43') @DocsEditable() @Experimental() // untriaged - void set m43(num value) => _blink.BlinkDOMMatrix.m43_Setter_double(this, value); + void set m43(num value) => _blink.BlinkDOMMatrix.m43_Setter(this, value); @DomName('DOMMatrix.m44') @DocsEditable() @@ -9664,7 +9734,7 @@ class DomMatrix extends DomMatrixReadOnly { @DomName('DOMMatrix.m44') @DocsEditable() @Experimental() // untriaged - void set m44(num value) => _blink.BlinkDOMMatrix.m44_Setter_double(this, value); + void set m44(num value) => _blink.BlinkDOMMatrix.m44_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -9823,7 +9893,7 @@ class DomParser extends NativeFieldWrapperClass2 { @DomName('DOMParser.parseFromString') @DocsEditable() - Document parseFromString(String str, String contentType) => _blink.BlinkDOMParser.parseFromString_Callback_DOMString_DOMString(this, str, contentType); + Document parseFromString(String str, String contentType) => _blink.BlinkDOMParser.parseFromString_Callback_2(this, str, contentType); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -9847,16 +9917,16 @@ class DomPoint extends DomPointReadOnly { return _blink.BlinkDOMPoint.constructorCallback(); } if ((point_OR_x is Map || point_OR_x == null) && y == null && z == null && w == null) { - return _blink.BlinkDOMPoint.constructorCallback_Dictionary(point_OR_x); + return _blink.BlinkDOMPoint.constructorCallback_1(point_OR_x); } if ((y is num || y == null) && (point_OR_x is num || point_OR_x == null) && z == null && w == null) { - return _blink.BlinkDOMPoint.constructorCallback_double_double(point_OR_x, y); + return _blink.BlinkDOMPoint.constructorCallback_2(point_OR_x, y); } if ((z is num || z == null) && (y is num || y == null) && (point_OR_x is num || point_OR_x == null) && w == null) { - return _blink.BlinkDOMPoint.constructorCallback_double_double_double(point_OR_x, y, z); + return _blink.BlinkDOMPoint.constructorCallback_3(point_OR_x, y, z); } if ((w is num || w == null) && (z is num || z == null) && (y is num || y == null) && (point_OR_x is num || point_OR_x == null)) { - return _blink.BlinkDOMPoint.constructorCallback_double_double_double_double(point_OR_x, y, z, w); + return _blink.BlinkDOMPoint.constructorCallback_4(point_OR_x, y, z, w); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -9869,7 +9939,7 @@ class DomPoint extends DomPointReadOnly { @DomName('DOMPoint.w') @DocsEditable() @Experimental() // untriaged - void set w(num value) => _blink.BlinkDOMPoint.w_Setter_double(this, value); + void set w(num value) => _blink.BlinkDOMPoint.w_Setter(this, value); @DomName('DOMPoint.x') @DocsEditable() @@ -9879,7 +9949,7 @@ class DomPoint extends DomPointReadOnly { @DomName('DOMPoint.x') @DocsEditable() @Experimental() // untriaged - void set x(num value) => _blink.BlinkDOMPoint.x_Setter_double(this, value); + void set x(num value) => _blink.BlinkDOMPoint.x_Setter(this, value); @DomName('DOMPoint.y') @DocsEditable() @@ -9889,7 +9959,7 @@ class DomPoint extends DomPointReadOnly { @DomName('DOMPoint.y') @DocsEditable() @Experimental() // untriaged - void set y(num value) => _blink.BlinkDOMPoint.y_Setter_double(this, value); + void set y(num value) => _blink.BlinkDOMPoint.y_Setter(this, value); @DomName('DOMPoint.z') @DocsEditable() @@ -9899,7 +9969,7 @@ class DomPoint extends DomPointReadOnly { @DomName('DOMPoint.z') @DocsEditable() @Experimental() // untriaged - void set z(num value) => _blink.BlinkDOMPoint.z_Setter_double(this, value); + void set z(num value) => _blink.BlinkDOMPoint.z_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -9919,7 +9989,7 @@ class DomPointReadOnly extends NativeFieldWrapperClass2 { @DomName('DOMPointReadOnly.DOMPointReadOnly') @DocsEditable() factory DomPointReadOnly(num x, num y, num z, num w) { - return _blink.BlinkDOMPointReadOnly.constructorCallback_double_double_double_double(x, y, z, w); + return _blink.BlinkDOMPointReadOnly.constructorCallback_4(x, y, z, w); } @DomName('DOMPointReadOnly.w') @@ -10048,7 +10118,7 @@ class DomRectReadOnly extends NativeFieldWrapperClass2 implements Rectangle { @DomName('DOMRectReadOnly.DOMRectReadOnly') @DocsEditable() factory DomRectReadOnly(num x, num y, num width, num height) { - return _blink.BlinkDOMRectReadOnly.constructorCallback_double_double_double_double(x, y, width, height); + return _blink.BlinkDOMRectReadOnly.constructorCallback_4(x, y, width, height); } @DomName('DOMRectReadOnly.bottom') @@ -10111,11 +10181,11 @@ class DomSettableTokenList extends DomTokenList { @DomName('DOMSettableTokenList.value') @DocsEditable() - void set value(String value) => _blink.BlinkDOMSettableTokenList.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkDOMSettableTokenList.value_Setter(this, value); @DomName('DOMSettableTokenList.__getter__') @DocsEditable() - String __getter__(int index) => _blink.BlinkDOMSettableTokenList.$__getter___Callback_ul(this, index); + String __getter__(int index) => _blink.BlinkDOMSettableTokenList.$__getter___Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -10138,10 +10208,10 @@ class DomStringList extends NativeFieldWrapperClass2 with ListMixin, Imm String operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkDOMStringList.item_Callback_ul(this, index); + return _blink.BlinkDOMStringList.item_Callback_1(this, index); } - String _nativeIndexedGetter(int index) => _blink.BlinkDOMStringList.item_Callback_ul(this, index); + String _nativeIndexedGetter(int index) => _blink.BlinkDOMStringList.item_Callback_1(this, index); void operator[]=(int index, String value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -10183,11 +10253,11 @@ class DomStringList extends NativeFieldWrapperClass2 with ListMixin, Imm @DomName('DOMStringList.contains') @DocsEditable() - bool contains(String string) => _blink.BlinkDOMStringList.contains_Callback_DOMString(this, string); + bool contains(String string) => _blink.BlinkDOMStringList.contains_Callback_1(this, string); @DomName('DOMStringList.item') @DocsEditable() - String item(int index) => _blink.BlinkDOMStringList.item_Callback_ul(this, index); + String item(int index) => _blink.BlinkDOMStringList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -10205,31 +10275,31 @@ abstract class DomStringMap extends NativeFieldWrapperClass2 { bool __delete__(index_OR_name) { if ((index_OR_name is int || index_OR_name == null)) { - return _blink.BlinkDOMStringMap.$__delete___Callback_ul(this, index_OR_name); + return _blink.BlinkDOMStringMap.$__delete___Callback_1(this, index_OR_name); } if ((index_OR_name is String || index_OR_name == null)) { - return _blink.BlinkDOMStringMap.$__delete___Callback_DOMString(this, index_OR_name); + return _blink.BlinkDOMStringMap.$__delete___Callback_1(this, index_OR_name); } throw new ArgumentError("Incorrect number or type of arguments"); } String __getter__(index_OR_name) { if ((index_OR_name is int || index_OR_name == null)) { - return _blink.BlinkDOMStringMap.$__getter___Callback_ul(this, index_OR_name); + return _blink.BlinkDOMStringMap.$__getter___Callback_1(this, index_OR_name); } if ((index_OR_name is String || index_OR_name == null)) { - return _blink.BlinkDOMStringMap.$__getter___Callback_DOMString(this, index_OR_name); + return _blink.BlinkDOMStringMap.$__getter___Callback_1(this, index_OR_name); } throw new ArgumentError("Incorrect number or type of arguments"); } void __setter__(index_OR_name, String value) { if ((value is String || value == null) && (index_OR_name is int || index_OR_name == null)) { - _blink.BlinkDOMStringMap.$__setter___Callback_ul_DOMString(this, index_OR_name, value); + _blink.BlinkDOMStringMap.$__setter___Callback_2(this, index_OR_name, value); return; } if ((value is String || value == null) && (index_OR_name is String || index_OR_name == null)) { - _blink.BlinkDOMStringMap.$__setter___Callback_DOMString_DOMString(this, index_OR_name, value); + _blink.BlinkDOMStringMap.$__setter___Callback_2(this, index_OR_name, value); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -10256,26 +10326,26 @@ class DomTokenList extends NativeFieldWrapperClass2 { @DomName('DOMTokenList.add') @DocsEditable() @Experimental() // untriaged - void add(String tokens) => _blink.BlinkDOMTokenList.add_Callback_DOMString(this, tokens); + void add(String tokens) => _blink.BlinkDOMTokenList.add_Callback_1(this, tokens); @DomName('DOMTokenList.contains') @DocsEditable() - bool contains(String token) => _blink.BlinkDOMTokenList.contains_Callback_DOMString(this, token); + bool contains(String token) => _blink.BlinkDOMTokenList.contains_Callback_1(this, token); @DomName('DOMTokenList.item') @DocsEditable() - String item(int index) => _blink.BlinkDOMTokenList.item_Callback_ul(this, index); + String item(int index) => _blink.BlinkDOMTokenList.item_Callback_1(this, index); @DomName('DOMTokenList.remove') @DocsEditable() @Experimental() // untriaged - void remove(String tokens) => _blink.BlinkDOMTokenList.remove_Callback_DOMString(this, tokens); + void remove(String tokens) => _blink.BlinkDOMTokenList.remove_Callback_1(this, tokens); bool toggle(String token, [bool force]) { if (force != null) { - return _blink.BlinkDOMTokenList.toggle_Callback_DOMString_boolean(this, token, force); + return _blink.BlinkDOMTokenList.toggle_Callback_2(this, token, force); } - return _blink.BlinkDOMTokenList.toggle_Callback_DOMString(this, token); + return _blink.BlinkDOMTokenList.toggle_Callback_1(this, token); } } @@ -12376,7 +12446,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.scrollLeft') @DocsEditable() - void set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter_long(this, value.round()); + void set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value.round()); @DomName('Element.scrollTop') @DocsEditable() @@ -12384,7 +12454,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.scrollTop') @DocsEditable() - void set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter_long(this, value.round()); + void set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value.round()); @DomName('Element.scrollWidth') @DocsEditable() @@ -13095,7 +13165,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.className') @DocsEditable() - void set className(String value) => _blink.BlinkElement.className_Setter_DOMString(this, value); + void set className(String value) => _blink.BlinkElement.className_Setter(this, value); @DomName('Element.clientHeight') @DocsEditable() @@ -13119,7 +13189,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.id') @DocsEditable() - void set id(String value) => _blink.BlinkElement.id_Setter_DOMString(this, value); + void set id(String value) => _blink.BlinkElement.id_Setter(this, value); @DomName('Element.innerHTML') @DocsEditable() @@ -13127,7 +13197,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.innerHTML') @DocsEditable() - void set _innerHtml(String value) => _blink.BlinkElement.innerHTML_Setter_DOMString(this, value); + void set _innerHtml(String value) => _blink.BlinkElement.innerHTML_Setter(this, value); @DomName('Element.localName') @DocsEditable() @@ -13173,7 +13243,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.scrollLeft') @DocsEditable() - void set _scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter_long(this, value); + void set _scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value); @DomName('Element.scrollTop') @DocsEditable() @@ -13181,7 +13251,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.scrollTop') @DocsEditable() - void set _scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter_long(this, value); + void set _scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value); @DomName('Element.scrollWidth') @DocsEditable() @@ -13204,7 +13274,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.animate') @DocsEditable() @Experimental() // untriaged - AnimationPlayer animate(Object effect, [Object timing]) => _blink.BlinkElement.animate_Callback_object_object(this, effect, timing); + AnimationPlayer animate(Object effect, [Object timing]) => _blink.BlinkElement.animate_Callback_2(this, effect, timing); @DomName('Element.blur') @DocsEditable() @@ -13229,12 +13299,12 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.getAttribute') @DocsEditable() @Experimental() // untriaged - String getAttribute(String name) => _blink.BlinkElement.getAttribute_Callback_DOMString(this, name); + String getAttribute(String name) => _blink.BlinkElement.getAttribute_Callback_1(this, name); @DomName('Element.getAttributeNS') @DocsEditable() @Experimental() // untriaged - String getAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.getAttributeNS_Callback_DOMString_DOMString(this, namespaceURI, localName); + String getAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.getAttributeNS_Callback_2(this, namespaceURI, localName); /** * Returns the smallest bounding rectangle that encompasses this element's @@ -13298,47 +13368,47 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, */ @DomName('Element.getElementsByClassName') @DocsEditable() - List getElementsByClassName(String classNames) => _blink.BlinkElement.getElementsByClassName_Callback_DOMString(this, classNames); + List getElementsByClassName(String classNames) => _blink.BlinkElement.getElementsByClassName_Callback_1(this, classNames); @DomName('Element.getElementsByTagName') @DocsEditable() - List _getElementsByTagName(String name) => _blink.BlinkElement.getElementsByTagName_Callback_DOMString(this, name); + List _getElementsByTagName(String name) => _blink.BlinkElement.getElementsByTagName_Callback_1(this, name); @DomName('Element.hasAttribute') @DocsEditable() - bool _hasAttribute(String name) => _blink.BlinkElement.hasAttribute_Callback_DOMString(this, name); + bool _hasAttribute(String name) => _blink.BlinkElement.hasAttribute_Callback_1(this, name); @DomName('Element.hasAttributeNS') @DocsEditable() - bool _hasAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.hasAttributeNS_Callback_DOMString_DOMString(this, namespaceURI, localName); + bool _hasAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.hasAttributeNS_Callback_2(this, namespaceURI, localName); @DomName('Element.insertAdjacentElement') @DocsEditable() @Experimental() // untriaged - Element insertAdjacentElement(String where, Element element) => _blink.BlinkElement.insertAdjacentElement_Callback_DOMString_Element(this, where, element); + Element insertAdjacentElement(String where, Element element) => _blink.BlinkElement.insertAdjacentElement_Callback_2(this, where, element); @DomName('Element.insertAdjacentHTML') @DocsEditable() @Experimental() // untriaged - void insertAdjacentHtml(String where, String html) => _blink.BlinkElement.insertAdjacentHTML_Callback_DOMString_DOMString(this, where, html); + void insertAdjacentHtml(String where, String html) => _blink.BlinkElement.insertAdjacentHTML_Callback_2(this, where, html); @DomName('Element.insertAdjacentText') @DocsEditable() @Experimental() // untriaged - void insertAdjacentText(String where, String text) => _blink.BlinkElement.insertAdjacentText_Callback_DOMString_DOMString(this, where, text); + void insertAdjacentText(String where, String text) => _blink.BlinkElement.insertAdjacentText_Callback_2(this, where, text); @DomName('Element.matches') @DocsEditable() @Experimental() // untriaged - bool matches(String selectors) => _blink.BlinkElement.matches_Callback_DOMString(this, selectors); + bool matches(String selectors) => _blink.BlinkElement.matches_Callback_1(this, selectors); @DomName('Element.removeAttribute') @DocsEditable() - void _removeAttribute(String name) => _blink.BlinkElement.removeAttribute_Callback_DOMString(this, name); + void _removeAttribute(String name) => _blink.BlinkElement.removeAttribute_Callback_1(this, name); @DomName('Element.removeAttributeNS') @DocsEditable() - void _removeAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.removeAttributeNS_Callback_DOMString_DOMString(this, namespaceURI, localName); + void _removeAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.removeAttributeNS_Callback_2(this, namespaceURI, localName); @DomName('Element.requestFullscreen') @DocsEditable() @@ -13352,7 +13422,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, void _scrollIntoView([bool alignWithTop]) { if (alignWithTop != null) { - _blink.BlinkElement.scrollIntoView_Callback_boolean(this, alignWithTop); + _blink.BlinkElement.scrollIntoView_Callback_1(this, alignWithTop); return; } _blink.BlinkElement.scrollIntoView_Callback(this); @@ -13361,7 +13431,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, void _scrollIntoViewIfNeeded([bool centerIfNeeded]) { if (centerIfNeeded != null) { - _blink.BlinkElement.scrollIntoViewIfNeeded_Callback_boolean(this, centerIfNeeded); + _blink.BlinkElement.scrollIntoViewIfNeeded_Callback_1(this, centerIfNeeded); return; } _blink.BlinkElement.scrollIntoViewIfNeeded_Callback(this); @@ -13370,11 +13440,11 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, @DomName('Element.setAttribute') @DocsEditable() - void setAttribute(String name, String value) => _blink.BlinkElement.setAttribute_Callback_DOMString_DOMString(this, name, value); + void setAttribute(String name, String value) => _blink.BlinkElement.setAttribute_Callback_2(this, name, value); @DomName('Element.setAttributeNS') @DocsEditable() - void setAttributeNS(String namespaceURI, String qualifiedName, String value) => _blink.BlinkElement.setAttributeNS_Callback_DOMString_DOMString_DOMString(this, namespaceURI, qualifiedName, value); + void setAttributeNS(String namespaceURI, String qualifiedName, String value) => _blink.BlinkElement.setAttributeNS_Callback_3(this, namespaceURI, qualifiedName, value); @DomName('Element.nextElementSibling') @DocsEditable() @@ -13422,11 +13492,11 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode, */ @DomName('Element.querySelector') @DocsEditable() - Element querySelector(String selectors) => _blink.BlinkElement.querySelector_Callback_DOMString(this, selectors); + Element querySelector(String selectors) => _blink.BlinkElement.querySelector_Callback_1(this, selectors); @DomName('Element.querySelectorAll') @DocsEditable() - List _querySelectorAll(String selectors) => _blink.BlinkElement.querySelectorAll_Callback_DOMString(this, selectors); + List _querySelectorAll(String selectors) => _blink.BlinkElement.querySelectorAll_Callback_1(this, selectors); /// Stream of `abort` events handled by this [Element]. @DomName('Element.onabort') @@ -13956,7 +14026,7 @@ class EmbedElement extends HtmlElement { @DomName('HTMLEmbedElement.height') @DocsEditable() - void set height(String value) => _blink.BlinkHTMLEmbedElement.height_Setter_DOMString(this, value); + void set height(String value) => _blink.BlinkHTMLEmbedElement.height_Setter(this, value); @DomName('HTMLEmbedElement.integrity') @DocsEditable() @@ -13966,7 +14036,7 @@ class EmbedElement extends HtmlElement { @DomName('HTMLEmbedElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLEmbedElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLEmbedElement.integrity_Setter(this, value); @DomName('HTMLEmbedElement.name') @DocsEditable() @@ -13974,7 +14044,7 @@ class EmbedElement extends HtmlElement { @DomName('HTMLEmbedElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLEmbedElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLEmbedElement.name_Setter(this, value); @DomName('HTMLEmbedElement.src') @DocsEditable() @@ -13982,7 +14052,7 @@ class EmbedElement extends HtmlElement { @DomName('HTMLEmbedElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLEmbedElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLEmbedElement.src_Setter(this, value); @DomName('HTMLEmbedElement.type') @DocsEditable() @@ -13990,7 +14060,7 @@ class EmbedElement extends HtmlElement { @DomName('HTMLEmbedElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLEmbedElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLEmbedElement.type_Setter(this, value); @DomName('HTMLEmbedElement.width') @DocsEditable() @@ -13998,15 +14068,15 @@ class EmbedElement extends HtmlElement { @DomName('HTMLEmbedElement.width') @DocsEditable() - void set width(String value) => _blink.BlinkHTMLEmbedElement.width_Setter_DOMString(this, value); + void set width(String value) => _blink.BlinkHTMLEmbedElement.width_Setter(this, value); @DomName('HTMLEmbedElement.__getter__') @DocsEditable() - bool __getter__(index_OR_name) => _blink.BlinkHTMLEmbedElement.$__getter___Callback_ul(this, index_OR_name); + bool __getter__(index_OR_name) => _blink.BlinkHTMLEmbedElement.$__getter___Callback_1(this, index_OR_name); @DomName('HTMLEmbedElement.__setter__') @DocsEditable() - void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLEmbedElement.$__setter___Callback_ul_Node(this, index_OR_name, value); + void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLEmbedElement.$__setter___Callback_2(this, index_OR_name, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -14056,11 +14126,19 @@ class Entry extends NativeFieldWrapperClass2 { String get name => _blink.BlinkEntry.name_Getter(this); void _copyTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) { + if (errorCallback != null) { + _blink.BlinkEntry.copyTo_Callback_4(this, parent, name, successCallback, errorCallback); + return; + } + if (successCallback != null) { + _blink.BlinkEntry.copyTo_Callback_3(this, parent, name, successCallback); + return; + } if (name != null) { - _blink.BlinkEntry.copyTo_Callback_DirectoryEntry_DOMString_EntryCallback_ErrorCallback(this, parent, name, successCallback, errorCallback); + _blink.BlinkEntry.copyTo_Callback_2(this, parent, name); return; } - _blink.BlinkEntry.copyTo_Callback_DirectoryEntry(this, parent); + _blink.BlinkEntry.copyTo_Callback_1(this, parent); return; } @@ -14072,9 +14150,14 @@ class Entry extends NativeFieldWrapperClass2 { return completer.future; } - @DomName('Entry.getMetadata') - @DocsEditable() - void _getMetadata(MetadataCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkEntry.getMetadata_Callback_MetadataCallback_ErrorCallback(this, successCallback, errorCallback); + void _getMetadata(MetadataCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkEntry.getMetadata_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkEntry.getMetadata_Callback_1(this, successCallback); + return; + } Future getMetadata() { var completer = new Completer(); @@ -14084,9 +14167,18 @@ class Entry extends NativeFieldWrapperClass2 { return completer.future; } - @DomName('Entry.getParent') - @DocsEditable() - void _getParent([_EntryCallback successCallback, _ErrorCallback errorCallback]) => _blink.BlinkEntry.getParent_Callback_EntryCallback_ErrorCallback(this, successCallback, errorCallback); + void _getParent([_EntryCallback successCallback, _ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkEntry.getParent_Callback_2(this, successCallback, errorCallback); + return; + } + if (successCallback != null) { + _blink.BlinkEntry.getParent_Callback_1(this, successCallback); + return; + } + _blink.BlinkEntry.getParent_Callback(this); + return; + } Future getParent() { var completer = new Completer(); @@ -14097,11 +14189,19 @@ class Entry extends NativeFieldWrapperClass2 { } void _moveTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) { + if (errorCallback != null) { + _blink.BlinkEntry.moveTo_Callback_4(this, parent, name, successCallback, errorCallback); + return; + } + if (successCallback != null) { + _blink.BlinkEntry.moveTo_Callback_3(this, parent, name, successCallback); + return; + } if (name != null) { - _blink.BlinkEntry.moveTo_Callback_DirectoryEntry_DOMString_EntryCallback_ErrorCallback(this, parent, name, successCallback, errorCallback); + _blink.BlinkEntry.moveTo_Callback_2(this, parent, name); return; } - _blink.BlinkEntry.moveTo_Callback_DirectoryEntry(this, parent); + _blink.BlinkEntry.moveTo_Callback_1(this, parent); return; } @@ -14113,9 +14213,14 @@ class Entry extends NativeFieldWrapperClass2 { return completer.future; } - @DomName('Entry.remove') - @DocsEditable() - void _remove(VoidCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkEntry.remove_Callback_VoidCallback_ErrorCallback(this, successCallback, errorCallback); + void _remove(VoidCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkEntry.remove_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkEntry.remove_Callback_1(this, successCallback); + return; + } Future remove() { var completer = new Completer(); @@ -14354,7 +14459,7 @@ class Event extends NativeFieldWrapperClass2 { @DomName('Event.initEvent') @DocsEditable() - void _initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) => _blink.BlinkEvent.initEvent_Callback_DOMString_boolean_boolean(this, eventTypeArg, canBubbleArg, cancelableArg); + void _initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) => _blink.BlinkEvent.initEvent_Callback_3(this, eventTypeArg, canBubbleArg, cancelableArg); @DomName('Event.preventDefault') @DocsEditable() @@ -14421,9 +14526,9 @@ class EventSource extends EventTarget { @DocsEditable() static EventSource _factoryEventSource(String url, [Map eventSourceInit]) { if (eventSourceInit != null) { - return _blink.BlinkEventSource.constructorCallback_DOMString_Dictionary(url, eventSourceInit); + return _blink.BlinkEventSource.constructorCallback_2(url, eventSourceInit); } - return _blink.BlinkEventSource.constructorCallback_DOMString(url); + return _blink.BlinkEventSource.constructorCallback_1(url); } @DomName('EventSource.CLOSED') @@ -14595,12 +14700,16 @@ class EventTarget extends NativeFieldWrapperClass2 { factory EventTarget._() { throw new UnsupportedError("Not supported"); } void _addEventListener([String type, EventListener listener, bool useCapture]) { + if (useCapture != null) { + _blink.BlinkEventTarget.addEventListener_Callback_3(this, type, listener, useCapture); + return; + } if (listener != null) { - _blink.BlinkEventTarget.addEventListener_Callback_DOMString_EventListener_boolean(this, type, listener, useCapture); + _blink.BlinkEventTarget.addEventListener_Callback_2(this, type, listener); return; } if (type != null) { - _blink.BlinkEventTarget.addEventListener_Callback_DOMString(this, type); + _blink.BlinkEventTarget.addEventListener_Callback_1(this, type); return; } _blink.BlinkEventTarget.addEventListener_Callback(this); @@ -14609,15 +14718,19 @@ class EventTarget extends NativeFieldWrapperClass2 { @DomName('EventTarget.dispatchEvent') @DocsEditable() - bool dispatchEvent(Event event) => _blink.BlinkEventTarget.dispatchEvent_Callback_Event(this, event); + bool dispatchEvent(Event event) => _blink.BlinkEventTarget.dispatchEvent_Callback_1(this, event); void _removeEventListener([String type, EventListener listener, bool useCapture]) { + if (useCapture != null) { + _blink.BlinkEventTarget.removeEventListener_Callback_3(this, type, listener, useCapture); + return; + } if (listener != null) { - _blink.BlinkEventTarget.removeEventListener_Callback_DOMString_EventListener_boolean(this, type, listener, useCapture); + _blink.BlinkEventTarget.removeEventListener_Callback_2(this, type, listener); return; } if (type != null) { - _blink.BlinkEventTarget.removeEventListener_Callback_DOMString(this, type); + _blink.BlinkEventTarget.removeEventListener_Callback_1(this, type); return; } _blink.BlinkEventTarget.removeEventListener_Callback(this); @@ -14642,7 +14755,7 @@ class FederatedCredential extends Credential { @DomName('FederatedCredential.FederatedCredential') @DocsEditable() factory FederatedCredential(String id, String name, String avatarURL, String federation) { - return _blink.BlinkFederatedCredential.constructorCallback_DOMString_DOMString_DOMString_DOMString(id, name, avatarURL, federation); + return _blink.BlinkFederatedCredential.constructorCallback_4(id, name, avatarURL, federation); } @DomName('FederatedCredential.federation') @@ -14713,7 +14826,7 @@ class FetchEvent extends Event { @DomName('FetchEvent.respondWith') @DocsEditable() @Experimental() // untriaged - void respondWith(Object value) => _blink.BlinkFetchEvent.respondWith_Callback_ScriptValue(this, value); + void respondWith(Object value) => _blink.BlinkFetchEvent.respondWith_Callback_1(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -14746,7 +14859,7 @@ class FieldSetElement extends HtmlElement { @DomName('HTMLFieldSetElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.disabled_Setter(this, value); @DomName('HTMLFieldSetElement.elements') @DocsEditable() @@ -14762,7 +14875,7 @@ class FieldSetElement extends HtmlElement { @DomName('HTMLFieldSetElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLFieldSetElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLFieldSetElement.name_Setter(this, value); @DomName('HTMLFieldSetElement.type') @DocsEditable() @@ -14786,7 +14899,7 @@ class FieldSetElement extends HtmlElement { @DomName('HTMLFieldSetElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLFieldSetElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLFieldSetElement.setCustomValidity_Callback_1(this, error); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -14850,9 +14963,14 @@ class FileEntry extends Entry { // To suppress missing implicit constructor warnings. factory FileEntry._() { throw new UnsupportedError("Not supported"); } - @DomName('FileEntry.createWriter') - @DocsEditable() - void _createWriter(_FileWriterCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkFileEntry.createWriter_Callback_FileWriterCallback_ErrorCallback(this, successCallback, errorCallback); + void _createWriter(_FileWriterCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkFileEntry.createWriter_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkFileEntry.createWriter_Callback_1(this, successCallback); + return; + } Future createWriter() { var completer = new Completer(); @@ -14862,9 +14980,14 @@ class FileEntry extends Entry { return completer.future; } - @DomName('FileEntry.file') - @DocsEditable() - void _file(_FileCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkFileEntry.file_Callback_FileCallback_ErrorCallback(this, successCallback, errorCallback); + void _file(_FileCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkFileEntry.file_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkFileEntry.file_Callback_1(this, successCallback); + return; + } Future file() { var completer = new Completer(); @@ -14963,10 +15086,10 @@ class FileList extends NativeFieldWrapperClass2 with ListMixin, ImmutableL File operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkFileList.item_Callback_ul(this, index); + return _blink.BlinkFileList.item_Callback_1(this, index); } - File _nativeIndexedGetter(int index) => _blink.BlinkFileList.item_Callback_ul(this, index); + File _nativeIndexedGetter(int index) => _blink.BlinkFileList.item_Callback_1(this, index); void operator[]=(int index, File value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -15008,7 +15131,7 @@ class FileList extends NativeFieldWrapperClass2 with ListMixin, ImmutableL @DomName('FileList.item') @DocsEditable() - File item(int index) => _blink.BlinkFileList.item_Callback_ul(this, index); + File item(int index) => _blink.BlinkFileList.item_Callback_1(this, index); } // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file @@ -15129,18 +15252,18 @@ class FileReader extends EventTarget { @DomName('FileReader.readAsArrayBuffer') @DocsEditable() - void readAsArrayBuffer(Blob blob) => _blink.BlinkFileReader.readAsArrayBuffer_Callback_Blob(this, blob); + void readAsArrayBuffer(Blob blob) => _blink.BlinkFileReader.readAsArrayBuffer_Callback_1(this, blob); @DomName('FileReader.readAsDataURL') @DocsEditable() - void readAsDataUrl(Blob blob) => _blink.BlinkFileReader.readAsDataURL_Callback_Blob(this, blob); + void readAsDataUrl(Blob blob) => _blink.BlinkFileReader.readAsDataURL_Callback_1(this, blob); void readAsText(Blob blob, [String encoding]) { if (encoding != null) { - _blink.BlinkFileReader.readAsText_Callback_Blob_DOMString(this, blob, encoding); + _blink.BlinkFileReader.readAsText_Callback_2(this, blob, encoding); return; } - _blink.BlinkFileReader.readAsText_Callback_Blob(this, blob); + _blink.BlinkFileReader.readAsText_Callback_1(this, blob); return; } @@ -15343,15 +15466,15 @@ class FileWriter extends EventTarget { @DomName('FileWriter.seek') @DocsEditable() - void seek(int position) => _blink.BlinkFileWriter.seek_Callback_ll(this, position); + void seek(int position) => _blink.BlinkFileWriter.seek_Callback_1(this, position); @DomName('FileWriter.truncate') @DocsEditable() - void truncate(int size) => _blink.BlinkFileWriter.truncate_Callback_ll(this, size); + void truncate(int size) => _blink.BlinkFileWriter.truncate_Callback_1(this, size); @DomName('FileWriter.write') @DocsEditable() - void write(Blob data) => _blink.BlinkFileWriter.write_Callback_Blob(this, data); + void write(Blob data) => _blink.BlinkFileWriter.write_Callback_1(this, data); /// Stream of `abort` events handled by this [FileWriter]. @DomName('FileWriter.onabort') @@ -15431,22 +15554,22 @@ class FontFace extends NativeFieldWrapperClass2 { @DocsEditable() factory FontFace(String family, source, [Map descriptors]) { if ((source is String || source == null) && (family is String || family == null) && descriptors == null) { - return _blink.BlinkFontFace.constructorCallback_DOMString_DOMString(family, source); + return _blink.BlinkFontFace.constructorCallback_2(family, source); } if ((descriptors is Map || descriptors == null) && (source is String || source == null) && (family is String || family == null)) { - return _blink.BlinkFontFace.constructorCallback_DOMString_DOMString_Dictionary(family, source, descriptors); + return _blink.BlinkFontFace.constructorCallback_3(family, source, descriptors); } if ((source is TypedData || source == null) && (family is String || family == null) && descriptors == null) { - return _blink.BlinkFontFace.constructorCallback_DOMString_ArrayBufferView(family, source); + return _blink.BlinkFontFace.constructorCallback_2(family, source); } if ((descriptors is Map || descriptors == null) && (source is TypedData || source == null) && (family is String || family == null)) { - return _blink.BlinkFontFace.constructorCallback_DOMString_ArrayBufferView_Dictionary(family, source, descriptors); + return _blink.BlinkFontFace.constructorCallback_3(family, source, descriptors); } if ((source is ByteBuffer || source == null) && (family is String || family == null) && descriptors == null) { - return _blink.BlinkFontFace.constructorCallback_DOMString_ArrayBuffer(family, source); + return _blink.BlinkFontFace.constructorCallback_2(family, source); } if ((descriptors is Map || descriptors == null) && (source is ByteBuffer || source == null) && (family is String || family == null)) { - return _blink.BlinkFontFace.constructorCallback_DOMString_ArrayBuffer_Dictionary(family, source, descriptors); + return _blink.BlinkFontFace.constructorCallback_3(family, source, descriptors); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -15459,7 +15582,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.family') @DocsEditable() @Experimental() // untriaged - void set family(String value) => _blink.BlinkFontFace.family_Setter_DOMString(this, value); + void set family(String value) => _blink.BlinkFontFace.family_Setter(this, value); @DomName('FontFace.featureSettings') @DocsEditable() @@ -15469,7 +15592,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.featureSettings') @DocsEditable() @Experimental() // untriaged - void set featureSettings(String value) => _blink.BlinkFontFace.featureSettings_Setter_DOMString(this, value); + void set featureSettings(String value) => _blink.BlinkFontFace.featureSettings_Setter(this, value); @DomName('FontFace.loaded') @DocsEditable() @@ -15489,7 +15612,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.stretch') @DocsEditable() @Experimental() // untriaged - void set stretch(String value) => _blink.BlinkFontFace.stretch_Setter_DOMString(this, value); + void set stretch(String value) => _blink.BlinkFontFace.stretch_Setter(this, value); @DomName('FontFace.style') @DocsEditable() @@ -15499,7 +15622,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.style') @DocsEditable() @Experimental() // untriaged - void set style(String value) => _blink.BlinkFontFace.style_Setter_DOMString(this, value); + void set style(String value) => _blink.BlinkFontFace.style_Setter(this, value); @DomName('FontFace.unicodeRange') @DocsEditable() @@ -15509,7 +15632,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.unicodeRange') @DocsEditable() @Experimental() // untriaged - void set unicodeRange(String value) => _blink.BlinkFontFace.unicodeRange_Setter_DOMString(this, value); + void set unicodeRange(String value) => _blink.BlinkFontFace.unicodeRange_Setter(this, value); @DomName('FontFace.variant') @DocsEditable() @@ -15519,7 +15642,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.variant') @DocsEditable() @Experimental() // untriaged - void set variant(String value) => _blink.BlinkFontFace.variant_Setter_DOMString(this, value); + void set variant(String value) => _blink.BlinkFontFace.variant_Setter(this, value); @DomName('FontFace.weight') @DocsEditable() @@ -15529,7 +15652,7 @@ class FontFace extends NativeFieldWrapperClass2 { @DomName('FontFace.weight') @DocsEditable() @Experimental() // untriaged - void set weight(String value) => _blink.BlinkFontFace.weight_Setter_DOMString(this, value); + void set weight(String value) => _blink.BlinkFontFace.weight_Setter(this, value); @DomName('FontFace.load') @DocsEditable() @@ -15564,12 +15687,12 @@ class FontFaceSet extends EventTarget { @DomName('FontFaceSet.add') @DocsEditable() @Experimental() // untriaged - void add(FontFace fontFace) => _blink.BlinkFontFaceSet.add_Callback_FontFace(this, fontFace); + void add(FontFace fontFace) => _blink.BlinkFontFaceSet.add_Callback_1(this, fontFace); @DomName('FontFaceSet.check') @DocsEditable() @Experimental() // untriaged - bool check(String font, String text) => _blink.BlinkFontFaceSet.check_Callback_DOMString_DOMString(this, font, text); + bool check(String font, String text) => _blink.BlinkFontFaceSet.check_Callback_2(this, font, text); @DomName('FontFaceSet.clear') @DocsEditable() @@ -15579,21 +15702,21 @@ class FontFaceSet extends EventTarget { @DomName('FontFaceSet.delete') @DocsEditable() @Experimental() // untriaged - bool delete(FontFace fontFace) => _blink.BlinkFontFaceSet.delete_Callback_FontFace(this, fontFace); + bool delete(FontFace fontFace) => _blink.BlinkFontFaceSet.delete_Callback_1(this, fontFace); void forEach(FontFaceSetForEachCallback callback, [Object thisArg]) { if (thisArg != null) { - _blink.BlinkFontFaceSet.forEach_Callback_FontFaceSetForEachCallback_ScriptValue(this, callback, thisArg); + _blink.BlinkFontFaceSet.forEach_Callback_2(this, callback, thisArg); return; } - _blink.BlinkFontFaceSet.forEach_Callback_FontFaceSetForEachCallback(this, callback); + _blink.BlinkFontFaceSet.forEach_Callback_1(this, callback); return; } @DomName('FontFaceSet.has') @DocsEditable() @Experimental() // untriaged - bool has(FontFace fontFace) => _blink.BlinkFontFaceSet.has_Callback_FontFace(this, fontFace); + bool has(FontFace fontFace) => _blink.BlinkFontFaceSet.has_Callback_1(this, fontFace); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -15648,18 +15771,18 @@ class FormData extends NativeFieldWrapperClass2 { factory FormData([FormElement form]) => _create(form); @DocsEditable() - static FormData _create(form) => _blink.BlinkFormData.constructorCallback_HTMLFormElement(form); + static FormData _create(form) => _blink.BlinkFormData.constructorCallback_1(form); /// Checks if this type is supported on the current platform. static bool get supported => true; @DomName('FormData.append') @DocsEditable() - void append(String name, String value) => _blink.BlinkFormData.append_Callback_DOMString_DOMString(this, name, value); + void append(String name, String value) => _blink.BlinkFormData.append_Callback_2(this, name, value); @DomName('FormData.appendBlob') @DocsEditable() - void appendBlob(String name, Blob value, [String filename]) => _blink.BlinkFormData.append_Callback_DOMString_Blob_DOMString(this, name, value, filename); + void appendBlob(String name, Blob value, [String filename]) => _blink.BlinkFormData.append_Callback_3(this, name, value, filename); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -15691,7 +15814,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.acceptCharset') @DocsEditable() - void set acceptCharset(String value) => _blink.BlinkHTMLFormElement.acceptCharset_Setter_DOMString(this, value); + void set acceptCharset(String value) => _blink.BlinkHTMLFormElement.acceptCharset_Setter(this, value); @DomName('HTMLFormElement.action') @DocsEditable() @@ -15699,7 +15822,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.action') @DocsEditable() - void set action(String value) => _blink.BlinkHTMLFormElement.action_Setter_DOMString(this, value); + void set action(String value) => _blink.BlinkHTMLFormElement.action_Setter(this, value); @DomName('HTMLFormElement.autocomplete') @DocsEditable() @@ -15711,7 +15834,7 @@ class FormElement extends HtmlElement { @DocsEditable() // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute @Experimental() - void set autocomplete(String value) => _blink.BlinkHTMLFormElement.autocomplete_Setter_DOMString(this, value); + void set autocomplete(String value) => _blink.BlinkHTMLFormElement.autocomplete_Setter(this, value); @DomName('HTMLFormElement.encoding') @DocsEditable() @@ -15719,7 +15842,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.encoding') @DocsEditable() - void set encoding(String value) => _blink.BlinkHTMLFormElement.encoding_Setter_DOMString(this, value); + void set encoding(String value) => _blink.BlinkHTMLFormElement.encoding_Setter(this, value); @DomName('HTMLFormElement.enctype') @DocsEditable() @@ -15727,7 +15850,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.enctype') @DocsEditable() - void set enctype(String value) => _blink.BlinkHTMLFormElement.enctype_Setter_DOMString(this, value); + void set enctype(String value) => _blink.BlinkHTMLFormElement.enctype_Setter(this, value); @DomName('HTMLFormElement.length') @DocsEditable() @@ -15739,7 +15862,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.method') @DocsEditable() - void set method(String value) => _blink.BlinkHTMLFormElement.method_Setter_DOMString(this, value); + void set method(String value) => _blink.BlinkHTMLFormElement.method_Setter(this, value); @DomName('HTMLFormElement.name') @DocsEditable() @@ -15747,7 +15870,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLFormElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLFormElement.name_Setter(this, value); @DomName('HTMLFormElement.noValidate') @DocsEditable() @@ -15755,7 +15878,7 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.noValidate') @DocsEditable() - void set noValidate(bool value) => _blink.BlinkHTMLFormElement.noValidate_Setter_boolean(this, value); + void set noValidate(bool value) => _blink.BlinkHTMLFormElement.noValidate_Setter(this, value); @DomName('HTMLFormElement.target') @DocsEditable() @@ -15763,14 +15886,14 @@ class FormElement extends HtmlElement { @DomName('HTMLFormElement.target') @DocsEditable() - void set target(String value) => _blink.BlinkHTMLFormElement.target_Setter_DOMString(this, value); + void set target(String value) => _blink.BlinkHTMLFormElement.target_Setter(this, value); Element __getter__(index_OR_name) { if ((index_OR_name is int || index_OR_name == null)) { - return _blink.BlinkHTMLFormElement.$__getter___Callback_ul(this, index_OR_name); + return _blink.BlinkHTMLFormElement.$__getter___Callback_1(this, index_OR_name); } if ((index_OR_name is String || index_OR_name == null)) { - return _blink.BlinkHTMLFormElement.$__getter___Callback_DOMString(this, index_OR_name); + return _blink.BlinkHTMLFormElement.$__getter___Callback_1(this, index_OR_name); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -15783,7 +15906,7 @@ class FormElement extends HtmlElement { @DocsEditable() // http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html @Experimental() - void requestAutocomplete(Map details) => _blink.BlinkHTMLFormElement.requestAutocomplete_Callback_Dictionary(this, details); + void requestAutocomplete(Map details) => _blink.BlinkHTMLFormElement.requestAutocomplete_Callback_1(this, details); @DomName('HTMLFormElement.reset') @DocsEditable() @@ -15903,12 +16026,12 @@ class Geofencing extends NativeFieldWrapperClass2 { @DomName('Geofencing.registerRegion') @DocsEditable() @Experimental() // untriaged - Future registerRegion(GeofencingRegion region) => _blink.BlinkGeofencing.registerRegion_Callback_GeofencingRegion(this, region); + Future registerRegion(GeofencingRegion region) => _blink.BlinkGeofencing.registerRegion_Callback_1(this, region); @DomName('Geofencing.unregisterRegion') @DocsEditable() @Experimental() // untriaged - Future unregisterRegion(String regionId) => _blink.BlinkGeofencing.unregisterRegion_Callback_DOMString(this, regionId); + Future unregisterRegion(String regionId) => _blink.BlinkGeofencing.unregisterRegion_Callback_1(this, regionId); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -16016,15 +16139,30 @@ class Geolocation extends NativeFieldWrapperClass2 { @DomName('Geolocation.clearWatch') @DocsEditable() - void _clearWatch(int watchID) => _blink.BlinkGeolocation.clearWatch_Callback_long(this, watchID); + void _clearWatch(int watchID) => _blink.BlinkGeolocation.clearWatch_Callback_1(this, watchID); - @DomName('Geolocation.getCurrentPosition') - @DocsEditable() - void _getCurrentPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) => _blink.BlinkGeolocation.getCurrentPosition_Callback_PositionCallback_PositionErrorCallback_Dictionary(this, successCallback, errorCallback, options); + void _getCurrentPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) { + if (options != null) { + _blink.BlinkGeolocation.getCurrentPosition_Callback_3(this, successCallback, errorCallback, options); + return; + } + if (errorCallback != null) { + _blink.BlinkGeolocation.getCurrentPosition_Callback_2(this, successCallback, errorCallback); + return; + } + _blink.BlinkGeolocation.getCurrentPosition_Callback_1(this, successCallback); + return; + } - @DomName('Geolocation.watchPosition') - @DocsEditable() - int _watchPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) => _blink.BlinkGeolocation.watchPosition_Callback_PositionCallback_PositionErrorCallback_Dictionary(this, successCallback, errorCallback, options); + int _watchPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) { + if (options != null) { + return _blink.BlinkGeolocation.watchPosition_Callback_3(this, successCallback, errorCallback, options); + } + if (errorCallback != null) { + return _blink.BlinkGeolocation.watchPosition_Callback_2(this, successCallback, errorCallback); + } + return _blink.BlinkGeolocation.watchPosition_Callback_1(this, successCallback); + } } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -16616,7 +16754,7 @@ class HRElement extends HtmlElement { @DomName('HTMLHRElement.color') @DocsEditable() @Experimental() // untriaged - void set color(String value) => _blink.BlinkHTMLHRElement.color_Setter_DOMString(this, value); + void set color(String value) => _blink.BlinkHTMLHRElement.color_Setter(this, value); } // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file @@ -16654,7 +16792,7 @@ class HashChangeEvent extends Event { @DomName('HashChangeEvent.initHashChangeEvent') @DocsEditable() - void _initHashChangeEvent(String type, bool canBubble, bool cancelable, String oldURL, String newURL) => _blink.BlinkHashChangeEvent.initHashChangeEvent_Callback_DOMString_boolean_boolean_DOMString_DOMString(this, type, canBubble, cancelable, oldURL, newURL); + void _initHashChangeEvent(String type, bool canBubble, bool cancelable, String oldURL, String newURL) => _blink.BlinkHashChangeEvent.initHashChangeEvent_Callback_5(this, type, canBubble, cancelable, oldURL, newURL); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -16702,10 +16840,10 @@ class Headers extends NativeFieldWrapperClass2 { return _blink.BlinkHeaders.constructorCallback(); } if ((input is Headers || input == null)) { - return _blink.BlinkHeaders.constructorCallback_Headers(input); + return _blink.BlinkHeaders.constructorCallback_1(input); } if ((input is Map || input == null)) { - return _blink.BlinkHeaders.constructorCallback_Dictionary(input); + return _blink.BlinkHeaders.constructorCallback_1(input); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -16717,10 +16855,10 @@ class Headers extends NativeFieldWrapperClass2 { void forEach(HeadersForEachCallback callback, [Object thisArg]) { if (thisArg != null) { - _blink.BlinkHeaders.forEach_Callback_HeadersForEachCallback_ScriptValue(this, callback, thisArg); + _blink.BlinkHeaders.forEach_Callback_2(this, callback, thisArg); return; } - _blink.BlinkHeaders.forEach_Callback_HeadersForEachCallback(this, callback); + _blink.BlinkHeaders.forEach_Callback_1(this, callback); return; } @@ -16818,7 +16956,7 @@ class History extends NativeFieldWrapperClass2 implements HistoryBase { @DomName('History.go') @DocsEditable() - void go(int distance) => _blink.BlinkHistory.go_Callback_long(this, distance); + void go(int distance) => _blink.BlinkHistory.go_Callback_1(this, distance); @DomName('History.pushState') @DocsEditable() @@ -16826,7 +16964,7 @@ class History extends NativeFieldWrapperClass2 implements HistoryBase { @SupportedBrowser(SupportedBrowser.FIREFOX) @SupportedBrowser(SupportedBrowser.IE, '10') @SupportedBrowser(SupportedBrowser.SAFARI) - void pushState(Object data, String title, [String url]) => _blink.BlinkHistory.pushState_Callback_ScriptValue_DOMString_DOMString(this, data, title, url); + void pushState(Object data, String title, [String url]) => _blink.BlinkHistory.pushState_Callback_3(this, data, title, url); @DomName('History.replaceState') @DocsEditable() @@ -16834,7 +16972,7 @@ class History extends NativeFieldWrapperClass2 implements HistoryBase { @SupportedBrowser(SupportedBrowser.FIREFOX) @SupportedBrowser(SupportedBrowser.IE, '10') @SupportedBrowser(SupportedBrowser.SAFARI) - void replaceState(Object data, String title, [String url]) => _blink.BlinkHistory.replaceState_Callback_ScriptValue_DOMString_DOMString(this, data, title, url); + void replaceState(Object data, String title, [String url]) => _blink.BlinkHistory.replaceState_Callback_3(this, data, title, url); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a @@ -16856,10 +16994,10 @@ class HtmlCollection extends NativeFieldWrapperClass2 with ListMixin, Immu Node operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkHTMLCollection.item_Callback_ul(this, index); + return _blink.BlinkHTMLCollection.item_Callback_1(this, index); } - Node _nativeIndexedGetter(int index) => _blink.BlinkHTMLCollection.item_Callback_ul(this, index); + Node _nativeIndexedGetter(int index) => _blink.BlinkHTMLCollection.item_Callback_1(this, index); void operator[]=(int index, Node value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -16901,11 +17039,11 @@ class HtmlCollection extends NativeFieldWrapperClass2 with ListMixin, Immu @DomName('HTMLCollection.item') @DocsEditable() - Element item(int index) => _blink.BlinkHTMLCollection.item_Callback_ul(this, index); + Element item(int index) => _blink.BlinkHTMLCollection.item_Callback_1(this, index); @DomName('HTMLCollection.namedItem') @DocsEditable() - Element namedItem(String name) => _blink.BlinkHTMLCollection.namedItem_Callback_DOMString(this, name); + Element namedItem(String name) => _blink.BlinkHTMLCollection.namedItem_Callback_1(this, name); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -17462,7 +17600,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.contentEditable') @DocsEditable() - void set contentEditable(String value) => _blink.BlinkHTMLElement.contentEditable_Setter_DOMString(this, value); + void set contentEditable(String value) => _blink.BlinkHTMLElement.contentEditable_Setter(this, value); @DomName('HTMLElement.dir') @DocsEditable() @@ -17470,7 +17608,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.dir') @DocsEditable() - void set dir(String value) => _blink.BlinkHTMLElement.dir_Setter_DOMString(this, value); + void set dir(String value) => _blink.BlinkHTMLElement.dir_Setter(this, value); @DomName('HTMLElement.draggable') @DocsEditable() @@ -17478,7 +17616,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.draggable') @DocsEditable() - void set draggable(bool value) => _blink.BlinkHTMLElement.draggable_Setter_boolean(this, value); + void set draggable(bool value) => _blink.BlinkHTMLElement.draggable_Setter(this, value); @DomName('HTMLElement.hidden') @DocsEditable() @@ -17486,7 +17624,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.hidden') @DocsEditable() - void set hidden(bool value) => _blink.BlinkHTMLElement.hidden_Setter_boolean(this, value); + void set hidden(bool value) => _blink.BlinkHTMLElement.hidden_Setter(this, value); @DomName('HTMLElement.inputMethodContext') @DocsEditable() @@ -17503,7 +17641,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.lang') @DocsEditable() - void set lang(String value) => _blink.BlinkHTMLElement.lang_Setter_DOMString(this, value); + void set lang(String value) => _blink.BlinkHTMLElement.lang_Setter(this, value); @DomName('HTMLElement.spellcheck') @DocsEditable() @@ -17515,7 +17653,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DocsEditable() // http://blog.whatwg.org/the-road-to-html-5-spellchecking @Experimental() // nonstandard - void set spellcheck(bool value) => _blink.BlinkHTMLElement.spellcheck_Setter_boolean(this, value); + void set spellcheck(bool value) => _blink.BlinkHTMLElement.spellcheck_Setter(this, value); @DomName('HTMLElement.tabIndex') @DocsEditable() @@ -17523,7 +17661,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.tabIndex') @DocsEditable() - void set tabIndex(int value) => _blink.BlinkHTMLElement.tabIndex_Setter_long(this, value); + void set tabIndex(int value) => _blink.BlinkHTMLElement.tabIndex_Setter(this, value); @DomName('HTMLElement.title') @DocsEditable() @@ -17531,7 +17669,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.title') @DocsEditable() - void set title(String value) => _blink.BlinkHTMLElement.title_Setter_DOMString(this, value); + void set title(String value) => _blink.BlinkHTMLElement.title_Setter(this, value); @DomName('HTMLElement.translate') @DocsEditable() @@ -17539,7 +17677,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @DomName('HTMLElement.translate') @DocsEditable() - void set translate(bool value) => _blink.BlinkHTMLElement.translate_Setter_boolean(this, value); + void set translate(bool value) => _blink.BlinkHTMLElement.translate_Setter(this, value); @DomName('HTMLElement.webkitdropzone') @DocsEditable() @@ -17555,7 +17693,7 @@ class HtmlElement extends Element implements GlobalEventHandlers { @SupportedBrowser(SupportedBrowser.SAFARI) @Experimental() // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute - void set dropzone(String value) => _blink.BlinkHTMLElement.webkitdropzone_Setter_DOMString(this, value); + void set dropzone(String value) => _blink.BlinkHTMLElement.webkitdropzone_Setter(this, value); @DomName('HTMLElement.click') @DocsEditable() @@ -17837,7 +17975,7 @@ class HtmlFormControlsCollection extends HtmlCollection { @DomName('HTMLFormControlsCollection.namedItem') @DocsEditable() - Object namedItem(String name) => _blink.BlinkHTMLFormControlsCollection.namedItem_Callback_DOMString(this, name); + Object namedItem(String name) => _blink.BlinkHTMLFormControlsCollection.namedItem_Callback_1(this, name); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -18346,7 +18484,7 @@ class HttpRequest extends HttpRequestEventTarget { */ @DomName('XMLHttpRequest.responseType') @DocsEditable() - void set responseType(String value) => _blink.BlinkXMLHttpRequest.responseType_Setter_DOMString(this, value); + void set responseType(String value) => _blink.BlinkXMLHttpRequest.responseType_Setter(this, value); @DomName('XMLHttpRequest.responseURL') @DocsEditable() @@ -18420,7 +18558,7 @@ class HttpRequest extends HttpRequestEventTarget { @DomName('XMLHttpRequest.timeout') @DocsEditable() @Experimental() // untriaged - void set timeout(int value) => _blink.BlinkXMLHttpRequest.timeout_Setter_ul(this, value); + void set timeout(int value) => _blink.BlinkXMLHttpRequest.timeout_Setter(this, value); /** * [EventTarget] that can hold listeners to track the progress of the request. @@ -18449,7 +18587,7 @@ class HttpRequest extends HttpRequestEventTarget { */ @DomName('XMLHttpRequest.withCredentials') @DocsEditable() - void set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.withCredentials_Setter_boolean(this, value); + void set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.withCredentials_Setter(this, value); /** * Stop the current request. @@ -18486,7 +18624,7 @@ class HttpRequest extends HttpRequestEventTarget { @DomName('XMLHttpRequest.getResponseHeader') @DocsEditable() @Unstable() - String getResponseHeader(String header) => _blink.BlinkXMLHttpRequest.getResponseHeader_Callback_DOMString(this, header); + String getResponseHeader(String header) => _blink.BlinkXMLHttpRequest.getResponseHeader_Callback_1(this, header); /** * Specify the desired `url`, and `method` to use in making the request. @@ -18505,7 +18643,7 @@ class HttpRequest extends HttpRequestEventTarget { */ @DomName('XMLHttpRequest.open') @DocsEditable() - void open(String method, String url, {bool async, String user, String password}) => _blink.BlinkXMLHttpRequest.open_Callback_DOMString_DOMString_boolean_DOMString_DOMString(this, method, url, async, user, password); + void open(String method, String url, {bool async, String user, String password}) => _blink.BlinkXMLHttpRequest.open_Callback_5(this, method, url, async, user, password); /** * Specify a particular MIME type (such as `text/xml`) desired for the @@ -18519,7 +18657,7 @@ class HttpRequest extends HttpRequestEventTarget { @SupportedBrowser(SupportedBrowser.CHROME) @SupportedBrowser(SupportedBrowser.FIREFOX) @SupportedBrowser(SupportedBrowser.SAFARI) - void overrideMimeType(String override) => _blink.BlinkXMLHttpRequest.overrideMimeType_Callback_DOMString(this, override); + void overrideMimeType(String override) => _blink.BlinkXMLHttpRequest.overrideMimeType_Callback_1(this, override); /** * Send the request with any given `data`. @@ -18537,7 +18675,7 @@ class HttpRequest extends HttpRequestEventTarget { */ @DomName('XMLHttpRequest.send') @DocsEditable() - void send([data]) => _blink.BlinkXMLHttpRequest.send_Callback(this, data); + void send([data]) => _blink.BlinkXMLHttpRequest.send_Callback_1(this, data); /** * Sets the value of an HTTP requst header. @@ -18559,7 +18697,7 @@ class HttpRequest extends HttpRequestEventTarget { */ @DomName('XMLHttpRequest.setRequestHeader') @DocsEditable() - void setRequestHeader(String header, String value) => _blink.BlinkXMLHttpRequest.setRequestHeader_Callback_DOMString_DOMString(this, header, value); + void setRequestHeader(String header, String value) => _blink.BlinkXMLHttpRequest.setRequestHeader_Callback_2(this, header, value); /// Stream of `readystatechange` events handled by this [HttpRequest]. /** @@ -18760,7 +18898,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.allowFullscreen') @DocsEditable() @Experimental() // untriaged - void set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.allowFullscreen_Setter_boolean(this, value); + void set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.allowFullscreen_Setter(this, value); @DomName('HTMLIFrameElement.contentWindow') @DocsEditable() @@ -18772,7 +18910,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.height') @DocsEditable() - void set height(String value) => _blink.BlinkHTMLIFrameElement.height_Setter_DOMString(this, value); + void set height(String value) => _blink.BlinkHTMLIFrameElement.height_Setter(this, value); @DomName('HTMLIFrameElement.integrity') @DocsEditable() @@ -18782,7 +18920,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLIFrameElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLIFrameElement.integrity_Setter(this, value); @DomName('HTMLIFrameElement.name') @DocsEditable() @@ -18790,7 +18928,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLIFrameElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLIFrameElement.name_Setter(this, value); @DomName('HTMLIFrameElement.sandbox') @DocsEditable() @@ -18798,7 +18936,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.sandbox') @DocsEditable() - void set sandbox(String value) => _blink.BlinkHTMLIFrameElement.sandbox_Setter_DOMString(this, value); + void set sandbox(String value) => _blink.BlinkHTMLIFrameElement.sandbox_Setter(this, value); @DomName('HTMLIFrameElement.src') @DocsEditable() @@ -18806,7 +18944,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLIFrameElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLIFrameElement.src_Setter(this, value); @DomName('HTMLIFrameElement.srcdoc') @DocsEditable() @@ -18814,7 +18952,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.srcdoc') @DocsEditable() - void set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.srcdoc_Setter_DOMString(this, value); + void set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.srcdoc_Setter(this, value); @DomName('HTMLIFrameElement.width') @DocsEditable() @@ -18822,7 +18960,7 @@ class IFrameElement extends HtmlElement { @DomName('HTMLIFrameElement.width') @DocsEditable() - void set width(String value) => _blink.BlinkHTMLIFrameElement.width_Setter_DOMString(this, value); + void set width(String value) => _blink.BlinkHTMLIFrameElement.width_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -18872,10 +19010,10 @@ class ImageData extends NativeFieldWrapperClass2 { @DocsEditable() factory ImageData(data_OR_width, int height_OR_width, [int height]) { if ((height_OR_width is int || height_OR_width == null) && (data_OR_width is int || data_OR_width == null) && height == null) { - return _blink.BlinkImageData.constructorCallback_ul_ul(data_OR_width, height_OR_width); + return _blink.BlinkImageData.constructorCallback_2(data_OR_width, height_OR_width); } if ((height is int || height == null) && (height_OR_width is int || height_OR_width == null) && (data_OR_width is Uint8ClampedList || data_OR_width == null)) { - return _blink.BlinkImageData.constructorCallback_Uint8ClampedArray_ul_ul(data_OR_width, height_OR_width, height); + return _blink.BlinkImageData.constructorCallback_3(data_OR_width, height_OR_width, height); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -18925,7 +19063,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.alt') @DocsEditable() - void set alt(String value) => _blink.BlinkHTMLImageElement.alt_Setter_DOMString(this, value); + void set alt(String value) => _blink.BlinkHTMLImageElement.alt_Setter(this, value); @DomName('HTMLImageElement.complete') @DocsEditable() @@ -18937,7 +19075,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.crossOrigin') @DocsEditable() - void set crossOrigin(String value) => _blink.BlinkHTMLImageElement.crossOrigin_Setter_DOMString(this, value); + void set crossOrigin(String value) => _blink.BlinkHTMLImageElement.crossOrigin_Setter(this, value); @DomName('HTMLImageElement.currentSrc') @DocsEditable() @@ -18950,7 +19088,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.height') @DocsEditable() - void set height(int value) => _blink.BlinkHTMLImageElement.height_Setter_long(this, value); + void set height(int value) => _blink.BlinkHTMLImageElement.height_Setter(this, value); @DomName('HTMLImageElement.integrity') @DocsEditable() @@ -18960,7 +19098,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLImageElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLImageElement.integrity_Setter(this, value); @DomName('HTMLImageElement.isMap') @DocsEditable() @@ -18968,7 +19106,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.isMap') @DocsEditable() - void set isMap(bool value) => _blink.BlinkHTMLImageElement.isMap_Setter_boolean(this, value); + void set isMap(bool value) => _blink.BlinkHTMLImageElement.isMap_Setter(this, value); @DomName('HTMLImageElement.naturalHeight') @DocsEditable() @@ -18986,7 +19124,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.sizes') @DocsEditable() @Experimental() // untriaged - void set sizes(String value) => _blink.BlinkHTMLImageElement.sizes_Setter_DOMString(this, value); + void set sizes(String value) => _blink.BlinkHTMLImageElement.sizes_Setter(this, value); @DomName('HTMLImageElement.src') @DocsEditable() @@ -18994,7 +19132,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLImageElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLImageElement.src_Setter(this, value); @DomName('HTMLImageElement.srcset') @DocsEditable() @@ -19004,7 +19142,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.srcset') @DocsEditable() @Experimental() // untriaged - void set srcset(String value) => _blink.BlinkHTMLImageElement.srcset_Setter_DOMString(this, value); + void set srcset(String value) => _blink.BlinkHTMLImageElement.srcset_Setter(this, value); @DomName('HTMLImageElement.useMap') @DocsEditable() @@ -19012,7 +19150,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.useMap') @DocsEditable() - void set useMap(String value) => _blink.BlinkHTMLImageElement.useMap_Setter_DOMString(this, value); + void set useMap(String value) => _blink.BlinkHTMLImageElement.useMap_Setter(this, value); @DomName('HTMLImageElement.width') @DocsEditable() @@ -19020,7 +19158,7 @@ class ImageElement extends HtmlElement implements CanvasImageSource { @DomName('HTMLImageElement.width') @DocsEditable() - void set width(int value) => _blink.BlinkHTMLImageElement.width_Setter_long(this, value); + void set width(int value) => _blink.BlinkHTMLImageElement.width_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -19040,7 +19178,7 @@ class InjectedScriptHost extends NativeFieldWrapperClass2 { @DomName('InjectedScriptHost.inspect') @DocsEditable() @Experimental() // untriaged - void inspect(Object objectId, Object hints) => _blink.BlinkInjectedScriptHost.inspect_Callback_ScriptValue_ScriptValue(this, objectId, hints); + void inspect(Object objectId, Object hints) => _blink.BlinkInjectedScriptHost.inspect_Callback_2(this, objectId, hints); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -19098,7 +19236,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.accept') @DocsEditable() - void set accept(String value) => _blink.BlinkHTMLInputElement.accept_Setter_DOMString(this, value); + void set accept(String value) => _blink.BlinkHTMLInputElement.accept_Setter(this, value); @DomName('HTMLInputElement.alt') @DocsEditable() @@ -19106,7 +19244,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.alt') @DocsEditable() - void set alt(String value) => _blink.BlinkHTMLInputElement.alt_Setter_DOMString(this, value); + void set alt(String value) => _blink.BlinkHTMLInputElement.alt_Setter(this, value); @DomName('HTMLInputElement.autocomplete') @DocsEditable() @@ -19114,7 +19252,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.autocomplete') @DocsEditable() - void set autocomplete(String value) => _blink.BlinkHTMLInputElement.autocomplete_Setter_DOMString(this, value); + void set autocomplete(String value) => _blink.BlinkHTMLInputElement.autocomplete_Setter(this, value); @DomName('HTMLInputElement.autofocus') @DocsEditable() @@ -19122,7 +19260,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.autofocus') @DocsEditable() - void set autofocus(bool value) => _blink.BlinkHTMLInputElement.autofocus_Setter_boolean(this, value); + void set autofocus(bool value) => _blink.BlinkHTMLInputElement.autofocus_Setter(this, value); @DomName('HTMLInputElement.capture') @DocsEditable() @@ -19132,7 +19270,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.capture') @DocsEditable() @Experimental() // untriaged - void set capture(bool value) => _blink.BlinkHTMLInputElement.capture_Setter_boolean(this, value); + void set capture(bool value) => _blink.BlinkHTMLInputElement.capture_Setter(this, value); @DomName('HTMLInputElement.checked') @DocsEditable() @@ -19140,7 +19278,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.checked') @DocsEditable() - void set checked(bool value) => _blink.BlinkHTMLInputElement.checked_Setter_boolean(this, value); + void set checked(bool value) => _blink.BlinkHTMLInputElement.checked_Setter(this, value); @DomName('HTMLInputElement.defaultChecked') @DocsEditable() @@ -19148,7 +19286,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.defaultChecked') @DocsEditable() - void set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.defaultChecked_Setter_boolean(this, value); + void set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.defaultChecked_Setter(this, value); @DomName('HTMLInputElement.defaultValue') @DocsEditable() @@ -19156,7 +19294,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.defaultValue') @DocsEditable() - void set defaultValue(String value) => _blink.BlinkHTMLInputElement.defaultValue_Setter_DOMString(this, value); + void set defaultValue(String value) => _blink.BlinkHTMLInputElement.defaultValue_Setter(this, value); @DomName('HTMLInputElement.dirName') @DocsEditable() @@ -19164,7 +19302,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.dirName') @DocsEditable() - void set dirName(String value) => _blink.BlinkHTMLInputElement.dirName_Setter_DOMString(this, value); + void set dirName(String value) => _blink.BlinkHTMLInputElement.dirName_Setter(this, value); @DomName('HTMLInputElement.disabled') @DocsEditable() @@ -19172,7 +19310,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLInputElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLInputElement.disabled_Setter(this, value); @DomName('HTMLInputElement.files') @DocsEditable() @@ -19180,7 +19318,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.files') @DocsEditable() - void set files(List value) => _blink.BlinkHTMLInputElement.files_Setter_FileList(this, value); + void set files(List value) => _blink.BlinkHTMLInputElement.files_Setter(this, value); @DomName('HTMLInputElement.form') @DocsEditable() @@ -19192,7 +19330,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.formAction') @DocsEditable() - void set formAction(String value) => _blink.BlinkHTMLInputElement.formAction_Setter_DOMString(this, value); + void set formAction(String value) => _blink.BlinkHTMLInputElement.formAction_Setter(this, value); @DomName('HTMLInputElement.formEnctype') @DocsEditable() @@ -19200,7 +19338,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.formEnctype') @DocsEditable() - void set formEnctype(String value) => _blink.BlinkHTMLInputElement.formEnctype_Setter_DOMString(this, value); + void set formEnctype(String value) => _blink.BlinkHTMLInputElement.formEnctype_Setter(this, value); @DomName('HTMLInputElement.formMethod') @DocsEditable() @@ -19208,7 +19346,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.formMethod') @DocsEditable() - void set formMethod(String value) => _blink.BlinkHTMLInputElement.formMethod_Setter_DOMString(this, value); + void set formMethod(String value) => _blink.BlinkHTMLInputElement.formMethod_Setter(this, value); @DomName('HTMLInputElement.formNoValidate') @DocsEditable() @@ -19216,7 +19354,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.formNoValidate') @DocsEditable() - void set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.formNoValidate_Setter_boolean(this, value); + void set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.formNoValidate_Setter(this, value); @DomName('HTMLInputElement.formTarget') @DocsEditable() @@ -19224,7 +19362,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.formTarget') @DocsEditable() - void set formTarget(String value) => _blink.BlinkHTMLInputElement.formTarget_Setter_DOMString(this, value); + void set formTarget(String value) => _blink.BlinkHTMLInputElement.formTarget_Setter(this, value); @DomName('HTMLInputElement.height') @DocsEditable() @@ -19232,7 +19370,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.height') @DocsEditable() - void set height(int value) => _blink.BlinkHTMLInputElement.height_Setter_ul(this, value); + void set height(int value) => _blink.BlinkHTMLInputElement.height_Setter(this, value); @DomName('HTMLInputElement.incremental') @DocsEditable() @@ -19244,7 +19382,7 @@ class InputElement extends HtmlElement implements @DocsEditable() // http://www.w3.org/TR/html-markup/input.search.html @Experimental() - void set incremental(bool value) => _blink.BlinkHTMLInputElement.incremental_Setter_boolean(this, value); + void set incremental(bool value) => _blink.BlinkHTMLInputElement.incremental_Setter(this, value); @DomName('HTMLInputElement.indeterminate') @DocsEditable() @@ -19252,7 +19390,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.indeterminate') @DocsEditable() - void set indeterminate(bool value) => _blink.BlinkHTMLInputElement.indeterminate_Setter_boolean(this, value); + void set indeterminate(bool value) => _blink.BlinkHTMLInputElement.indeterminate_Setter(this, value); @DomName('HTMLInputElement.inputMode') @DocsEditable() @@ -19262,7 +19400,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.inputMode') @DocsEditable() @Experimental() // untriaged - void set inputMode(String value) => _blink.BlinkHTMLInputElement.inputMode_Setter_DOMString(this, value); + void set inputMode(String value) => _blink.BlinkHTMLInputElement.inputMode_Setter(this, value); @DomName('HTMLInputElement.labels') @DocsEditable() @@ -19278,7 +19416,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.max') @DocsEditable() - void set max(String value) => _blink.BlinkHTMLInputElement.max_Setter_DOMString(this, value); + void set max(String value) => _blink.BlinkHTMLInputElement.max_Setter(this, value); @DomName('HTMLInputElement.maxLength') @DocsEditable() @@ -19286,7 +19424,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.maxLength') @DocsEditable() - void set maxLength(int value) => _blink.BlinkHTMLInputElement.maxLength_Setter_long(this, value); + void set maxLength(int value) => _blink.BlinkHTMLInputElement.maxLength_Setter(this, value); @DomName('HTMLInputElement.min') @DocsEditable() @@ -19294,7 +19432,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.min') @DocsEditable() - void set min(String value) => _blink.BlinkHTMLInputElement.min_Setter_DOMString(this, value); + void set min(String value) => _blink.BlinkHTMLInputElement.min_Setter(this, value); @DomName('HTMLInputElement.multiple') @DocsEditable() @@ -19302,7 +19440,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.multiple') @DocsEditable() - void set multiple(bool value) => _blink.BlinkHTMLInputElement.multiple_Setter_boolean(this, value); + void set multiple(bool value) => _blink.BlinkHTMLInputElement.multiple_Setter(this, value); @DomName('HTMLInputElement.name') @DocsEditable() @@ -19310,7 +19448,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLInputElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLInputElement.name_Setter(this, value); @DomName('HTMLInputElement.pattern') @DocsEditable() @@ -19318,7 +19456,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.pattern') @DocsEditable() - void set pattern(String value) => _blink.BlinkHTMLInputElement.pattern_Setter_DOMString(this, value); + void set pattern(String value) => _blink.BlinkHTMLInputElement.pattern_Setter(this, value); @DomName('HTMLInputElement.placeholder') @DocsEditable() @@ -19326,7 +19464,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.placeholder') @DocsEditable() - void set placeholder(String value) => _blink.BlinkHTMLInputElement.placeholder_Setter_DOMString(this, value); + void set placeholder(String value) => _blink.BlinkHTMLInputElement.placeholder_Setter(this, value); @DomName('HTMLInputElement.readOnly') @DocsEditable() @@ -19334,7 +19472,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.readOnly') @DocsEditable() - void set readOnly(bool value) => _blink.BlinkHTMLInputElement.readOnly_Setter_boolean(this, value); + void set readOnly(bool value) => _blink.BlinkHTMLInputElement.readOnly_Setter(this, value); @DomName('HTMLInputElement.required') @DocsEditable() @@ -19342,7 +19480,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.required') @DocsEditable() - void set required(bool value) => _blink.BlinkHTMLInputElement.required_Setter_boolean(this, value); + void set required(bool value) => _blink.BlinkHTMLInputElement.required_Setter(this, value); @DomName('HTMLInputElement.selectionDirection') @DocsEditable() @@ -19350,7 +19488,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.selectionDirection') @DocsEditable() - void set selectionDirection(String value) => _blink.BlinkHTMLInputElement.selectionDirection_Setter_DOMString(this, value); + void set selectionDirection(String value) => _blink.BlinkHTMLInputElement.selectionDirection_Setter(this, value); @DomName('HTMLInputElement.selectionEnd') @DocsEditable() @@ -19358,7 +19496,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.selectionEnd') @DocsEditable() - void set selectionEnd(int value) => _blink.BlinkHTMLInputElement.selectionEnd_Setter_long(this, value); + void set selectionEnd(int value) => _blink.BlinkHTMLInputElement.selectionEnd_Setter(this, value); @DomName('HTMLInputElement.selectionStart') @DocsEditable() @@ -19366,7 +19504,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.selectionStart') @DocsEditable() - void set selectionStart(int value) => _blink.BlinkHTMLInputElement.selectionStart_Setter_long(this, value); + void set selectionStart(int value) => _blink.BlinkHTMLInputElement.selectionStart_Setter(this, value); @DomName('HTMLInputElement.size') @DocsEditable() @@ -19374,7 +19512,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.size') @DocsEditable() - void set size(int value) => _blink.BlinkHTMLInputElement.size_Setter_ul(this, value); + void set size(int value) => _blink.BlinkHTMLInputElement.size_Setter(this, value); @DomName('HTMLInputElement.src') @DocsEditable() @@ -19382,7 +19520,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLInputElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLInputElement.src_Setter(this, value); @DomName('HTMLInputElement.step') @DocsEditable() @@ -19390,7 +19528,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.step') @DocsEditable() - void set step(String value) => _blink.BlinkHTMLInputElement.step_Setter_DOMString(this, value); + void set step(String value) => _blink.BlinkHTMLInputElement.step_Setter(this, value); @DomName('HTMLInputElement.type') @DocsEditable() @@ -19398,7 +19536,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLInputElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLInputElement.type_Setter(this, value); @DomName('HTMLInputElement.validationMessage') @DocsEditable() @@ -19414,7 +19552,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLInputElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLInputElement.value_Setter(this, value); @DomName('HTMLInputElement.valueAsDate') @DocsEditable() @@ -19422,7 +19560,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.valueAsDate') @DocsEditable() - void set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.valueAsDate_Setter_Date(this, value); + void set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.valueAsDate_Setter(this, value); @DomName('HTMLInputElement.valueAsNumber') @DocsEditable() @@ -19430,7 +19568,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.valueAsNumber') @DocsEditable() - void set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.valueAsNumber_Setter_double(this, value); + void set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.valueAsNumber_Setter(this, value); @DomName('HTMLInputElement.webkitEntries') @DocsEditable() @@ -19454,7 +19592,7 @@ class InputElement extends HtmlElement implements @SupportedBrowser(SupportedBrowser.SAFARI) @Experimental() // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3 - void set directory(bool value) => _blink.BlinkHTMLInputElement.webkitdirectory_Setter_boolean(this, value); + void set directory(bool value) => _blink.BlinkHTMLInputElement.webkitdirectory_Setter(this, value); @DomName('HTMLInputElement.width') @DocsEditable() @@ -19462,7 +19600,7 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.width') @DocsEditable() - void set width(int value) => _blink.BlinkHTMLInputElement.width_Setter_ul(this, value); + void set width(int value) => _blink.BlinkHTMLInputElement.width_Setter(this, value); @DomName('HTMLInputElement.willValidate') @DocsEditable() @@ -19478,15 +19616,15 @@ class InputElement extends HtmlElement implements @DomName('HTMLInputElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLInputElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLInputElement.setCustomValidity_Callback_1(this, error); void setRangeText(String replacement, {int start, int end, String selectionMode}) { if ((replacement is String || replacement == null) && start == null && end == null && selectionMode == null) { - _blink.BlinkHTMLInputElement.setRangeText_Callback_DOMString(this, replacement); + _blink.BlinkHTMLInputElement.setRangeText_Callback_1(this, replacement); return; } if ((selectionMode is String || selectionMode == null) && (end is int || end == null) && (start is int || start == null) && (replacement is String || replacement == null)) { - _blink.BlinkHTMLInputElement.setRangeText_Callback_DOMString_ul_ul_DOMString(this, replacement, start, end, selectionMode); + _blink.BlinkHTMLInputElement.setRangeText_Callback_4(this, replacement, start, end, selectionMode); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -19494,16 +19632,16 @@ class InputElement extends HtmlElement implements void setSelectionRange(int start, int end, [String direction]) { if (direction != null) { - _blink.BlinkHTMLInputElement.setSelectionRange_Callback_long_long_DOMString(this, start, end, direction); + _blink.BlinkHTMLInputElement.setSelectionRange_Callback_3(this, start, end, direction); return; } - _blink.BlinkHTMLInputElement.setSelectionRange_Callback_long_long(this, start, end); + _blink.BlinkHTMLInputElement.setSelectionRange_Callback_2(this, start, end); return; } void stepDown([int n]) { if (n != null) { - _blink.BlinkHTMLInputElement.stepDown_Callback_long(this, n); + _blink.BlinkHTMLInputElement.stepDown_Callback_1(this, n); return; } _blink.BlinkHTMLInputElement.stepDown_Callback(this); @@ -19512,7 +19650,7 @@ class InputElement extends HtmlElement implements void stepUp([int n]) { if (n != null) { - _blink.BlinkHTMLInputElement.stepUp_Callback_long(this, n); + _blink.BlinkHTMLInputElement.stepUp_Callback_1(this, n); return; } _blink.BlinkHTMLInputElement.stepUp_Callback(this); @@ -20156,7 +20294,7 @@ class InstallPhaseEvent extends Event { @DomName('InstallPhaseEvent.waitUntil') @DocsEditable() @Experimental() // untriaged - void waitUntil(Object value) => _blink.BlinkInstallPhaseEvent.waitUntil_Callback_ScriptValue(this, value); + void waitUntil(Object value) => _blink.BlinkInstallPhaseEvent.waitUntil_Callback_1(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -20247,11 +20385,11 @@ class KeyboardEvent extends UIEvent { @DomName('KeyboardEvent.getModifierState') @DocsEditable() @Experimental() // untriaged - bool getModifierState(String keyArgument) => _blink.BlinkKeyboardEvent.getModifierState_Callback_DOMString(this, keyArgument); + bool getModifierState(String keyArgument) => _blink.BlinkKeyboardEvent.getModifierState_Callback_1(this, keyArgument); @DomName('KeyboardEvent.initKeyboardEvent') @DocsEditable() - void _initKeyboardEvent(String type, bool canBubble, bool cancelable, Window view, String keyIdentifier, int location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkKeyboardEvent.initKeyboardEvent_Callback_DOMString_boolean_boolean_Window_DOMString_ul_boolean_boolean_boolean_boolean(this, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey); + void _initKeyboardEvent(String type, bool canBubble, bool cancelable, Window view, String keyIdentifier, int location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkKeyboardEvent.initKeyboardEvent_Callback_10(this, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -20290,7 +20428,7 @@ class KeygenElement extends HtmlElement { @DomName('HTMLKeygenElement.autofocus') @DocsEditable() - void set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.autofocus_Setter_boolean(this, value); + void set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.autofocus_Setter(this, value); @DomName('HTMLKeygenElement.challenge') @DocsEditable() @@ -20298,7 +20436,7 @@ class KeygenElement extends HtmlElement { @DomName('HTMLKeygenElement.challenge') @DocsEditable() - void set challenge(String value) => _blink.BlinkHTMLKeygenElement.challenge_Setter_DOMString(this, value); + void set challenge(String value) => _blink.BlinkHTMLKeygenElement.challenge_Setter(this, value); @DomName('HTMLKeygenElement.disabled') @DocsEditable() @@ -20306,7 +20444,7 @@ class KeygenElement extends HtmlElement { @DomName('HTMLKeygenElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLKeygenElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLKeygenElement.disabled_Setter(this, value); @DomName('HTMLKeygenElement.form') @DocsEditable() @@ -20318,7 +20456,7 @@ class KeygenElement extends HtmlElement { @DomName('HTMLKeygenElement.keytype') @DocsEditable() - void set keytype(String value) => _blink.BlinkHTMLKeygenElement.keytype_Setter_DOMString(this, value); + void set keytype(String value) => _blink.BlinkHTMLKeygenElement.keytype_Setter(this, value); @DomName('HTMLKeygenElement.labels') @DocsEditable() @@ -20331,7 +20469,7 @@ class KeygenElement extends HtmlElement { @DomName('HTMLKeygenElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLKeygenElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLKeygenElement.name_Setter(this, value); @DomName('HTMLKeygenElement.type') @DocsEditable() @@ -20355,7 +20493,7 @@ class KeygenElement extends HtmlElement { @DomName('HTMLKeygenElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLKeygenElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLKeygenElement.setCustomValidity_Callback_1(this, error); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -20387,7 +20525,7 @@ class LIElement extends HtmlElement { @DomName('HTMLLIElement.value') @DocsEditable() - void set value(int value) => _blink.BlinkHTMLLIElement.value_Setter_long(this, value); + void set value(int value) => _blink.BlinkHTMLLIElement.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -20427,7 +20565,7 @@ class LabelElement extends HtmlElement { @DomName('HTMLLabelElement.htmlFor') @DocsEditable() - void set htmlFor(String value) => _blink.BlinkHTMLLabelElement.htmlFor_Setter_DOMString(this, value); + void set htmlFor(String value) => _blink.BlinkHTMLLabelElement.htmlFor_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -20487,7 +20625,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.crossOrigin') @DocsEditable() @Experimental() // untriaged - void set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.crossOrigin_Setter_DOMString(this, value); + void set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.crossOrigin_Setter(this, value); @DomName('HTMLLinkElement.disabled') @DocsEditable() @@ -20495,7 +20633,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLLinkElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLLinkElement.disabled_Setter(this, value); @DomName('HTMLLinkElement.href') @DocsEditable() @@ -20503,7 +20641,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.href') @DocsEditable() - void set href(String value) => _blink.BlinkHTMLLinkElement.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkHTMLLinkElement.href_Setter(this, value); @DomName('HTMLLinkElement.hreflang') @DocsEditable() @@ -20511,7 +20649,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.hreflang') @DocsEditable() - void set hreflang(String value) => _blink.BlinkHTMLLinkElement.hreflang_Setter_DOMString(this, value); + void set hreflang(String value) => _blink.BlinkHTMLLinkElement.hreflang_Setter(this, value); @DomName('HTMLLinkElement.import') @DocsEditable() @@ -20527,7 +20665,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLLinkElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLLinkElement.integrity_Setter(this, value); @DomName('HTMLLinkElement.media') @DocsEditable() @@ -20535,7 +20673,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.media') @DocsEditable() - void set media(String value) => _blink.BlinkHTMLLinkElement.media_Setter_DOMString(this, value); + void set media(String value) => _blink.BlinkHTMLLinkElement.media_Setter(this, value); @DomName('HTMLLinkElement.rel') @DocsEditable() @@ -20543,7 +20681,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.rel') @DocsEditable() - void set rel(String value) => _blink.BlinkHTMLLinkElement.rel_Setter_DOMString(this, value); + void set rel(String value) => _blink.BlinkHTMLLinkElement.rel_Setter(this, value); @DomName('HTMLLinkElement.sheet') @DocsEditable() @@ -20559,7 +20697,7 @@ class LinkElement extends HtmlElement { @DomName('HTMLLinkElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLLinkElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLLinkElement.type_Setter(this, value); /// Checks if HTML imports are supported on the current platform. @@ -20584,7 +20722,7 @@ class LocalCredential extends Credential { @DomName('LocalCredential.LocalCredential') @DocsEditable() factory LocalCredential(String id, String name, String avatarURL, String password) { - return _blink.BlinkLocalCredential.constructorCallback_DOMString_DOMString_DOMString_DOMString(id, name, avatarURL, password); + return _blink.BlinkLocalCredential.constructorCallback_4(id, name, avatarURL, password); } @DomName('LocalCredential.password') @@ -20615,7 +20753,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.hash') @DocsEditable() - void set hash(String value) => _blink.BlinkLocation.hash_Setter_DOMString(this, value); + void set hash(String value) => _blink.BlinkLocation.hash_Setter(this, value); @DomName('Location.host') @DocsEditable() @@ -20623,7 +20761,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.host') @DocsEditable() - void set host(String value) => _blink.BlinkLocation.host_Setter_DOMString(this, value); + void set host(String value) => _blink.BlinkLocation.host_Setter(this, value); @DomName('Location.hostname') @DocsEditable() @@ -20631,7 +20769,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.hostname') @DocsEditable() - void set hostname(String value) => _blink.BlinkLocation.hostname_Setter_DOMString(this, value); + void set hostname(String value) => _blink.BlinkLocation.hostname_Setter(this, value); @DomName('Location.href') @DocsEditable() @@ -20639,7 +20777,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.href') @DocsEditable() - void set href(String value) => _blink.BlinkLocation.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkLocation.href_Setter(this, value); @DomName('Location.origin') @DocsEditable() @@ -20653,7 +20791,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.pathname') @DocsEditable() - void set pathname(String value) => _blink.BlinkLocation.pathname_Setter_DOMString(this, value); + void set pathname(String value) => _blink.BlinkLocation.pathname_Setter(this, value); @DomName('Location.port') @DocsEditable() @@ -20661,7 +20799,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.port') @DocsEditable() - void set port(String value) => _blink.BlinkLocation.port_Setter_DOMString(this, value); + void set port(String value) => _blink.BlinkLocation.port_Setter(this, value); @DomName('Location.protocol') @DocsEditable() @@ -20669,7 +20807,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.protocol') @DocsEditable() - void set protocol(String value) => _blink.BlinkLocation.protocol_Setter_DOMString(this, value); + void set protocol(String value) => _blink.BlinkLocation.protocol_Setter(this, value); @DomName('Location.search') @DocsEditable() @@ -20677,11 +20815,11 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.search') @DocsEditable() - void set search(String value) => _blink.BlinkLocation.search_Setter_DOMString(this, value); + void set search(String value) => _blink.BlinkLocation.search_Setter(this, value); @DomName('Location.assign') @DocsEditable() - void assign([String url]) => _blink.BlinkLocation.assign_Callback_DOMString(this, url); + void assign([String url]) => _blink.BlinkLocation.assign_Callback_1(this, url); @DomName('Location.reload') @DocsEditable() @@ -20689,7 +20827,7 @@ class Location extends NativeFieldWrapperClass2 implements LocationBase { @DomName('Location.replace') @DocsEditable() - void replace(String url) => _blink.BlinkLocation.replace_Callback_DOMString(this, url); + void replace(String url) => _blink.BlinkLocation.replace_Callback_1(this, url); @DomName('Location.toString') @DocsEditable() @@ -20751,7 +20889,7 @@ class MapElement extends HtmlElement { @DomName('HTMLMapElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLMapElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLMapElement.name_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -20785,7 +20923,7 @@ class MediaController extends EventTarget { @DomName('MediaController.currentTime') @DocsEditable() - void set currentTime(num value) => _blink.BlinkMediaController.currentTime_Setter_double(this, value); + void set currentTime(num value) => _blink.BlinkMediaController.currentTime_Setter(this, value); @DomName('MediaController.defaultPlaybackRate') @DocsEditable() @@ -20793,7 +20931,7 @@ class MediaController extends EventTarget { @DomName('MediaController.defaultPlaybackRate') @DocsEditable() - void set defaultPlaybackRate(num value) => _blink.BlinkMediaController.defaultPlaybackRate_Setter_double(this, value); + void set defaultPlaybackRate(num value) => _blink.BlinkMediaController.defaultPlaybackRate_Setter(this, value); @DomName('MediaController.duration') @DocsEditable() @@ -20805,7 +20943,7 @@ class MediaController extends EventTarget { @DomName('MediaController.muted') @DocsEditable() - void set muted(bool value) => _blink.BlinkMediaController.muted_Setter_boolean(this, value); + void set muted(bool value) => _blink.BlinkMediaController.muted_Setter(this, value); @DomName('MediaController.paused') @DocsEditable() @@ -20817,7 +20955,7 @@ class MediaController extends EventTarget { @DomName('MediaController.playbackRate') @DocsEditable() - void set playbackRate(num value) => _blink.BlinkMediaController.playbackRate_Setter_double(this, value); + void set playbackRate(num value) => _blink.BlinkMediaController.playbackRate_Setter(this, value); @DomName('MediaController.playbackState') @DocsEditable() @@ -20837,7 +20975,7 @@ class MediaController extends EventTarget { @DomName('MediaController.volume') @DocsEditable() - void set volume(num value) => _blink.BlinkMediaController.volume_Setter_double(this, value); + void set volume(num value) => _blink.BlinkMediaController.volume_Setter(this, value); @DomName('MediaController.pause') @DocsEditable() @@ -21020,7 +21158,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.autoplay') @DocsEditable() - void set autoplay(bool value) => _blink.BlinkHTMLMediaElement.autoplay_Setter_boolean(this, value); + void set autoplay(bool value) => _blink.BlinkHTMLMediaElement.autoplay_Setter(this, value); @DomName('HTMLMediaElement.buffered') @DocsEditable() @@ -21032,7 +21170,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.controller') @DocsEditable() - void set controller(MediaController value) => _blink.BlinkHTMLMediaElement.controller_Setter_MediaController(this, value); + void set controller(MediaController value) => _blink.BlinkHTMLMediaElement.controller_Setter(this, value); @DomName('HTMLMediaElement.controls') @DocsEditable() @@ -21040,7 +21178,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.controls') @DocsEditable() - void set controls(bool value) => _blink.BlinkHTMLMediaElement.controls_Setter_boolean(this, value); + void set controls(bool value) => _blink.BlinkHTMLMediaElement.controls_Setter(this, value); @DomName('HTMLMediaElement.crossOrigin') @DocsEditable() @@ -21050,7 +21188,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.crossOrigin') @DocsEditable() @Experimental() // untriaged - void set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.crossOrigin_Setter_DOMString(this, value); + void set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.crossOrigin_Setter(this, value); @DomName('HTMLMediaElement.currentSrc') @DocsEditable() @@ -21062,7 +21200,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.currentTime') @DocsEditable() - void set currentTime(num value) => _blink.BlinkHTMLMediaElement.currentTime_Setter_double(this, value); + void set currentTime(num value) => _blink.BlinkHTMLMediaElement.currentTime_Setter(this, value); @DomName('HTMLMediaElement.defaultMuted') @DocsEditable() @@ -21070,7 +21208,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.defaultMuted') @DocsEditable() - void set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.defaultMuted_Setter_boolean(this, value); + void set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.defaultMuted_Setter(this, value); @DomName('HTMLMediaElement.defaultPlaybackRate') @DocsEditable() @@ -21078,7 +21216,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.defaultPlaybackRate') @DocsEditable() - void set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.defaultPlaybackRate_Setter_double(this, value); + void set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.defaultPlaybackRate_Setter(this, value); @DomName('HTMLMediaElement.duration') @DocsEditable() @@ -21100,7 +21238,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLMediaElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLMediaElement.integrity_Setter(this, value); @DomName('HTMLMediaElement.loop') @DocsEditable() @@ -21108,7 +21246,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.loop') @DocsEditable() - void set loop(bool value) => _blink.BlinkHTMLMediaElement.loop_Setter_boolean(this, value); + void set loop(bool value) => _blink.BlinkHTMLMediaElement.loop_Setter(this, value); @DomName('HTMLMediaElement.mediaGroup') @DocsEditable() @@ -21116,7 +21254,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.mediaGroup') @DocsEditable() - void set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.mediaGroup_Setter_DOMString(this, value); + void set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.mediaGroup_Setter(this, value); @DomName('HTMLMediaElement.mediaKeys') @DocsEditable() @@ -21130,7 +21268,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.muted') @DocsEditable() - void set muted(bool value) => _blink.BlinkHTMLMediaElement.muted_Setter_boolean(this, value); + void set muted(bool value) => _blink.BlinkHTMLMediaElement.muted_Setter(this, value); @DomName('HTMLMediaElement.networkState') @DocsEditable() @@ -21146,7 +21284,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.playbackRate') @DocsEditable() - void set playbackRate(num value) => _blink.BlinkHTMLMediaElement.playbackRate_Setter_double(this, value); + void set playbackRate(num value) => _blink.BlinkHTMLMediaElement.playbackRate_Setter(this, value); @DomName('HTMLMediaElement.played') @DocsEditable() @@ -21158,7 +21296,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.preload') @DocsEditable() - void set preload(String value) => _blink.BlinkHTMLMediaElement.preload_Setter_DOMString(this, value); + void set preload(String value) => _blink.BlinkHTMLMediaElement.preload_Setter(this, value); @DomName('HTMLMediaElement.readyState') @DocsEditable() @@ -21178,7 +21316,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLMediaElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLMediaElement.src_Setter(this, value); @DomName('HTMLMediaElement.textTracks') @DocsEditable() @@ -21197,7 +21335,7 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.volume') @DocsEditable() - void set volume(num value) => _blink.BlinkHTMLMediaElement.volume_Setter_double(this, value); + void set volume(num value) => _blink.BlinkHTMLMediaElement.volume_Setter(this, value); @DomName('HTMLMediaElement.webkitAudioDecodedByteCount') @DocsEditable() @@ -21217,18 +21355,20 @@ class MediaElement extends HtmlElement { TextTrack addTextTrack(String kind, [String label, String language]) { if (language != null) { - return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_DOMString_DOMString_DOMString(this, kind, label, language); + return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_3(this, kind, label, language); } if (label != null) { - return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_DOMString_DOMString(this, kind, label); + return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_2(this, kind, label); } - return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_DOMString(this, kind); + return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_1(this, kind); } - @DomName('HTMLMediaElement.canPlayType') - @DocsEditable() - @Unstable() - String canPlayType(String type, [String keySystem]) => _blink.BlinkHTMLMediaElement.canPlayType_Callback_DOMString_DOMString(this, type, keySystem); + String canPlayType(String type, [String keySystem]) { + if (keySystem != null) { + return _blink.BlinkHTMLMediaElement.canPlayType_Callback_2(this, type, keySystem); + } + return _blink.BlinkHTMLMediaElement.canPlayType_Callback_1(this, type); + } @DomName('HTMLMediaElement.load') @DocsEditable() @@ -21245,14 +21385,14 @@ class MediaElement extends HtmlElement { @DomName('HTMLMediaElement.setMediaKeys') @DocsEditable() @Experimental() // untriaged - void setMediaKeys(MediaKeys mediaKeys) => _blink.BlinkHTMLMediaElement.setMediaKeys_Callback_MediaKeys(this, mediaKeys); + void setMediaKeys(MediaKeys mediaKeys) => _blink.BlinkHTMLMediaElement.setMediaKeys_Callback_1(this, mediaKeys); void addKey(String keySystem, Uint8List key, [Uint8List initData, String sessionId]) { if (initData != null) { - _blink.BlinkHTMLMediaElement.webkitAddKey_Callback_DOMString_Uint8Array_Uint8Array_DOMString(this, keySystem, key, initData, sessionId); + _blink.BlinkHTMLMediaElement.webkitAddKey_Callback_4(this, keySystem, key, initData, sessionId); return; } - _blink.BlinkHTMLMediaElement.webkitAddKey_Callback_DOMString_Uint8Array(this, keySystem, key); + _blink.BlinkHTMLMediaElement.webkitAddKey_Callback_2(this, keySystem, key); return; } @@ -21262,14 +21402,14 @@ class MediaElement extends HtmlElement { @SupportedBrowser(SupportedBrowser.SAFARI) @Experimental() // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions - void cancelKeyRequest(String keySystem, String sessionId) => _blink.BlinkHTMLMediaElement.webkitCancelKeyRequest_Callback_DOMString_DOMString(this, keySystem, sessionId); + void cancelKeyRequest(String keySystem, String sessionId) => _blink.BlinkHTMLMediaElement.webkitCancelKeyRequest_Callback_2(this, keySystem, sessionId); void generateKeyRequest(String keySystem, [Uint8List initData]) { if (initData != null) { - _blink.BlinkHTMLMediaElement.webkitGenerateKeyRequest_Callback_DOMString_Uint8Array(this, keySystem, initData); + _blink.BlinkHTMLMediaElement.webkitGenerateKeyRequest_Callback_2(this, keySystem, initData); return; } - _blink.BlinkHTMLMediaElement.webkitGenerateKeyRequest_Callback_DOMString(this, keySystem); + _blink.BlinkHTMLMediaElement.webkitGenerateKeyRequest_Callback_1(this, keySystem); return; } @@ -21524,10 +21664,10 @@ class MediaKeySession extends EventTarget { Future _update(response) { if ((response is TypedData)) { - return _blink.BlinkMediaKeySession.update_Callback_ArrayBufferView(this, response); + return _blink.BlinkMediaKeySession.update_Callback_1(this, response); } if ((response is ByteBuffer)) { - return _blink.BlinkMediaKeySession.update_Callback_ArrayBuffer(this, response); + return _blink.BlinkMediaKeySession.update_Callback_1(this, response); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -21555,20 +21695,20 @@ class MediaKeys extends NativeFieldWrapperClass2 { @DomName('MediaKeys.create') @DocsEditable() @Experimental() // untriaged - static Future create(String keySystem) => _blink.BlinkMediaKeys.create_Callback_DOMString(keySystem); + static Future create(String keySystem) => _blink.BlinkMediaKeys.create_Callback_1(keySystem); Future _createSession(String initDataType, initData, [String sessionType]) { if ((initData is TypedData) && (initDataType is String) && sessionType == null) { - return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBufferView(this, initDataType, initData); + return _blink.BlinkMediaKeys.createSession_Callback_2(this, initDataType, initData); } if ((sessionType is String || sessionType == null) && (initData is TypedData) && (initDataType is String)) { - return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBufferView_DOMString(this, initDataType, initData, sessionType); + return _blink.BlinkMediaKeys.createSession_Callback_3(this, initDataType, initData, sessionType); } if ((initData is ByteBuffer) && (initDataType is String) && sessionType == null) { - return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBuffer(this, initDataType, initData); + return _blink.BlinkMediaKeys.createSession_Callback_2(this, initDataType, initData); } if ((sessionType is String || sessionType == null) && (initData is ByteBuffer) && (initDataType is String)) { - return _blink.BlinkMediaKeys.createSession_Callback_DOMString_ArrayBuffer_DOMString(this, initDataType, initData, sessionType); + return _blink.BlinkMediaKeys.createSession_Callback_3(this, initDataType, initData, sessionType); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -21576,7 +21716,7 @@ class MediaKeys extends NativeFieldWrapperClass2 { @DomName('MediaKeys.isTypeSupported') @DocsEditable() @Experimental() // untriaged - static bool isTypeSupported(String keySystem, String contentType) => _blink.BlinkMediaKeys.isTypeSupported_Callback_DOMString_DOMString(keySystem, contentType); + static bool isTypeSupported(String keySystem, String contentType) => _blink.BlinkMediaKeys.isTypeSupported_Callback_2(keySystem, contentType); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -21603,19 +21743,19 @@ class MediaList extends NativeFieldWrapperClass2 { @DomName('MediaList.mediaText') @DocsEditable() - void set mediaText(String value) => _blink.BlinkMediaList.mediaText_Setter_DOMString(this, value); + void set mediaText(String value) => _blink.BlinkMediaList.mediaText_Setter(this, value); @DomName('MediaList.appendMedium') @DocsEditable() - void appendMedium(String newMedium) => _blink.BlinkMediaList.appendMedium_Callback_DOMString(this, newMedium); + void appendMedium(String newMedium) => _blink.BlinkMediaList.appendMedium_Callback_1(this, newMedium); @DomName('MediaList.deleteMedium') @DocsEditable() - void deleteMedium(String oldMedium) => _blink.BlinkMediaList.deleteMedium_Callback_DOMString(this, oldMedium); + void deleteMedium(String oldMedium) => _blink.BlinkMediaList.deleteMedium_Callback_1(this, oldMedium); @DomName('MediaList.item') @DocsEditable() - String item(int index) => _blink.BlinkMediaList.item_Callback_ul(this, index); + String item(int index) => _blink.BlinkMediaList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -21672,7 +21812,7 @@ class MediaSource extends EventTarget { @DomName('MediaSource.duration') @DocsEditable() - void set duration(num value) => _blink.BlinkMediaSource.duration_Setter_double(this, value); + void set duration(num value) => _blink.BlinkMediaSource.duration_Setter(this, value); @DomName('MediaSource.readyState') @DocsEditable() @@ -21684,11 +21824,11 @@ class MediaSource extends EventTarget { @DomName('MediaSource.addSourceBuffer') @DocsEditable() - SourceBuffer addSourceBuffer(String type) => _blink.BlinkMediaSource.addSourceBuffer_Callback_DOMString(this, type); + SourceBuffer addSourceBuffer(String type) => _blink.BlinkMediaSource.addSourceBuffer_Callback_1(this, type); void endOfStream([String error]) { if (error != null) { - _blink.BlinkMediaSource.endOfStream_Callback_DOMString(this, error); + _blink.BlinkMediaSource.endOfStream_Callback_1(this, error); return; } _blink.BlinkMediaSource.endOfStream_Callback(this); @@ -21697,11 +21837,11 @@ class MediaSource extends EventTarget { @DomName('MediaSource.isTypeSupported') @DocsEditable() - static bool isTypeSupported(String type) => _blink.BlinkMediaSource.isTypeSupported_Callback_DOMString(type); + static bool isTypeSupported(String type) => _blink.BlinkMediaSource.isTypeSupported_Callback_1(type); @DomName('MediaSource.removeSourceBuffer') @DocsEditable() - void removeSourceBuffer(SourceBuffer buffer) => _blink.BlinkMediaSource.removeSourceBuffer_Callback_SourceBuffer(this, buffer); + void removeSourceBuffer(SourceBuffer buffer) => _blink.BlinkMediaSource.removeSourceBuffer_Callback_1(this, buffer); } // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file @@ -21754,10 +21894,10 @@ class MediaStream extends EventTarget { return _blink.BlinkMediaStream.constructorCallback(); } if ((stream_OR_tracks is MediaStream || stream_OR_tracks == null)) { - return _blink.BlinkMediaStream.constructorCallback_MediaStream(stream_OR_tracks); + return _blink.BlinkMediaStream.constructorCallback_1(stream_OR_tracks); } if ((stream_OR_tracks is List || stream_OR_tracks == null)) { - return _blink.BlinkMediaStream.constructorCallback_A_MediaStreamTrack_A(stream_OR_tracks); + return _blink.BlinkMediaStream.constructorCallback_1(stream_OR_tracks); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -21777,7 +21917,7 @@ class MediaStream extends EventTarget { @DomName('MediaStream.addTrack') @DocsEditable() - void addTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.addTrack_Callback_MediaStreamTrack(this, track); + void addTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.addTrack_Callback_1(this, track); @DomName('MediaStream.clone') @DocsEditable() @@ -21790,7 +21930,7 @@ class MediaStream extends EventTarget { @DomName('MediaStream.getTrackById') @DocsEditable() - MediaStreamTrack getTrackById(String trackId) => _blink.BlinkMediaStream.getTrackById_Callback_DOMString(this, trackId); + MediaStreamTrack getTrackById(String trackId) => _blink.BlinkMediaStream.getTrackById_Callback_1(this, trackId); @DomName('MediaStream.getTracks') @DocsEditable() @@ -21803,7 +21943,7 @@ class MediaStream extends EventTarget { @DomName('MediaStream.removeTrack') @DocsEditable() - void removeTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.removeTrack_Callback_MediaStreamTrack(this, track); + void removeTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.removeTrack_Callback_1(this, track); @DomName('MediaStream.stop') @DocsEditable() @@ -21910,7 +22050,7 @@ class MediaStreamTrack extends EventTarget { @DomName('MediaStreamTrack.enabled') @DocsEditable() - void set enabled(bool value) => _blink.BlinkMediaStreamTrack.enabled_Setter_boolean(this, value); + void set enabled(bool value) => _blink.BlinkMediaStreamTrack.enabled_Setter(this, value); @DomName('MediaStreamTrack.id') @DocsEditable() @@ -21941,7 +22081,7 @@ class MediaStreamTrack extends EventTarget { @DomName('MediaStreamTrack.getSources') @DocsEditable() @Experimental() // untriaged - static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.getSources_Callback_MediaStreamTrackSourcesCallback(callback); + static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.getSources_Callback_1(callback); static Future> getSources() { var completer = new Completer>(); @@ -22073,7 +22213,7 @@ class MenuElement extends HtmlElement { @DomName('HTMLMenuElement.label') @DocsEditable() @Experimental() // untriaged - void set label(String value) => _blink.BlinkHTMLMenuElement.label_Setter_DOMString(this, value); + void set label(String value) => _blink.BlinkHTMLMenuElement.label_Setter(this, value); @DomName('HTMLMenuElement.type') @DocsEditable() @@ -22083,7 +22223,7 @@ class MenuElement extends HtmlElement { @DomName('HTMLMenuElement.type') @DocsEditable() @Experimental() // untriaged - void set type(String value) => _blink.BlinkHTMLMenuElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLMenuElement.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22114,7 +22254,7 @@ class MenuItemElement extends HtmlElement { @DomName('HTMLMenuItemElement.checked') @DocsEditable() @Experimental() // untriaged - void set checked(bool value) => _blink.BlinkHTMLMenuItemElement.checked_Setter_boolean(this, value); + void set checked(bool value) => _blink.BlinkHTMLMenuItemElement.checked_Setter(this, value); @DomName('HTMLMenuItemElement.default') @DocsEditable() @@ -22124,7 +22264,7 @@ class MenuItemElement extends HtmlElement { @DomName('HTMLMenuItemElement.default') @DocsEditable() @Experimental() // untriaged - void set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.default_Setter_boolean(this, value); + void set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.default_Setter(this, value); @DomName('HTMLMenuItemElement.disabled') @DocsEditable() @@ -22134,7 +22274,7 @@ class MenuItemElement extends HtmlElement { @DomName('HTMLMenuItemElement.disabled') @DocsEditable() @Experimental() // untriaged - void set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.disabled_Setter(this, value); @DomName('HTMLMenuItemElement.label') @DocsEditable() @@ -22144,7 +22284,7 @@ class MenuItemElement extends HtmlElement { @DomName('HTMLMenuItemElement.label') @DocsEditable() @Experimental() // untriaged - void set label(String value) => _blink.BlinkHTMLMenuItemElement.label_Setter_DOMString(this, value); + void set label(String value) => _blink.BlinkHTMLMenuItemElement.label_Setter(this, value); @DomName('HTMLMenuItemElement.type') @DocsEditable() @@ -22154,7 +22294,7 @@ class MenuItemElement extends HtmlElement { @DomName('HTMLMenuItemElement.type') @DocsEditable() @Experimental() // untriaged - void set type(String value) => _blink.BlinkHTMLMenuItemElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLMenuItemElement.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22223,7 +22363,7 @@ class MessageEvent extends Event { @DomName('MessageEvent.initMessageEvent') @DocsEditable() - void _initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, Window sourceArg, List messagePorts) => _blink.BlinkMessageEvent.initMessageEvent_Callback_DOMString_boolean_boolean_ScriptValue_DOMString_DOMString_Window_A_MessagePort_A(this, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts); + void _initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, Window sourceArg, List messagePorts) => _blink.BlinkMessageEvent.initMessageEvent_Callback_8(this, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22256,7 +22396,7 @@ class MessagePort extends EventTarget { @DomName('MessagePort.postMessage') @DocsEditable() - void postMessage(Object message, [List transfer]) => _blink.BlinkMessagePort.postMessage_Callback_ScriptValue_SEQ_MessagePort_SEQ(this, message, transfer); + void postMessage(Object message, [List transfer]) => _blink.BlinkMessagePort.postMessage_Callback_2(this, message, transfer); @DomName('MessagePort.start') @DocsEditable() @@ -22297,7 +22437,7 @@ class MetaElement extends HtmlElement { @DomName('HTMLMetaElement.content') @DocsEditable() - void set content(String value) => _blink.BlinkHTMLMetaElement.content_Setter_DOMString(this, value); + void set content(String value) => _blink.BlinkHTMLMetaElement.content_Setter(this, value); @DomName('HTMLMetaElement.httpEquiv') @DocsEditable() @@ -22305,7 +22445,7 @@ class MetaElement extends HtmlElement { @DomName('HTMLMetaElement.httpEquiv') @DocsEditable() - void set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.httpEquiv_Setter_DOMString(this, value); + void set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.httpEquiv_Setter(this, value); @DomName('HTMLMetaElement.name') @DocsEditable() @@ -22313,7 +22453,7 @@ class MetaElement extends HtmlElement { @DomName('HTMLMetaElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLMetaElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLMetaElement.name_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22387,7 +22527,7 @@ class MeterElement extends HtmlElement { @DomName('HTMLMeterElement.high') @DocsEditable() - void set high(num value) => _blink.BlinkHTMLMeterElement.high_Setter_double(this, value); + void set high(num value) => _blink.BlinkHTMLMeterElement.high_Setter(this, value); @DomName('HTMLMeterElement.labels') @DocsEditable() @@ -22400,7 +22540,7 @@ class MeterElement extends HtmlElement { @DomName('HTMLMeterElement.low') @DocsEditable() - void set low(num value) => _blink.BlinkHTMLMeterElement.low_Setter_double(this, value); + void set low(num value) => _blink.BlinkHTMLMeterElement.low_Setter(this, value); @DomName('HTMLMeterElement.max') @DocsEditable() @@ -22408,7 +22548,7 @@ class MeterElement extends HtmlElement { @DomName('HTMLMeterElement.max') @DocsEditable() - void set max(num value) => _blink.BlinkHTMLMeterElement.max_Setter_double(this, value); + void set max(num value) => _blink.BlinkHTMLMeterElement.max_Setter(this, value); @DomName('HTMLMeterElement.min') @DocsEditable() @@ -22416,7 +22556,7 @@ class MeterElement extends HtmlElement { @DomName('HTMLMeterElement.min') @DocsEditable() - void set min(num value) => _blink.BlinkHTMLMeterElement.min_Setter_double(this, value); + void set min(num value) => _blink.BlinkHTMLMeterElement.min_Setter(this, value); @DomName('HTMLMeterElement.optimum') @DocsEditable() @@ -22424,7 +22564,7 @@ class MeterElement extends HtmlElement { @DomName('HTMLMeterElement.optimum') @DocsEditable() - void set optimum(num value) => _blink.BlinkHTMLMeterElement.optimum_Setter_double(this, value); + void set optimum(num value) => _blink.BlinkHTMLMeterElement.optimum_Setter(this, value); @DomName('HTMLMeterElement.value') @DocsEditable() @@ -22432,7 +22572,7 @@ class MeterElement extends HtmlElement { @DomName('HTMLMeterElement.value') @DocsEditable() - void set value(num value) => _blink.BlinkHTMLMeterElement.value_Setter_double(this, value); + void set value(num value) => _blink.BlinkHTMLMeterElement.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22586,10 +22726,10 @@ class MidiOutput extends MidiPort { void send(Uint8List data, [num timestamp]) { if (timestamp != null) { - _blink.BlinkMIDIOutput.send_Callback_Uint8Array_double(this, data, timestamp); + _blink.BlinkMIDIOutput.send_Callback_2(this, data, timestamp); return; } - _blink.BlinkMIDIOutput.send_Callback_Uint8Array(this, data); + _blink.BlinkMIDIOutput.send_Callback_1(this, data); return; } @@ -22697,10 +22837,10 @@ class MimeTypeArray extends NativeFieldWrapperClass2 with ListMixin, I MimeType operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkMimeTypeArray.item_Callback_ul(this, index); + return _blink.BlinkMimeTypeArray.item_Callback_1(this, index); } - MimeType _nativeIndexedGetter(int index) => _blink.BlinkMimeTypeArray.item_Callback_ul(this, index); + MimeType _nativeIndexedGetter(int index) => _blink.BlinkMimeTypeArray.item_Callback_1(this, index); void operator[]=(int index, MimeType value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -22742,15 +22882,15 @@ class MimeTypeArray extends NativeFieldWrapperClass2 with ListMixin, I @DomName('MimeTypeArray.__getter__') @DocsEditable() - MimeType __getter__(String name) => _blink.BlinkMimeTypeArray.$__getter___Callback_DOMString(this, name); + MimeType __getter__(String name) => _blink.BlinkMimeTypeArray.$__getter___Callback_1(this, name); @DomName('MimeTypeArray.item') @DocsEditable() - MimeType item(int index) => _blink.BlinkMimeTypeArray.item_Callback_ul(this, index); + MimeType item(int index) => _blink.BlinkMimeTypeArray.item_Callback_1(this, index); @DomName('MimeTypeArray.namedItem') @DocsEditable() - MimeType namedItem(String name) => _blink.BlinkMimeTypeArray.namedItem_Callback_DOMString(this, name); + MimeType namedItem(String name) => _blink.BlinkMimeTypeArray.namedItem_Callback_1(this, name); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22779,7 +22919,7 @@ class ModElement extends HtmlElement { @DomName('HTMLModElement.cite') @DocsEditable() - void set cite(String value) => _blink.BlinkHTMLModElement.cite_Setter_DOMString(this, value); + void set cite(String value) => _blink.BlinkHTMLModElement.cite_Setter(this, value); @DomName('HTMLModElement.dateTime') @DocsEditable() @@ -22787,7 +22927,7 @@ class ModElement extends HtmlElement { @DomName('HTMLModElement.dateTime') @DocsEditable() - void set dateTime(String value) => _blink.BlinkHTMLModElement.dateTime_Setter_DOMString(this, value); + void set dateTime(String value) => _blink.BlinkHTMLModElement.dateTime_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -22927,7 +23067,7 @@ class MouseEvent extends UIEvent { @DomName('MouseEvent.initMouseEvent') @DocsEditable() - void _initMouseEvent(String type, bool canBubble, bool cancelable, Window view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) => _blink.BlinkMouseEvent.initMouseEvent_Callback_DOMString_boolean_boolean_Window_long_long_long_long_long_boolean_boolean_boolean_boolean_us_EventTarget(this, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget); + void _initMouseEvent(String type, bool canBubble, bool cancelable, Window view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) => _blink.BlinkMouseEvent.initMouseEvent_Callback_15(this, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget); @deprecated @@ -22997,7 +23137,7 @@ class MutationObserver extends NativeFieldWrapperClass2 { factory MutationObserver._(MutationCallback callback) => _create(callback); @DocsEditable() - static MutationObserver _create(callback) => _blink.BlinkMutationObserver.constructorCallback_MutationCallback(callback); + static MutationObserver _create(callback) => _blink.BlinkMutationObserver.constructorCallback_1(callback); @DomName('MutationObserver.disconnect') @DocsEditable() @@ -23005,7 +23145,7 @@ class MutationObserver extends NativeFieldWrapperClass2 { @DomName('MutationObserver.observe') @DocsEditable() - void _observe(Node target, Map options) => _blink.BlinkMutationObserver.observe_Callback_Node_Dictionary(this, target, options); + void _observe(Node target, Map options) => _blink.BlinkMutationObserver.observe_Callback_2(this, target, options); @DomName('MutationObserver.takeRecords') @DocsEditable() @@ -23302,25 +23442,25 @@ class Navigator extends NavigatorCpu implements NavigatorLanguage, NavigatorOnLi @DomName('Navigator.isProtocolHandlerRegistered') @DocsEditable() @Experimental() // untriaged - String isProtocolHandlerRegistered(String scheme, String url) => _blink.BlinkNavigator.isProtocolHandlerRegistered_Callback_DOMString_DOMString(this, scheme, url); + String isProtocolHandlerRegistered(String scheme, String url) => _blink.BlinkNavigator.isProtocolHandlerRegistered_Callback_2(this, scheme, url); @DomName('Navigator.registerProtocolHandler') @DocsEditable() @Unstable() - void registerProtocolHandler(String scheme, String url, String title) => _blink.BlinkNavigator.registerProtocolHandler_Callback_DOMString_DOMString_DOMString(this, scheme, url, title); + void registerProtocolHandler(String scheme, String url, String title) => _blink.BlinkNavigator.registerProtocolHandler_Callback_3(this, scheme, url, title); bool sendBeacon(String url, data) { if ((data is String || data == null) && (url is String || url == null)) { - return _blink.BlinkNavigator.sendBeacon_Callback_DOMString_DOMString(this, url, data); + return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data); } if ((data is TypedData || data == null) && (url is String || url == null)) { - return _blink.BlinkNavigator.sendBeacon_Callback_DOMString_ArrayBufferView(this, url, data); + return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data); } if ((data is FormData || data == null) && (url is String || url == null)) { - return _blink.BlinkNavigator.sendBeacon_Callback_DOMString_FormData(this, url, data); + return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data); } if ((data is Blob || data == null) && (url is String || url == null)) { - return _blink.BlinkNavigator.sendBeacon_Callback_DOMString_Blob(this, url, data); + return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -23328,13 +23468,13 @@ class Navigator extends NavigatorCpu implements NavigatorLanguage, NavigatorOnLi @DomName('Navigator.unregisterProtocolHandler') @DocsEditable() @Experimental() // untriaged - void unregisterProtocolHandler(String scheme, String url) => _blink.BlinkNavigator.unregisterProtocolHandler_Callback_DOMString_DOMString(this, scheme, url); + void unregisterProtocolHandler(String scheme, String url) => _blink.BlinkNavigator.unregisterProtocolHandler_Callback_2(this, scheme, url); @DomName('Navigator.webkitGetUserMedia') @DocsEditable() // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermedia @Experimental() - void _getUserMedia(Map options, _NavigatorUserMediaSuccessCallback successCallback, _NavigatorUserMediaErrorCallback errorCallback) => _blink.BlinkNavigator.webkitGetUserMedia_Callback_Dictionary_NavigatorUserMediaSuccessCallback_NavigatorUserMediaErrorCallback(this, options, successCallback, errorCallback); + void _getUserMedia(Map options, _NavigatorUserMediaSuccessCallback successCallback, _NavigatorUserMediaErrorCallback errorCallback) => _blink.BlinkNavigator.webkitGetUserMedia_Callback_3(this, options, successCallback, errorCallback); @DomName('Navigator.appCodeName') @DocsEditable() @@ -24078,7 +24218,7 @@ class Node extends EventTarget { */ @DomName('Node.textContent') @DocsEditable() - void set text(String value) => _blink.BlinkNode.textContent_Setter_DOMString(this, value); + void set text(String value) => _blink.BlinkNode.textContent_Setter(this, value); /** * Adds a node to the end of the child [nodes] list of this node. @@ -24091,7 +24231,7 @@ class Node extends EventTarget { */ @DomName('Node.appendChild') @DocsEditable() - Node append(Node newChild) => _blink.BlinkNode.appendChild_Callback_Node(this, newChild); + Node append(Node newChild) => _blink.BlinkNode.appendChild_Callback_1(this, newChild); /** * Returns a copy of this node. @@ -24107,7 +24247,7 @@ class Node extends EventTarget { */ @DomName('Node.cloneNode') @DocsEditable() - Node clone(bool deep) => _blink.BlinkNode.cloneNode_Callback_boolean(this, deep); + Node clone(bool deep) => _blink.BlinkNode.cloneNode_Callback_1(this, deep); /** * Returns true if this node contains the specified node. @@ -24119,7 +24259,7 @@ class Node extends EventTarget { */ @DomName('Node.contains') @DocsEditable() - bool contains(Node other) => _blink.BlinkNode.contains_Callback_Node(this, other); + bool contains(Node other) => _blink.BlinkNode.contains_Callback_1(this, other); /** * Returns true if this node has any children. @@ -24145,15 +24285,15 @@ class Node extends EventTarget { */ @DomName('Node.insertBefore') @DocsEditable() - Node insertBefore(Node newChild, Node refChild) => _blink.BlinkNode.insertBefore_Callback_Node_Node(this, newChild, refChild); + Node insertBefore(Node newChild, Node refChild) => _blink.BlinkNode.insertBefore_Callback_2(this, newChild, refChild); @DomName('Node.removeChild') @DocsEditable() - Node _removeChild(Node oldChild) => _blink.BlinkNode.removeChild_Callback_Node(this, oldChild); + Node _removeChild(Node oldChild) => _blink.BlinkNode.removeChild_Callback_1(this, oldChild); @DomName('Node.replaceChild') @DocsEditable() - Node _replaceChild(Node newChild, Node oldChild) => _blink.BlinkNode.replaceChild_Callback_Node_Node(this, newChild, oldChild); + Node _replaceChild(Node newChild, Node oldChild) => _blink.BlinkNode.replaceChild_Callback_2(this, newChild, oldChild); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -24278,10 +24418,10 @@ class NodeList extends NativeFieldWrapperClass2 with ListMixin, ImmutableL Node operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkNodeList.item_Callback_ul(this, index); + return _blink.BlinkNodeList.item_Callback_1(this, index); } - Node _nativeIndexedGetter(int index) => _blink.BlinkNodeList.item_Callback_ul(this, index); + Node _nativeIndexedGetter(int index) => _blink.BlinkNodeList.item_Callback_1(this, index); void operator[]=(int index, Node value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -24323,7 +24463,7 @@ class NodeList extends NativeFieldWrapperClass2 with ListMixin, ImmutableL @DomName('NodeList.item') @DocsEditable() - Node _item(int index) => _blink.BlinkNodeList.item_Callback_ul(this, index); + Node _item(int index) => _blink.BlinkNodeList.item_Callback_1(this, index); } // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file @@ -24394,7 +24534,7 @@ class Notification extends EventTarget { @DomName('Notification.Notification') @DocsEditable() static Notification _factoryNotification(String title, [Map options]) { - return _blink.BlinkNotification.constructorCallback_DOMString_Dictionary(title, options); + return _blink.BlinkNotification.constructorCallback_2(title, options); } @DomName('Notification.body') @@ -24435,9 +24575,14 @@ class Notification extends EventTarget { @DocsEditable() void close() => _blink.BlinkNotification.close_Callback(this); - @DomName('Notification.requestPermission') - @DocsEditable() - static void _requestPermission([_NotificationPermissionCallback callback]) => _blink.BlinkNotification.requestPermission_Callback_NotificationPermissionCallback(callback); + static void _requestPermission([_NotificationPermissionCallback callback]) { + if (callback != null) { + _blink.BlinkNotification.requestPermission_Callback_1(callback); + return; + } + _blink.BlinkNotification.requestPermission_Callback(); + return; + } static Future requestPermission() { var completer = new Completer(); @@ -24507,7 +24652,7 @@ class OListElement extends HtmlElement { @DomName('HTMLOListElement.reversed') @DocsEditable() - void set reversed(bool value) => _blink.BlinkHTMLOListElement.reversed_Setter_boolean(this, value); + void set reversed(bool value) => _blink.BlinkHTMLOListElement.reversed_Setter(this, value); @DomName('HTMLOListElement.start') @DocsEditable() @@ -24515,7 +24660,7 @@ class OListElement extends HtmlElement { @DomName('HTMLOListElement.start') @DocsEditable() - void set start(int value) => _blink.BlinkHTMLOListElement.start_Setter_long(this, value); + void set start(int value) => _blink.BlinkHTMLOListElement.start_Setter(this, value); @DomName('HTMLOListElement.type') @DocsEditable() @@ -24523,7 +24668,7 @@ class OListElement extends HtmlElement { @DomName('HTMLOListElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLOListElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLOListElement.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -24562,7 +24707,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.data') @DocsEditable() - void set data(String value) => _blink.BlinkHTMLObjectElement.data_Setter_DOMString(this, value); + void set data(String value) => _blink.BlinkHTMLObjectElement.data_Setter(this, value); @DomName('HTMLObjectElement.form') @DocsEditable() @@ -24574,7 +24719,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.height') @DocsEditable() - void set height(String value) => _blink.BlinkHTMLObjectElement.height_Setter_DOMString(this, value); + void set height(String value) => _blink.BlinkHTMLObjectElement.height_Setter(this, value); @DomName('HTMLObjectElement.integrity') @DocsEditable() @@ -24584,7 +24729,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLObjectElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLObjectElement.integrity_Setter(this, value); @DomName('HTMLObjectElement.name') @DocsEditable() @@ -24592,7 +24737,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLObjectElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLObjectElement.name_Setter(this, value); @DomName('HTMLObjectElement.type') @DocsEditable() @@ -24600,7 +24745,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLObjectElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLObjectElement.type_Setter(this, value); @DomName('HTMLObjectElement.useMap') @DocsEditable() @@ -24608,7 +24753,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.useMap') @DocsEditable() - void set useMap(String value) => _blink.BlinkHTMLObjectElement.useMap_Setter_DOMString(this, value); + void set useMap(String value) => _blink.BlinkHTMLObjectElement.useMap_Setter(this, value); @DomName('HTMLObjectElement.validationMessage') @DocsEditable() @@ -24624,7 +24769,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.width') @DocsEditable() - void set width(String value) => _blink.BlinkHTMLObjectElement.width_Setter_DOMString(this, value); + void set width(String value) => _blink.BlinkHTMLObjectElement.width_Setter(this, value); @DomName('HTMLObjectElement.willValidate') @DocsEditable() @@ -24632,11 +24777,11 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.__getter__') @DocsEditable() - bool __getter__(index_OR_name) => _blink.BlinkHTMLObjectElement.$__getter___Callback_ul(this, index_OR_name); + bool __getter__(index_OR_name) => _blink.BlinkHTMLObjectElement.$__getter___Callback_1(this, index_OR_name); @DomName('HTMLObjectElement.__setter__') @DocsEditable() - void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLObjectElement.$__setter___Callback_ul_Node(this, index_OR_name, value); + void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLObjectElement.$__setter___Callback_2(this, index_OR_name, value); @DomName('HTMLObjectElement.checkValidity') @DocsEditable() @@ -24644,7 +24789,7 @@ class ObjectElement extends HtmlElement { @DomName('HTMLObjectElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLObjectElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLObjectElement.setCustomValidity_Callback_1(this, error); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -24676,7 +24821,7 @@ class OptGroupElement extends HtmlElement { @DomName('HTMLOptGroupElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.disabled_Setter(this, value); @DomName('HTMLOptGroupElement.label') @DocsEditable() @@ -24684,7 +24829,7 @@ class OptGroupElement extends HtmlElement { @DomName('HTMLOptGroupElement.label') @DocsEditable() - void set label(String value) => _blink.BlinkHTMLOptGroupElement.label_Setter_DOMString(this, value); + void set label(String value) => _blink.BlinkHTMLOptGroupElement.label_Setter(this, value); } // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file @@ -24701,7 +24846,7 @@ class OptionElement extends HtmlElement { @DomName('HTMLOptionElement.HTMLOptionElement') @DocsEditable() factory OptionElement._([String data, String value, bool defaultSelected, bool selected]) { - return _blink.BlinkHTMLOptionElement.constructorCallback_DOMString_DOMString_boolean_boolean(data, value, defaultSelected, selected); + return _blink.BlinkHTMLOptionElement.constructorCallback_4(data, value, defaultSelected, selected); } /** * Constructor instantiated by the DOM when a custom element has been created. @@ -24716,7 +24861,7 @@ class OptionElement extends HtmlElement { @DomName('HTMLOptionElement.defaultSelected') @DocsEditable() - void set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.defaultSelected_Setter_boolean(this, value); + void set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.defaultSelected_Setter(this, value); @DomName('HTMLOptionElement.disabled') @DocsEditable() @@ -24724,7 +24869,7 @@ class OptionElement extends HtmlElement { @DomName('HTMLOptionElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLOptionElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLOptionElement.disabled_Setter(this, value); @DomName('HTMLOptionElement.form') @DocsEditable() @@ -24740,7 +24885,7 @@ class OptionElement extends HtmlElement { @DomName('HTMLOptionElement.label') @DocsEditable() - void set label(String value) => _blink.BlinkHTMLOptionElement.label_Setter_DOMString(this, value); + void set label(String value) => _blink.BlinkHTMLOptionElement.label_Setter(this, value); @DomName('HTMLOptionElement.selected') @DocsEditable() @@ -24748,7 +24893,7 @@ class OptionElement extends HtmlElement { @DomName('HTMLOptionElement.selected') @DocsEditable() - void set selected(bool value) => _blink.BlinkHTMLOptionElement.selected_Setter_boolean(this, value); + void set selected(bool value) => _blink.BlinkHTMLOptionElement.selected_Setter(this, value); @DomName('HTMLOptionElement.value') @DocsEditable() @@ -24756,7 +24901,7 @@ class OptionElement extends HtmlElement { @DomName('HTMLOptionElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLOptionElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLOptionElement.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -24794,7 +24939,7 @@ class OutputElement extends HtmlElement { @DomName('HTMLOutputElement.defaultValue') @DocsEditable() - void set defaultValue(String value) => _blink.BlinkHTMLOutputElement.defaultValue_Setter_DOMString(this, value); + void set defaultValue(String value) => _blink.BlinkHTMLOutputElement.defaultValue_Setter(this, value); @DomName('HTMLOutputElement.form') @DocsEditable() @@ -24815,7 +24960,7 @@ class OutputElement extends HtmlElement { @DomName('HTMLOutputElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLOutputElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLOutputElement.name_Setter(this, value); @DomName('HTMLOutputElement.type') @DocsEditable() @@ -24835,7 +24980,7 @@ class OutputElement extends HtmlElement { @DomName('HTMLOutputElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLOutputElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLOutputElement.value_Setter(this, value); @DomName('HTMLOutputElement.willValidate') @DocsEditable() @@ -24847,7 +24992,7 @@ class OutputElement extends HtmlElement { @DomName('HTMLOutputElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLOutputElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLOutputElement.setCustomValidity_Callback_1(this, error); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -24963,7 +25108,7 @@ class ParamElement extends HtmlElement { @DomName('HTMLParamElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLParamElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLParamElement.name_Setter(this, value); @DomName('HTMLParamElement.value') @DocsEditable() @@ -24971,7 +25116,7 @@ class ParamElement extends HtmlElement { @DomName('HTMLParamElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLParamElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLParamElement.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25011,12 +25156,12 @@ abstract class ParentNode extends NativeFieldWrapperClass2 { @DomName('ParentNode.querySelector') @DocsEditable() @Experimental() // untriaged - Element querySelector(String selectors) => _blink.BlinkParentNode.querySelector_Callback_DOMString(this, selectors); + Element querySelector(String selectors) => _blink.BlinkParentNode.querySelector_Callback_1(this, selectors); @DomName('ParentNode.querySelectorAll') @DocsEditable() @Experimental() // untriaged - List querySelectorAll(String selectors) => _blink.BlinkParentNode.querySelectorAll_Callback_DOMString(this, selectors); + List querySelectorAll(String selectors) => _blink.BlinkParentNode.querySelectorAll_Callback_1(this, selectors); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25040,37 +25185,37 @@ class Path2D extends NativeFieldWrapperClass2 implements _CanvasPathMethods { return _blink.BlinkPath2D.constructorCallback(); } if ((path_OR_text is Path2D || path_OR_text == null)) { - return _blink.BlinkPath2D.constructorCallback_Path2D(path_OR_text); + return _blink.BlinkPath2D.constructorCallback_1(path_OR_text); } if ((path_OR_text is String || path_OR_text == null)) { - return _blink.BlinkPath2D.constructorCallback_DOMString(path_OR_text); + return _blink.BlinkPath2D.constructorCallback_1(path_OR_text); } throw new ArgumentError("Incorrect number or type of arguments"); } void addPath(Path2D path, [Matrix transform]) { if (transform != null) { - _blink.BlinkPath2D.addPath_Callback_Path2D_SVGMatrix(this, path, transform); + _blink.BlinkPath2D.addPath_Callback_2(this, path, transform); return; } - _blink.BlinkPath2D.addPath_Callback_Path2D(this, path); + _blink.BlinkPath2D.addPath_Callback_1(this, path); return; } @DomName('Path2D.arc') @DocsEditable() @Experimental() // untriaged - void arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.arc_Callback_float_float_float_float_float_boolean(this, x, y, radius, startAngle, endAngle, anticlockwise); + void arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.arc_Callback_6(this, x, y, radius, startAngle, endAngle, anticlockwise); @DomName('Path2D.arcTo') @DocsEditable() @Experimental() // untriaged - void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkPath2D.arcTo_Callback_float_float_float_float_float(this, x1, y1, x2, y2, radius); + void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkPath2D.arcTo_Callback_5(this, x1, y1, x2, y2, radius); @DomName('Path2D.bezierCurveTo') @DocsEditable() @Experimental() // untriaged - void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkPath2D.bezierCurveTo_Callback_float_float_float_float_float_float(this, cp1x, cp1y, cp2x, cp2y, x, y); + void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkPath2D.bezierCurveTo_Callback_6(this, cp1x, cp1y, cp2x, cp2y, x, y); @DomName('Path2D.closePath') @DocsEditable() @@ -25080,27 +25225,27 @@ class Path2D extends NativeFieldWrapperClass2 implements _CanvasPathMethods { @DomName('Path2D.ellipse') @DocsEditable() @Experimental() // untriaged - void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.ellipse_Callback_float_float_float_float_float_float_float_boolean(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise); + void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.ellipse_Callback_8(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise); @DomName('Path2D.lineTo') @DocsEditable() @Experimental() // untriaged - void lineTo(num x, num y) => _blink.BlinkPath2D.lineTo_Callback_float_float(this, x, y); + void lineTo(num x, num y) => _blink.BlinkPath2D.lineTo_Callback_2(this, x, y); @DomName('Path2D.moveTo') @DocsEditable() @Experimental() // untriaged - void moveTo(num x, num y) => _blink.BlinkPath2D.moveTo_Callback_float_float(this, x, y); + void moveTo(num x, num y) => _blink.BlinkPath2D.moveTo_Callback_2(this, x, y); @DomName('Path2D.quadraticCurveTo') @DocsEditable() @Experimental() // untriaged - void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkPath2D.quadraticCurveTo_Callback_float_float_float_float(this, cpx, cpy, x, y); + void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkPath2D.quadraticCurveTo_Callback_4(this, cpx, cpy, x, y); @DomName('Path2D.rect') @DocsEditable() @Experimental() // untriaged - void rect(num x, num y, num width, num height) => _blink.BlinkPath2D.rect_Callback_float_float_float_float(this, x, y, width, height); + void rect(num x, num y, num width, num height) => _blink.BlinkPath2D.rect_Callback_4(this, x, y, width, height); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25153,13 +25298,13 @@ class Performance extends EventTarget { @DocsEditable() // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface @Experimental() - void clearMarks(String markName) => _blink.BlinkPerformance.clearMarks_Callback_DOMString(this, markName); + void clearMarks(String markName) => _blink.BlinkPerformance.clearMarks_Callback_1(this, markName); @DomName('Performance.clearMeasures') @DocsEditable() // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface @Experimental() - void clearMeasures(String measureName) => _blink.BlinkPerformance.clearMeasures_Callback_DOMString(this, measureName); + void clearMeasures(String measureName) => _blink.BlinkPerformance.clearMeasures_Callback_1(this, measureName); @DomName('Performance.getEntries') @DocsEditable() @@ -25171,25 +25316,25 @@ class Performance extends EventTarget { @DocsEditable() // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute @Experimental() - List getEntriesByName(String name, String entryType) => _blink.BlinkPerformance.getEntriesByName_Callback_DOMString_DOMString(this, name, entryType); + List getEntriesByName(String name, String entryType) => _blink.BlinkPerformance.getEntriesByName_Callback_2(this, name, entryType); @DomName('Performance.getEntriesByType') @DocsEditable() // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute @Experimental() - List getEntriesByType(String entryType) => _blink.BlinkPerformance.getEntriesByType_Callback_DOMString(this, entryType); + List getEntriesByType(String entryType) => _blink.BlinkPerformance.getEntriesByType_Callback_1(this, entryType); @DomName('Performance.mark') @DocsEditable() // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface @Experimental() - void mark(String markName) => _blink.BlinkPerformance.mark_Callback_DOMString(this, markName); + void mark(String markName) => _blink.BlinkPerformance.mark_Callback_1(this, markName); @DomName('Performance.measure') @DocsEditable() // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface @Experimental() - void measure(String measureName, String startMark, String endMark) => _blink.BlinkPerformance.measure_Callback_DOMString_DOMString_DOMString(this, measureName, startMark, endMark); + void measure(String measureName, String startMark, String endMark) => _blink.BlinkPerformance.measure_Callback_3(this, measureName, startMark, endMark); @DomName('Performance.now') @DocsEditable() @@ -25209,7 +25354,7 @@ class Performance extends EventTarget { @SupportedBrowser(SupportedBrowser.SAFARI) @Experimental() // http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods - void setResourceTimingBufferSize(int maxSize) => _blink.BlinkPerformance.webkitSetResourceTimingBufferSize_Callback_ul(this, maxSize); + void setResourceTimingBufferSize(int maxSize) => _blink.BlinkPerformance.webkitSetResourceTimingBufferSize_Callback_1(this, maxSize); /// Stream of `resourcetimingbufferfull` events handled by this [Performance]. @DomName('Performance.onwebkitresourcetimingbufferfull') @@ -25541,15 +25686,15 @@ class Plugin extends NativeFieldWrapperClass2 { @DomName('Plugin.__getter__') @DocsEditable() - MimeType __getter__(String name) => _blink.BlinkPlugin.$__getter___Callback_DOMString(this, name); + MimeType __getter__(String name) => _blink.BlinkPlugin.$__getter___Callback_1(this, name); @DomName('Plugin.item') @DocsEditable() - MimeType item(int index) => _blink.BlinkPlugin.item_Callback_ul(this, index); + MimeType item(int index) => _blink.BlinkPlugin.item_Callback_1(this, index); @DomName('Plugin.namedItem') @DocsEditable() - MimeType namedItem(String name) => _blink.BlinkPlugin.namedItem_Callback_DOMString(this, name); + MimeType namedItem(String name) => _blink.BlinkPlugin.namedItem_Callback_1(this, name); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25573,10 +25718,10 @@ class PluginArray extends NativeFieldWrapperClass2 with ListMixin, Immut Plugin operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkPluginArray.item_Callback_ul(this, index); + return _blink.BlinkPluginArray.item_Callback_1(this, index); } - Plugin _nativeIndexedGetter(int index) => _blink.BlinkPluginArray.item_Callback_ul(this, index); + Plugin _nativeIndexedGetter(int index) => _blink.BlinkPluginArray.item_Callback_1(this, index); void operator[]=(int index, Plugin value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -25618,19 +25763,19 @@ class PluginArray extends NativeFieldWrapperClass2 with ListMixin, Immut @DomName('PluginArray.__getter__') @DocsEditable() - Plugin __getter__(String name) => _blink.BlinkPluginArray.$__getter___Callback_DOMString(this, name); + Plugin __getter__(String name) => _blink.BlinkPluginArray.$__getter___Callback_1(this, name); @DomName('PluginArray.item') @DocsEditable() - Plugin item(int index) => _blink.BlinkPluginArray.item_Callback_ul(this, index); + Plugin item(int index) => _blink.BlinkPluginArray.item_Callback_1(this, index); @DomName('PluginArray.namedItem') @DocsEditable() - Plugin namedItem(String name) => _blink.BlinkPluginArray.namedItem_Callback_DOMString(this, name); + Plugin namedItem(String name) => _blink.BlinkPluginArray.namedItem_Callback_1(this, name); @DomName('PluginArray.refresh') @DocsEditable() - void refresh(bool reload) => _blink.BlinkPluginArray.refresh_Callback_boolean(this, reload); + void refresh(bool reload) => _blink.BlinkPluginArray.refresh_Callback_1(this, reload); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25799,7 +25944,7 @@ class ProgressElement extends HtmlElement { @DomName('HTMLProgressElement.max') @DocsEditable() - void set max(num value) => _blink.BlinkHTMLProgressElement.max_Setter_double(this, value); + void set max(num value) => _blink.BlinkHTMLProgressElement.max_Setter(this, value); @DomName('HTMLProgressElement.position') @DocsEditable() @@ -25811,7 +25956,7 @@ class ProgressElement extends HtmlElement { @DomName('HTMLProgressElement.value') @DocsEditable() - void set value(num value) => _blink.BlinkHTMLProgressElement.value_Setter_double(this, value); + void set value(num value) => _blink.BlinkHTMLProgressElement.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25877,7 +26022,7 @@ class PushManager extends NativeFieldWrapperClass2 { @DomName('PushManager.register') @DocsEditable() @Experimental() // untriaged - Future register(String senderId) => _blink.BlinkPushManager.register_Callback_DOMString(this, senderId); + Future register(String senderId) => _blink.BlinkPushManager.register_Callback_1(this, senderId); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -25934,7 +26079,7 @@ class QuoteElement extends HtmlElement { @DomName('HTMLQuoteElement.cite') @DocsEditable() - void set cite(String value) => _blink.BlinkHTMLQuoteElement.cite_Setter_DOMString(this, value); + void set cite(String value) => _blink.BlinkHTMLQuoteElement.cite_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -26057,7 +26202,7 @@ class Range extends NativeFieldWrapperClass2 { void collapse([bool toStart]) { if (toStart != null) { - _blink.BlinkRange.collapse_Callback_boolean(this, toStart); + _blink.BlinkRange.collapse_Callback_1(this, toStart); return; } _blink.BlinkRange.collapse_Callback(this); @@ -26066,11 +26211,11 @@ class Range extends NativeFieldWrapperClass2 { @DomName('Range.comparePoint') @DocsEditable() - int comparePoint(Node refNode, int offset) => _blink.BlinkRange.comparePoint_Callback_Node_long(this, refNode, offset); + int comparePoint(Node refNode, int offset) => _blink.BlinkRange.comparePoint_Callback_2(this, refNode, offset); @DomName('Range.createContextualFragment') @DocsEditable() - DocumentFragment createContextualFragment(String html) => _blink.BlinkRange.createContextualFragment_Callback_DOMString(this, html); + DocumentFragment createContextualFragment(String html) => _blink.BlinkRange.createContextualFragment_Callback_1(this, html); @DomName('Range.deleteContents') @DocsEditable() @@ -26083,7 +26228,7 @@ class Range extends NativeFieldWrapperClass2 { @DomName('Range.expand') @DocsEditable() @Experimental() // non-standard - void expand(String unit) => _blink.BlinkRange.expand_Callback_DOMString(this, unit); + void expand(String unit) => _blink.BlinkRange.expand_Callback_1(this, unit); @DomName('Range.extractContents') @DocsEditable() @@ -26099,47 +26244,47 @@ class Range extends NativeFieldWrapperClass2 { @DomName('Range.insertNode') @DocsEditable() - void insertNode(Node newNode) => _blink.BlinkRange.insertNode_Callback_Node(this, newNode); + void insertNode(Node newNode) => _blink.BlinkRange.insertNode_Callback_1(this, newNode); @DomName('Range.isPointInRange') @DocsEditable() - bool isPointInRange(Node refNode, int offset) => _blink.BlinkRange.isPointInRange_Callback_Node_long(this, refNode, offset); + bool isPointInRange(Node refNode, int offset) => _blink.BlinkRange.isPointInRange_Callback_2(this, refNode, offset); @DomName('Range.selectNode') @DocsEditable() - void selectNode(Node refNode) => _blink.BlinkRange.selectNode_Callback_Node(this, refNode); + void selectNode(Node refNode) => _blink.BlinkRange.selectNode_Callback_1(this, refNode); @DomName('Range.selectNodeContents') @DocsEditable() - void selectNodeContents(Node refNode) => _blink.BlinkRange.selectNodeContents_Callback_Node(this, refNode); + void selectNodeContents(Node refNode) => _blink.BlinkRange.selectNodeContents_Callback_1(this, refNode); @DomName('Range.setEnd') @DocsEditable() - void setEnd(Node refNode, int offset) => _blink.BlinkRange.setEnd_Callback_Node_long(this, refNode, offset); + void setEnd(Node refNode, int offset) => _blink.BlinkRange.setEnd_Callback_2(this, refNode, offset); @DomName('Range.setEndAfter') @DocsEditable() - void setEndAfter(Node refNode) => _blink.BlinkRange.setEndAfter_Callback_Node(this, refNode); + void setEndAfter(Node refNode) => _blink.BlinkRange.setEndAfter_Callback_1(this, refNode); @DomName('Range.setEndBefore') @DocsEditable() - void setEndBefore(Node refNode) => _blink.BlinkRange.setEndBefore_Callback_Node(this, refNode); + void setEndBefore(Node refNode) => _blink.BlinkRange.setEndBefore_Callback_1(this, refNode); @DomName('Range.setStart') @DocsEditable() - void setStart(Node refNode, int offset) => _blink.BlinkRange.setStart_Callback_Node_long(this, refNode, offset); + void setStart(Node refNode, int offset) => _blink.BlinkRange.setStart_Callback_2(this, refNode, offset); @DomName('Range.setStartAfter') @DocsEditable() - void setStartAfter(Node refNode) => _blink.BlinkRange.setStartAfter_Callback_Node(this, refNode); + void setStartAfter(Node refNode) => _blink.BlinkRange.setStartAfter_Callback_1(this, refNode); @DomName('Range.setStartBefore') @DocsEditable() - void setStartBefore(Node refNode) => _blink.BlinkRange.setStartBefore_Callback_Node(this, refNode); + void setStartBefore(Node refNode) => _blink.BlinkRange.setStartBefore_Callback_1(this, refNode); @DomName('Range.surroundContents') @DocsEditable() - void surroundContents(Node newParent) => _blink.BlinkRange.surroundContents_Callback_Node(this, newParent); + void surroundContents(Node newParent) => _blink.BlinkRange.surroundContents_Callback_1(this, newParent); /** @@ -26276,7 +26421,7 @@ class RtcDataChannel extends EventTarget { @DomName('RTCDataChannel.binaryType') @DocsEditable() - void set binaryType(String value) => _blink.BlinkRTCDataChannel.binaryType_Setter_DOMString(this, value); + void set binaryType(String value) => _blink.BlinkRTCDataChannel.binaryType_Setter(this, value); @DomName('RTCDataChannel.bufferedAmount') @DocsEditable() @@ -26330,19 +26475,19 @@ class RtcDataChannel extends EventTarget { void send(data) { if ((data is String || data == null)) { - _blink.BlinkRTCDataChannel.send_Callback_DOMString(this, data); + _blink.BlinkRTCDataChannel.send_Callback_1(this, data); return; } if ((data is Blob || data == null)) { - _blink.BlinkRTCDataChannel.send_Callback_Blob(this, data); + _blink.BlinkRTCDataChannel.send_Callback_1(this, data); return; } if ((data is TypedData || data == null)) { - _blink.BlinkRTCDataChannel.send_Callback_ArrayBufferView(this, data); + _blink.BlinkRTCDataChannel.send_Callback_1(this, data); return; } if ((data is ByteBuffer || data == null)) { - _blink.BlinkRTCDataChannel.send_Callback_ArrayBuffer(this, data); + _blink.BlinkRTCDataChannel.send_Callback_1(this, data); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -26350,19 +26495,19 @@ class RtcDataChannel extends EventTarget { @DomName('RTCDataChannel.sendBlob') @DocsEditable() - void sendBlob(Blob data) => _blink.BlinkRTCDataChannel.send_Callback_Blob(this, data); + void sendBlob(Blob data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data); @DomName('RTCDataChannel.sendByteBuffer') @DocsEditable() - void sendByteBuffer(ByteBuffer data) => _blink.BlinkRTCDataChannel.send_Callback_ArrayBuffer(this, data); + void sendByteBuffer(ByteBuffer data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data); @DomName('RTCDataChannel.sendString') @DocsEditable() - void sendString(String data) => _blink.BlinkRTCDataChannel.send_Callback_DOMString(this, data); + void sendString(String data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data); @DomName('RTCDataChannel.sendTypedData') @DocsEditable() - void sendTypedData(TypedData data) => _blink.BlinkRTCDataChannel.send_Callback_ArrayBufferView(this, data); + void sendTypedData(TypedData data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data); /// Stream of `close` events handled by this [RtcDataChannel]. @DomName('RTCDataChannel.onclose') @@ -26452,14 +26597,14 @@ class RtcDtmfSender extends EventTarget { void insertDtmf(String tones, [int duration, int interToneGap]) { if (interToneGap != null) { - _blink.BlinkRTCDTMFSender.insertDTMF_Callback_DOMString_long_long(this, tones, duration, interToneGap); + _blink.BlinkRTCDTMFSender.insertDTMF_Callback_3(this, tones, duration, interToneGap); return; } if (duration != null) { - _blink.BlinkRTCDTMFSender.insertDTMF_Callback_DOMString_long(this, tones, duration); + _blink.BlinkRTCDTMFSender.insertDTMF_Callback_2(this, tones, duration); return; } - _blink.BlinkRTCDTMFSender.insertDTMF_Callback_DOMString(this, tones); + _blink.BlinkRTCDTMFSender.insertDTMF_Callback_1(this, tones); return; } @@ -26508,7 +26653,7 @@ class RtcIceCandidate extends NativeFieldWrapperClass2 { @DomName('RTCIceCandidate.RTCIceCandidate') @DocsEditable() factory RtcIceCandidate(Map dictionary) { - return _blink.BlinkRTCIceCandidate.constructorCallback_Dictionary(dictionary); + return _blink.BlinkRTCIceCandidate.constructorCallback_1(dictionary); } @DomName('RTCIceCandidate.candidate') @@ -26517,7 +26662,7 @@ class RtcIceCandidate extends NativeFieldWrapperClass2 { @DomName('RTCIceCandidate.candidate') @DocsEditable() - void set candidate(String value) => _blink.BlinkRTCIceCandidate.candidate_Setter_DOMString(this, value); + void set candidate(String value) => _blink.BlinkRTCIceCandidate.candidate_Setter(this, value); @DomName('RTCIceCandidate.sdpMLineIndex') @DocsEditable() @@ -26525,7 +26670,7 @@ class RtcIceCandidate extends NativeFieldWrapperClass2 { @DomName('RTCIceCandidate.sdpMLineIndex') @DocsEditable() - void set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.sdpMLineIndex_Setter_us(this, value); + void set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.sdpMLineIndex_Setter(this, value); @DomName('RTCIceCandidate.sdpMid') @DocsEditable() @@ -26533,7 +26678,7 @@ class RtcIceCandidate extends NativeFieldWrapperClass2 { @DomName('RTCIceCandidate.sdpMid') @DocsEditable() - void set sdpMid(String value) => _blink.BlinkRTCIceCandidate.sdpMid_Setter_DOMString(this, value); + void set sdpMid(String value) => _blink.BlinkRTCIceCandidate.sdpMid_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -26671,9 +26816,9 @@ class RtcPeerConnection extends EventTarget { @DocsEditable() factory RtcPeerConnection(Map rtcConfiguration, [Map mediaConstraints]) { if (mediaConstraints != null) { - return _blink.BlinkRTCPeerConnection.constructorCallback_Dictionary_Dictionary(rtcConfiguration, mediaConstraints); + return _blink.BlinkRTCPeerConnection.constructorCallback_2(rtcConfiguration, mediaConstraints); } - return _blink.BlinkRTCPeerConnection.constructorCallback_Dictionary(rtcConfiguration); + return _blink.BlinkRTCPeerConnection.constructorCallback_1(rtcConfiguration); } @DomName('RTCPeerConnection.iceConnectionState') @@ -26698,31 +26843,49 @@ class RtcPeerConnection extends EventTarget { @DomName('RTCPeerConnection.addIceCandidate') @DocsEditable() - void addIceCandidate(RtcIceCandidate candidate, VoidCallback successCallback, _RtcErrorCallback failureCallback) => _blink.BlinkRTCPeerConnection.addIceCandidate_Callback_RTCIceCandidate_VoidCallback_RTCErrorCallback(this, candidate, successCallback, failureCallback); + void addIceCandidate(RtcIceCandidate candidate, VoidCallback successCallback, _RtcErrorCallback failureCallback) => _blink.BlinkRTCPeerConnection.addIceCandidate_Callback_3(this, candidate, successCallback, failureCallback); - @DomName('RTCPeerConnection.addStream') - @DocsEditable() - void addStream(MediaStream stream, [Map mediaConstraints]) => _blink.BlinkRTCPeerConnection.addStream_Callback_MediaStream_Dictionary(this, stream, mediaConstraints); + void addStream(MediaStream stream, [Map mediaConstraints]) { + if (mediaConstraints != null) { + _blink.BlinkRTCPeerConnection.addStream_Callback_2(this, stream, mediaConstraints); + return; + } + _blink.BlinkRTCPeerConnection.addStream_Callback_1(this, stream); + return; + } @DomName('RTCPeerConnection.close') @DocsEditable() void close() => _blink.BlinkRTCPeerConnection.close_Callback(this); - @DomName('RTCPeerConnection.createAnswer') - @DocsEditable() - void _createAnswer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) => _blink.BlinkRTCPeerConnection.createAnswer_Callback_RTCSessionDescriptionCallback_RTCErrorCallback_Dictionary(this, successCallback, failureCallback, mediaConstraints); + void _createAnswer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) { + if (mediaConstraints != null) { + _blink.BlinkRTCPeerConnection.createAnswer_Callback_3(this, successCallback, failureCallback, mediaConstraints); + return; + } + _blink.BlinkRTCPeerConnection.createAnswer_Callback_2(this, successCallback, failureCallback); + return; + } @DomName('RTCPeerConnection.createDTMFSender') @DocsEditable() - RtcDtmfSender createDtmfSender(MediaStreamTrack track) => _blink.BlinkRTCPeerConnection.createDTMFSender_Callback_MediaStreamTrack(this, track); + RtcDtmfSender createDtmfSender(MediaStreamTrack track) => _blink.BlinkRTCPeerConnection.createDTMFSender_Callback_1(this, track); - @DomName('RTCPeerConnection.createDataChannel') - @DocsEditable() - RtcDataChannel createDataChannel(String label, [Map options]) => _blink.BlinkRTCPeerConnection.createDataChannel_Callback_DOMString_Dictionary(this, label, options); + RtcDataChannel createDataChannel(String label, [Map options]) { + if (options != null) { + return _blink.BlinkRTCPeerConnection.createDataChannel_Callback_2(this, label, options); + } + return _blink.BlinkRTCPeerConnection.createDataChannel_Callback_1(this, label); + } - @DomName('RTCPeerConnection.createOffer') - @DocsEditable() - void _createOffer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map rtcOfferOptions]) => _blink.BlinkRTCPeerConnection.createOffer_Callback_RTCSessionDescriptionCallback_RTCErrorCallback_Dictionary(this, successCallback, failureCallback, rtcOfferOptions); + void _createOffer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map rtcOfferOptions]) { + if (rtcOfferOptions != null) { + _blink.BlinkRTCPeerConnection.createOffer_Callback_3(this, successCallback, failureCallback, rtcOfferOptions); + return; + } + _blink.BlinkRTCPeerConnection.createOffer_Callback_2(this, successCallback, failureCallback); + return; + } @DomName('RTCPeerConnection.getLocalStreams') @DocsEditable() @@ -26734,19 +26897,19 @@ class RtcPeerConnection extends EventTarget { @DomName('RTCPeerConnection.getStats') @DocsEditable() - void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.getStats_Callback_RTCStatsCallback_MediaStreamTrack(this, successCallback, selector); + void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.getStats_Callback_2(this, successCallback, selector); @DomName('RTCPeerConnection.getStreamById') @DocsEditable() - MediaStream getStreamById(String streamId) => _blink.BlinkRTCPeerConnection.getStreamById_Callback_DOMString(this, streamId); + MediaStream getStreamById(String streamId) => _blink.BlinkRTCPeerConnection.getStreamById_Callback_1(this, streamId); @DomName('RTCPeerConnection.removeStream') @DocsEditable() - void removeStream(MediaStream stream) => _blink.BlinkRTCPeerConnection.removeStream_Callback_MediaStream(this, stream); + void removeStream(MediaStream stream) => _blink.BlinkRTCPeerConnection.removeStream_Callback_1(this, stream); @DomName('RTCPeerConnection.setLocalDescription') @DocsEditable() - void _setLocalDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.setLocalDescription_Callback_RTCSessionDescription_VoidCallback_RTCErrorCallback(this, description, successCallback, failureCallback); + void _setLocalDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.setLocalDescription_Callback_3(this, description, successCallback, failureCallback); Future setLocalDescription(RtcSessionDescription description) { var completer = new Completer(); @@ -26758,7 +26921,7 @@ class RtcPeerConnection extends EventTarget { @DomName('RTCPeerConnection.setRemoteDescription') @DocsEditable() - void _setRemoteDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.setRemoteDescription_Callback_RTCSessionDescription_VoidCallback_RTCErrorCallback(this, description, successCallback, failureCallback); + void _setRemoteDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.setRemoteDescription_Callback_3(this, description, successCallback, failureCallback); Future setRemoteDescription(RtcSessionDescription description) { var completer = new Completer(); @@ -26768,9 +26931,18 @@ class RtcPeerConnection extends EventTarget { return completer.future; } - @DomName('RTCPeerConnection.updateIce') - @DocsEditable() - void updateIce([Map configuration, Map mediaConstraints]) => _blink.BlinkRTCPeerConnection.updateIce_Callback_Dictionary_Dictionary(this, configuration, mediaConstraints); + void updateIce([Map configuration, Map mediaConstraints]) { + if (mediaConstraints != null) { + _blink.BlinkRTCPeerConnection.updateIce_Callback_2(this, configuration, mediaConstraints); + return; + } + if (configuration != null) { + _blink.BlinkRTCPeerConnection.updateIce_Callback_1(this, configuration); + return; + } + _blink.BlinkRTCPeerConnection.updateIce_Callback(this); + return; + } /// Stream of `addstream` events handled by this [RtcPeerConnection]. @DomName('RTCPeerConnection.onaddstream') @@ -26828,7 +27000,7 @@ class RtcSessionDescription extends NativeFieldWrapperClass2 { @DocsEditable() factory RtcSessionDescription([Map descriptionInitDict]) { if (descriptionInitDict != null) { - return _blink.BlinkRTCSessionDescription.constructorCallback_Dictionary(descriptionInitDict); + return _blink.BlinkRTCSessionDescription.constructorCallback_1(descriptionInitDict); } return _blink.BlinkRTCSessionDescription.constructorCallback(); } @@ -26839,7 +27011,7 @@ class RtcSessionDescription extends NativeFieldWrapperClass2 { @DomName('RTCSessionDescription.sdp') @DocsEditable() - void set sdp(String value) => _blink.BlinkRTCSessionDescription.sdp_Setter_DOMString(this, value); + void set sdp(String value) => _blink.BlinkRTCSessionDescription.sdp_Setter(this, value); @DomName('RTCSessionDescription.type') @DocsEditable() @@ -26847,7 +27019,7 @@ class RtcSessionDescription extends NativeFieldWrapperClass2 { @DomName('RTCSessionDescription.type') @DocsEditable() - void set type(String value) => _blink.BlinkRTCSessionDescription.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkRTCSessionDescription.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -26891,7 +27063,7 @@ class RtcStatsReport extends NativeFieldWrapperClass2 { @DomName('RTCStatsReport.stat') @DocsEditable() - String stat(String name) => _blink.BlinkRTCStatsReport.stat_Callback_DOMString(this, name); + String stat(String name) => _blink.BlinkRTCStatsReport.stat_Callback_1(this, name); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -26911,11 +27083,11 @@ class RtcStatsResponse extends NativeFieldWrapperClass2 { @DomName('RTCStatsResponse.__getter__') @DocsEditable() - RtcStatsReport __getter__(String name) => _blink.BlinkRTCStatsResponse.$__getter___Callback_DOMString(this, name); + RtcStatsReport __getter__(String name) => _blink.BlinkRTCStatsResponse.$__getter___Callback_1(this, name); @DomName('RTCStatsResponse.namedItem') @DocsEditable() - RtcStatsReport namedItem(String name) => _blink.BlinkRTCStatsResponse.namedItem_Callback_DOMString(this, name); + RtcStatsReport namedItem(String name) => _blink.BlinkRTCStatsResponse.namedItem_Callback_1(this, name); @DomName('RTCStatsResponse.result') @DocsEditable() @@ -27011,7 +27183,7 @@ class ScreenOrientation extends EventTarget { @DomName('ScreenOrientation.lock') @DocsEditable() @Experimental() // untriaged - Future lock(String orientation) => _blink.BlinkScreenOrientation.lock_Callback_DOMString(this, orientation); + Future lock(String orientation) => _blink.BlinkScreenOrientation.lock_Callback_1(this, orientation); @DomName('ScreenOrientation.unlock') @DocsEditable() @@ -27053,7 +27225,7 @@ class ScriptElement extends HtmlElement { @DomName('HTMLScriptElement.async') @DocsEditable() - void set async(bool value) => _blink.BlinkHTMLScriptElement.async_Setter_boolean(this, value); + void set async(bool value) => _blink.BlinkHTMLScriptElement.async_Setter(this, value); @DomName('HTMLScriptElement.charset') @DocsEditable() @@ -27061,7 +27233,7 @@ class ScriptElement extends HtmlElement { @DomName('HTMLScriptElement.charset') @DocsEditable() - void set charset(String value) => _blink.BlinkHTMLScriptElement.charset_Setter_DOMString(this, value); + void set charset(String value) => _blink.BlinkHTMLScriptElement.charset_Setter(this, value); @DomName('HTMLScriptElement.crossOrigin') @DocsEditable() @@ -27073,7 +27245,7 @@ class ScriptElement extends HtmlElement { @DocsEditable() // http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-crossorigin @Experimental() - void set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.crossOrigin_Setter_DOMString(this, value); + void set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.crossOrigin_Setter(this, value); @DomName('HTMLScriptElement.defer') @DocsEditable() @@ -27081,7 +27253,7 @@ class ScriptElement extends HtmlElement { @DomName('HTMLScriptElement.defer') @DocsEditable() - void set defer(bool value) => _blink.BlinkHTMLScriptElement.defer_Setter_boolean(this, value); + void set defer(bool value) => _blink.BlinkHTMLScriptElement.defer_Setter(this, value); @DomName('HTMLScriptElement.integrity') @DocsEditable() @@ -27091,7 +27263,7 @@ class ScriptElement extends HtmlElement { @DomName('HTMLScriptElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLScriptElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLScriptElement.integrity_Setter(this, value); @DomName('HTMLScriptElement.nonce') @DocsEditable() @@ -27103,7 +27275,7 @@ class ScriptElement extends HtmlElement { @DocsEditable() // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#interaction-with-the-script-src-directive @Experimental() - void set nonce(String value) => _blink.BlinkHTMLScriptElement.nonce_Setter_DOMString(this, value); + void set nonce(String value) => _blink.BlinkHTMLScriptElement.nonce_Setter(this, value); @DomName('HTMLScriptElement.src') @DocsEditable() @@ -27111,7 +27283,7 @@ class ScriptElement extends HtmlElement { @DomName('HTMLScriptElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLScriptElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLScriptElement.src_Setter(this, value); @DomName('HTMLScriptElement.type') @DocsEditable() @@ -27119,7 +27291,7 @@ class ScriptElement extends HtmlElement { @DomName('HTMLScriptElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLScriptElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLScriptElement.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -27205,7 +27377,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.autofocus') @DocsEditable() - void set autofocus(bool value) => _blink.BlinkHTMLSelectElement.autofocus_Setter_boolean(this, value); + void set autofocus(bool value) => _blink.BlinkHTMLSelectElement.autofocus_Setter(this, value); @DomName('HTMLSelectElement.disabled') @DocsEditable() @@ -27213,7 +27385,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLSelectElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLSelectElement.disabled_Setter(this, value); @DomName('HTMLSelectElement.form') @DocsEditable() @@ -27230,7 +27402,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.length') @DocsEditable() - void set length(int value) => _blink.BlinkHTMLSelectElement.length_Setter_ul(this, value); + void set length(int value) => _blink.BlinkHTMLSelectElement.length_Setter(this, value); @DomName('HTMLSelectElement.multiple') @DocsEditable() @@ -27238,7 +27410,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.multiple') @DocsEditable() - void set multiple(bool value) => _blink.BlinkHTMLSelectElement.multiple_Setter_boolean(this, value); + void set multiple(bool value) => _blink.BlinkHTMLSelectElement.multiple_Setter(this, value); @DomName('HTMLSelectElement.name') @DocsEditable() @@ -27246,7 +27418,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLSelectElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLSelectElement.name_Setter(this, value); @DomName('HTMLSelectElement.required') @DocsEditable() @@ -27254,7 +27426,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.required') @DocsEditable() - void set required(bool value) => _blink.BlinkHTMLSelectElement.required_Setter_boolean(this, value); + void set required(bool value) => _blink.BlinkHTMLSelectElement.required_Setter(this, value); @DomName('HTMLSelectElement.selectedIndex') @DocsEditable() @@ -27262,7 +27434,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.selectedIndex') @DocsEditable() - void set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.selectedIndex_Setter_long(this, value); + void set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.selectedIndex_Setter(this, value); @DomName('HTMLSelectElement.size') @DocsEditable() @@ -27270,7 +27442,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.size') @DocsEditable() - void set size(int value) => _blink.BlinkHTMLSelectElement.size_Setter_long(this, value); + void set size(int value) => _blink.BlinkHTMLSelectElement.size_Setter(this, value); @DomName('HTMLSelectElement.type') @DocsEditable() @@ -27290,7 +27462,7 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLSelectElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLSelectElement.value_Setter(this, value); @DomName('HTMLSelectElement.willValidate') @DocsEditable() @@ -27298,12 +27470,12 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.__setter__') @DocsEditable() - void __setter__(int index, OptionElement value) => _blink.BlinkHTMLSelectElement.$__setter___Callback_ul_HTMLOptionElement(this, index, value); + void __setter__(int index, OptionElement value) => _blink.BlinkHTMLSelectElement.$__setter___Callback_2(this, index, value); @DomName('HTMLSelectElement.add') @DocsEditable() @Experimental() // untriaged - void add(HtmlElement element, int before) => _blink.BlinkHTMLSelectElement.add_Callback_HTMLElement_long(this, element, before); + void add(HtmlElement element, int before) => _blink.BlinkHTMLSelectElement.add_Callback_2(this, element, before); @DomName('HTMLSelectElement.checkValidity') @DocsEditable() @@ -27311,15 +27483,15 @@ class SelectElement extends HtmlElement { @DomName('HTMLSelectElement.item') @DocsEditable() - Element item(int index) => _blink.BlinkHTMLSelectElement.item_Callback_ul(this, index); + Element item(int index) => _blink.BlinkHTMLSelectElement.item_Callback_1(this, index); @DomName('HTMLSelectElement.namedItem') @DocsEditable() - Element namedItem(String name) => _blink.BlinkHTMLSelectElement.namedItem_Callback_DOMString(this, name); + Element namedItem(String name) => _blink.BlinkHTMLSelectElement.namedItem_Callback_1(this, name); @DomName('HTMLSelectElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLSelectElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLSelectElement.setCustomValidity_Callback_1(this, error); // Override default options, since IE returns SelectElement itself and it @@ -27404,14 +27576,14 @@ class Selection extends NativeFieldWrapperClass2 { @DomName('Selection.addRange') @DocsEditable() - void addRange(Range range) => _blink.BlinkSelection.addRange_Callback_Range(this, range); + void addRange(Range range) => _blink.BlinkSelection.addRange_Callback_1(this, range); void collapse(Node node, [int offset]) { if (offset != null) { - _blink.BlinkSelection.collapse_Callback_Node_long(this, node, offset); + _blink.BlinkSelection.collapse_Callback_2(this, node, offset); return; } - _blink.BlinkSelection.collapse_Callback_Node(this, node); + _blink.BlinkSelection.collapse_Callback_1(this, node); return; } @@ -27426,7 +27598,7 @@ class Selection extends NativeFieldWrapperClass2 { @DomName('Selection.containsNode') @DocsEditable() @Experimental() // non-standard - bool containsNode(Node node, bool allowPartial) => _blink.BlinkSelection.containsNode_Callback_Node_boolean(this, node, allowPartial); + bool containsNode(Node node, bool allowPartial) => _blink.BlinkSelection.containsNode_Callback_2(this, node, allowPartial); @DomName('Selection.deleteFromDocument') @DocsEditable() @@ -27439,21 +27611,21 @@ class Selection extends NativeFieldWrapperClass2 { void extend(Node node, [int offset]) { if (offset != null) { - _blink.BlinkSelection.extend_Callback_Node_long(this, node, offset); + _blink.BlinkSelection.extend_Callback_2(this, node, offset); return; } - _blink.BlinkSelection.extend_Callback_Node(this, node); + _blink.BlinkSelection.extend_Callback_1(this, node); return; } @DomName('Selection.getRangeAt') @DocsEditable() - Range getRangeAt(int index) => _blink.BlinkSelection.getRangeAt_Callback_long(this, index); + Range getRangeAt(int index) => _blink.BlinkSelection.getRangeAt_Callback_1(this, index); @DomName('Selection.modify') @DocsEditable() @Experimental() // non-standard - void modify(String alter, String direction, String granularity) => _blink.BlinkSelection.modify_Callback_DOMString_DOMString_DOMString(this, alter, direction, granularity); + void modify(String alter, String direction, String granularity) => _blink.BlinkSelection.modify_Callback_3(this, alter, direction, granularity); @DomName('Selection.removeAllRanges') @DocsEditable() @@ -27461,19 +27633,19 @@ class Selection extends NativeFieldWrapperClass2 { @DomName('Selection.selectAllChildren') @DocsEditable() - void selectAllChildren(Node node) => _blink.BlinkSelection.selectAllChildren_Callback_Node(this, node); + void selectAllChildren(Node node) => _blink.BlinkSelection.selectAllChildren_Callback_1(this, node); @DomName('Selection.setBaseAndExtent') @DocsEditable() @Experimental() // non-standard - void setBaseAndExtent(Node baseNode, int baseOffset, Node extentNode, int extentOffset) => _blink.BlinkSelection.setBaseAndExtent_Callback_Node_long_Node_long(this, baseNode, baseOffset, extentNode, extentOffset); + void setBaseAndExtent(Node baseNode, int baseOffset, Node extentNode, int extentOffset) => _blink.BlinkSelection.setBaseAndExtent_Callback_4(this, baseNode, baseOffset, extentNode, extentOffset); void setPosition(Node node, [int offset]) { if (offset != null) { - _blink.BlinkSelection.setPosition_Callback_Node_long(this, node, offset); + _blink.BlinkSelection.setPosition_Callback_2(this, node, offset); return; } - _blink.BlinkSelection.setPosition_Callback_Node(this, node); + _blink.BlinkSelection.setPosition_Callback_1(this, node); return; } @@ -27500,7 +27672,7 @@ class ServiceWorkerClient extends NativeFieldWrapperClass2 { @DomName('ServiceWorkerClient.postMessage') @DocsEditable() @Experimental() // untriaged - void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkServiceWorkerClient.postMessage_Callback_SerializedScriptValue_SEQ_MessagePort_SEQ(this, message, transfer); + void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkServiceWorkerClient.postMessage_Callback_2(this, message, transfer); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -27562,14 +27734,16 @@ class ServiceWorkerContainer extends NativeFieldWrapperClass2 { @Experimental() // untriaged _ServiceWorker get waiting => _blink.BlinkServiceWorkerContainer.waiting_Getter(this); - @DomName('ServiceWorkerContainer.register') - @DocsEditable() - @Experimental() // untriaged - Future register(String url, [Map options]) => _blink.BlinkServiceWorkerContainer.register_Callback_DOMString_Dictionary(this, url, options); + Future register(String url, [Map options]) { + if (options != null) { + return _blink.BlinkServiceWorkerContainer.register_Callback_2(this, url, options); + } + return _blink.BlinkServiceWorkerContainer.register_Callback_1(this, url); + } Future unregister([String scope]) { if (scope != null) { - return _blink.BlinkServiceWorkerContainer.unregister_Callback_DOMString(this, scope); + return _blink.BlinkServiceWorkerContainer.unregister_Callback_1(this, scope); } return _blink.BlinkServiceWorkerContainer.unregister_Callback(this); } @@ -27610,11 +27784,17 @@ class ServiceWorkerGlobalScope extends WorkerGlobalScope { String get scope => _blink.BlinkServiceWorkerGlobalScope.scope_Getter(this); Future _fetch(request, [Map requestInitDict]) { + if ((request is String || request == null) && requestInitDict == null) { + return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_1(this, request); + } if ((requestInitDict is Map || requestInitDict == null) && (request is String || request == null)) { - return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_DOMString_Dictionary(this, request, requestInitDict); + return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_2(this, request, requestInitDict); + } + if ((request is _Request || request == null) && requestInitDict == null) { + return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_1(this, request); } - if ((requestInitDict is Map || requestInitDict == null) && (request is Request || request == null)) { - return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_Request_Dictionary(this, request, requestInitDict); + if ((requestInitDict is Map || requestInitDict == null) && (request is _Request || request == null)) { + return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_2(this, request, requestInitDict); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -27730,7 +27910,7 @@ class ShadowRoot extends DocumentFragment { @DomName('ShadowRoot.innerHTML') @DocsEditable() - void set innerHtml(String value) => _blink.BlinkShadowRoot.innerHTML_Setter_DOMString(this, value); + void set innerHtml(String value) => _blink.BlinkShadowRoot.innerHTML_Setter(this, value); @DomName('ShadowRoot.olderShadowRoot') @DocsEditable() @@ -27744,23 +27924,23 @@ class ShadowRoot extends DocumentFragment { @DomName('ShadowRoot.cloneNode') @DocsEditable() - Node clone(bool deep) => _blink.BlinkShadowRoot.cloneNode_Callback_boolean(this, deep); + Node clone(bool deep) => _blink.BlinkShadowRoot.cloneNode_Callback_1(this, deep); @DomName('ShadowRoot.elementFromPoint') @DocsEditable() - Element elementFromPoint(int x, int y) => _blink.BlinkShadowRoot.elementFromPoint_Callback_long_long(this, x, y); + Element elementFromPoint(int x, int y) => _blink.BlinkShadowRoot.elementFromPoint_Callback_2(this, x, y); @DomName('ShadowRoot.getElementById') @DocsEditable() - Element getElementById(String elementId) => _blink.BlinkShadowRoot.getElementById_Callback_DOMString(this, elementId); + Element getElementById(String elementId) => _blink.BlinkShadowRoot.getElementById_Callback_1(this, elementId); @DomName('ShadowRoot.getElementsByClassName') @DocsEditable() - List getElementsByClassName(String className) => _blink.BlinkShadowRoot.getElementsByClassName_Callback_DOMString(this, className); + List getElementsByClassName(String className) => _blink.BlinkShadowRoot.getElementsByClassName_Callback_1(this, className); @DomName('ShadowRoot.getElementsByTagName') @DocsEditable() - List getElementsByTagName(String tagName) => _blink.BlinkShadowRoot.getElementsByTagName_Callback_DOMString(this, tagName); + List getElementsByTagName(String tagName) => _blink.BlinkShadowRoot.getElementsByTagName_Callback_1(this, tagName); @DomName('ShadowRoot.getSelection') @DocsEditable() @@ -27826,7 +28006,7 @@ class SharedWorker extends EventTarget implements AbstractWorker { @DomName('SharedWorker.SharedWorker') @DocsEditable() factory SharedWorker(String scriptURL, [String name]) { - return _blink.BlinkSharedWorker.constructorCallback_DOMString_DOMString(scriptURL, name); + return _blink.BlinkSharedWorker.constructorCallback_2(scriptURL, name); } @DomName('SharedWorker.port') @@ -27904,7 +28084,7 @@ class SourceBuffer extends EventTarget { @DomName('SourceBuffer.appendWindowEnd') @DocsEditable() @Experimental() // untriaged - void set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.appendWindowEnd_Setter_double(this, value); + void set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.appendWindowEnd_Setter(this, value); @DomName('SourceBuffer.appendWindowStart') @DocsEditable() @@ -27914,7 +28094,7 @@ class SourceBuffer extends EventTarget { @DomName('SourceBuffer.appendWindowStart') @DocsEditable() @Experimental() // untriaged - void set appendWindowStart(num value) => _blink.BlinkSourceBuffer.appendWindowStart_Setter_double(this, value); + void set appendWindowStart(num value) => _blink.BlinkSourceBuffer.appendWindowStart_Setter(this, value); @DomName('SourceBuffer.buffered') @DocsEditable() @@ -27928,7 +28108,7 @@ class SourceBuffer extends EventTarget { @DomName('SourceBuffer.mode') @DocsEditable() @Experimental() // untriaged - void set mode(String value) => _blink.BlinkSourceBuffer.mode_Setter_DOMString(this, value); + void set mode(String value) => _blink.BlinkSourceBuffer.mode_Setter(this, value); @DomName('SourceBuffer.timestampOffset') @DocsEditable() @@ -27936,7 +28116,7 @@ class SourceBuffer extends EventTarget { @DomName('SourceBuffer.timestampOffset') @DocsEditable() - void set timestampOffset(num value) => _blink.BlinkSourceBuffer.timestampOffset_Setter_double(this, value); + void set timestampOffset(num value) => _blink.BlinkSourceBuffer.timestampOffset_Setter(this, value); @DomName('SourceBuffer.updating') @DocsEditable() @@ -27950,26 +28130,26 @@ class SourceBuffer extends EventTarget { @DomName('SourceBuffer.appendBuffer') @DocsEditable() @Experimental() // untriaged - void appendBuffer(ByteBuffer data) => _blink.BlinkSourceBuffer.appendBuffer_Callback_ArrayBuffer(this, data); + void appendBuffer(ByteBuffer data) => _blink.BlinkSourceBuffer.appendBuffer_Callback_1(this, data); void appendStream(FileStream stream, [int maxSize]) { if (maxSize != null) { - _blink.BlinkSourceBuffer.appendStream_Callback_Stream_ull(this, stream, maxSize); + _blink.BlinkSourceBuffer.appendStream_Callback_2(this, stream, maxSize); return; } - _blink.BlinkSourceBuffer.appendStream_Callback_Stream(this, stream); + _blink.BlinkSourceBuffer.appendStream_Callback_1(this, stream); return; } @DomName('SourceBuffer.appendTypedData') @DocsEditable() @Experimental() // untriaged - void appendTypedData(TypedData data) => _blink.BlinkSourceBuffer.appendBuffer_Callback_ArrayBufferView(this, data); + void appendTypedData(TypedData data) => _blink.BlinkSourceBuffer.appendBuffer_Callback_1(this, data); @DomName('SourceBuffer.remove') @DocsEditable() @Experimental() // untriaged - void remove(num start, num end) => _blink.BlinkSourceBuffer.remove_Callback_double_double(this, start, end); + void remove(num start, num end) => _blink.BlinkSourceBuffer.remove_Callback_2(this, start, end); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -27994,10 +28174,10 @@ class SourceBufferList extends EventTarget with ListMixin, Immutab SourceBuffer operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkSourceBufferList.item_Callback_ul(this, index); + return _blink.BlinkSourceBufferList.item_Callback_1(this, index); } - SourceBuffer _nativeIndexedGetter(int index) => _blink.BlinkSourceBufferList.item_Callback_ul(this, index); + SourceBuffer _nativeIndexedGetter(int index) => _blink.BlinkSourceBufferList.item_Callback_1(this, index); void operator[]=(int index, SourceBuffer value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -28039,7 +28219,7 @@ class SourceBufferList extends EventTarget with ListMixin, Immutab @DomName('SourceBufferList.item') @DocsEditable() - SourceBuffer item(int index) => _blink.BlinkSourceBufferList.item_Callback_ul(this, index); + SourceBuffer item(int index) => _blink.BlinkSourceBufferList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -28073,7 +28253,7 @@ class SourceElement extends HtmlElement { @DomName('HTMLSourceElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLSourceElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLSourceElement.integrity_Setter(this, value); @DomName('HTMLSourceElement.media') @DocsEditable() @@ -28081,7 +28261,7 @@ class SourceElement extends HtmlElement { @DomName('HTMLSourceElement.media') @DocsEditable() - void set media(String value) => _blink.BlinkHTMLSourceElement.media_Setter_DOMString(this, value); + void set media(String value) => _blink.BlinkHTMLSourceElement.media_Setter(this, value); @DomName('HTMLSourceElement.sizes') @DocsEditable() @@ -28091,7 +28271,7 @@ class SourceElement extends HtmlElement { @DomName('HTMLSourceElement.sizes') @DocsEditable() @Experimental() // untriaged - void set sizes(String value) => _blink.BlinkHTMLSourceElement.sizes_Setter_DOMString(this, value); + void set sizes(String value) => _blink.BlinkHTMLSourceElement.sizes_Setter(this, value); @DomName('HTMLSourceElement.src') @DocsEditable() @@ -28099,7 +28279,7 @@ class SourceElement extends HtmlElement { @DomName('HTMLSourceElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLSourceElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLSourceElement.src_Setter(this, value); @DomName('HTMLSourceElement.srcset') @DocsEditable() @@ -28109,7 +28289,7 @@ class SourceElement extends HtmlElement { @DomName('HTMLSourceElement.srcset') @DocsEditable() @Experimental() // untriaged - void set srcset(String value) => _blink.BlinkHTMLSourceElement.srcset_Setter_DOMString(this, value); + void set srcset(String value) => _blink.BlinkHTMLSourceElement.srcset_Setter(this, value); @DomName('HTMLSourceElement.type') @DocsEditable() @@ -28117,7 +28297,7 @@ class SourceElement extends HtmlElement { @DomName('HTMLSourceElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLSourceElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLSourceElement.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -28206,7 +28386,7 @@ class SpeechGrammar extends NativeFieldWrapperClass2 { @DomName('SpeechGrammar.src') @DocsEditable() - void set src(String value) => _blink.BlinkSpeechGrammar.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkSpeechGrammar.src_Setter(this, value); @DomName('SpeechGrammar.weight') @DocsEditable() @@ -28214,7 +28394,7 @@ class SpeechGrammar extends NativeFieldWrapperClass2 { @DomName('SpeechGrammar.weight') @DocsEditable() - void set weight(num value) => _blink.BlinkSpeechGrammar.weight_Setter_float(this, value); + void set weight(num value) => _blink.BlinkSpeechGrammar.weight_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -28245,10 +28425,10 @@ class SpeechGrammarList extends NativeFieldWrapperClass2 with ListMixin= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkSpeechGrammarList.item_Callback_ul(this, index); + return _blink.BlinkSpeechGrammarList.item_Callback_1(this, index); } - SpeechGrammar _nativeIndexedGetter(int index) => _blink.BlinkSpeechGrammarList.item_Callback_ul(this, index); + SpeechGrammar _nativeIndexedGetter(int index) => _blink.BlinkSpeechGrammarList.item_Callback_1(this, index); void operator[]=(int index, SpeechGrammar value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -28290,25 +28470,25 @@ class SpeechGrammarList extends NativeFieldWrapperClass2 with ListMixin _blink.BlinkSpeechGrammarList.item_Callback_ul(this, index); + SpeechGrammar item(int index) => _blink.BlinkSpeechGrammarList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -28452,7 +28632,7 @@ class SpeechRecognition extends EventTarget { @DomName('SpeechRecognition.continuous') @DocsEditable() - void set continuous(bool value) => _blink.BlinkSpeechRecognition.continuous_Setter_boolean(this, value); + void set continuous(bool value) => _blink.BlinkSpeechRecognition.continuous_Setter(this, value); @DomName('SpeechRecognition.grammars') @DocsEditable() @@ -28460,7 +28640,7 @@ class SpeechRecognition extends EventTarget { @DomName('SpeechRecognition.grammars') @DocsEditable() - void set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.grammars_Setter_SpeechGrammarList(this, value); + void set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.grammars_Setter(this, value); @DomName('SpeechRecognition.interimResults') @DocsEditable() @@ -28468,7 +28648,7 @@ class SpeechRecognition extends EventTarget { @DomName('SpeechRecognition.interimResults') @DocsEditable() - void set interimResults(bool value) => _blink.BlinkSpeechRecognition.interimResults_Setter_boolean(this, value); + void set interimResults(bool value) => _blink.BlinkSpeechRecognition.interimResults_Setter(this, value); @DomName('SpeechRecognition.lang') @DocsEditable() @@ -28476,7 +28656,7 @@ class SpeechRecognition extends EventTarget { @DomName('SpeechRecognition.lang') @DocsEditable() - void set lang(String value) => _blink.BlinkSpeechRecognition.lang_Setter_DOMString(this, value); + void set lang(String value) => _blink.BlinkSpeechRecognition.lang_Setter(this, value); @DomName('SpeechRecognition.maxAlternatives') @DocsEditable() @@ -28484,7 +28664,7 @@ class SpeechRecognition extends EventTarget { @DomName('SpeechRecognition.maxAlternatives') @DocsEditable() - void set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.maxAlternatives_Setter_ul(this, value); + void set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.maxAlternatives_Setter(this, value); @DomName('SpeechRecognition.abort') @DocsEditable() @@ -28663,7 +28843,7 @@ class SpeechRecognitionResult extends NativeFieldWrapperClass2 { @DomName('SpeechRecognitionResult.item') @DocsEditable() - SpeechRecognitionAlternative item(int index) => _blink.BlinkSpeechRecognitionResult.item_Callback_ul(this, index); + SpeechRecognitionAlternative item(int index) => _blink.BlinkSpeechRecognitionResult.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -28711,7 +28891,7 @@ class SpeechSynthesis extends EventTarget { @DomName('SpeechSynthesis.speak') @DocsEditable() - void speak(SpeechSynthesisUtterance utterance) => _blink.BlinkSpeechSynthesis.speak_Callback_SpeechSynthesisUtterance(this, utterance); + void speak(SpeechSynthesisUtterance utterance) => _blink.BlinkSpeechSynthesis.speak_Callback_1(this, utterance); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -28830,7 +29010,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.SpeechSynthesisUtterance') @DocsEditable() factory SpeechSynthesisUtterance([String text]) { - return _blink.BlinkSpeechSynthesisUtterance.constructorCallback_DOMString(text); + return _blink.BlinkSpeechSynthesisUtterance.constructorCallback_1(text); } @DomName('SpeechSynthesisUtterance.lang') @@ -28839,7 +29019,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.lang') @DocsEditable() - void set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.lang_Setter_DOMString(this, value); + void set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.lang_Setter(this, value); @DomName('SpeechSynthesisUtterance.pitch') @DocsEditable() @@ -28847,7 +29027,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.pitch') @DocsEditable() - void set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.pitch_Setter_float(this, value); + void set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.pitch_Setter(this, value); @DomName('SpeechSynthesisUtterance.rate') @DocsEditable() @@ -28855,7 +29035,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.rate') @DocsEditable() - void set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.rate_Setter_float(this, value); + void set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.rate_Setter(this, value); @DomName('SpeechSynthesisUtterance.text') @DocsEditable() @@ -28863,7 +29043,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.text') @DocsEditable() - void set text(String value) => _blink.BlinkSpeechSynthesisUtterance.text_Setter_DOMString(this, value); + void set text(String value) => _blink.BlinkSpeechSynthesisUtterance.text_Setter(this, value); @DomName('SpeechSynthesisUtterance.voice') @DocsEditable() @@ -28871,7 +29051,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.voice') @DocsEditable() - void set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.voice_Setter_SpeechSynthesisVoice(this, value); + void set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.voice_Setter(this, value); @DomName('SpeechSynthesisUtterance.volume') @DocsEditable() @@ -28879,7 +29059,7 @@ class SpeechSynthesisUtterance extends EventTarget { @DomName('SpeechSynthesisUtterance.volume') @DocsEditable() - void set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.volume_Setter_float(this, value); + void set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.volume_Setter(this, value); /// Stream of `boundary` events handled by this [SpeechSynthesisUtterance]. @DomName('SpeechSynthesisUtterance.onboundary') @@ -29049,31 +29229,31 @@ class Storage extends NativeFieldWrapperClass2 bool __delete__(index_OR_name) { if ((index_OR_name is int || index_OR_name == null)) { - return _blink.BlinkStorage.$__delete___Callback_ul(this, index_OR_name); + return _blink.BlinkStorage.$__delete___Callback_1(this, index_OR_name); } if ((index_OR_name is String || index_OR_name == null)) { - return _blink.BlinkStorage.$__delete___Callback_DOMString(this, index_OR_name); + return _blink.BlinkStorage.$__delete___Callback_1(this, index_OR_name); } throw new ArgumentError("Incorrect number or type of arguments"); } String __getter__(index_OR_name) { if ((index_OR_name is int || index_OR_name == null)) { - return _blink.BlinkStorage.$__getter___Callback_ul(this, index_OR_name); + return _blink.BlinkStorage.$__getter___Callback_1(this, index_OR_name); } if ((index_OR_name is String || index_OR_name == null)) { - return _blink.BlinkStorage.$__getter___Callback_DOMString(this, index_OR_name); + return _blink.BlinkStorage.$__getter___Callback_1(this, index_OR_name); } throw new ArgumentError("Incorrect number or type of arguments"); } void __setter__(index_OR_name, String value) { if ((value is String || value == null) && (index_OR_name is int || index_OR_name == null)) { - _blink.BlinkStorage.$__setter___Callback_ul_DOMString(this, index_OR_name, value); + _blink.BlinkStorage.$__setter___Callback_2(this, index_OR_name, value); return; } if ((value is String || value == null) && (index_OR_name is String || index_OR_name == null)) { - _blink.BlinkStorage.$__setter___Callback_DOMString_DOMString(this, index_OR_name, value); + _blink.BlinkStorage.$__setter___Callback_2(this, index_OR_name, value); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -29085,19 +29265,19 @@ class Storage extends NativeFieldWrapperClass2 @DomName('Storage.getItem') @DocsEditable() - String _getItem(String key) => _blink.BlinkStorage.getItem_Callback_DOMString(this, key); + String _getItem(String key) => _blink.BlinkStorage.getItem_Callback_1(this, key); @DomName('Storage.key') @DocsEditable() - String _key(int index) => _blink.BlinkStorage.key_Callback_ul(this, index); + String _key(int index) => _blink.BlinkStorage.key_Callback_1(this, index); @DomName('Storage.removeItem') @DocsEditable() - void _removeItem(String key) => _blink.BlinkStorage.removeItem_Callback_DOMString(this, key); + void _removeItem(String key) => _blink.BlinkStorage.removeItem_Callback_1(this, key); @DomName('Storage.setItem') @DocsEditable() - void _setItem(String key, String data) => _blink.BlinkStorage.setItem_Callback_DOMString_DOMString(this, key, data); + void _setItem(String key, String data) => _blink.BlinkStorage.setItem_Callback_2(this, key, data); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29155,7 +29335,7 @@ class StorageEvent extends Event { @DomName('StorageEvent.initStorageEvent') @DocsEditable() - void _initStorageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, String keyArg, String oldValueArg, String newValueArg, String urlArg, Storage storageAreaArg) => _blink.BlinkStorageEvent.initStorageEvent_Callback_DOMString_boolean_boolean_DOMString_DOMString_DOMString_DOMString_Storage(this, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg); + void _initStorageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, String keyArg, String oldValueArg, String newValueArg, String urlArg, Storage storageAreaArg) => _blink.BlinkStorageEvent.initStorageEvent_Callback_8(this, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29207,12 +29387,12 @@ class StorageQuota extends NativeFieldWrapperClass2 { @DomName('StorageQuota.queryInfo') @DocsEditable() @Experimental() // untriaged - Future queryInfo(String type) => _blink.BlinkStorageQuota.queryInfo_Callback_DOMString(this, type); + Future queryInfo(String type) => _blink.BlinkStorageQuota.queryInfo_Callback_1(this, type); @DomName('StorageQuota.requestPersistentQuota') @DocsEditable() @Experimental() // untriaged - Future requestPersistentQuota(int newQuota) => _blink.BlinkStorageQuota.requestPersistentQuota_Callback_ull(this, newQuota); + Future requestPersistentQuota(int newQuota) => _blink.BlinkStorageQuota.requestPersistentQuota_Callback_1(this, newQuota); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29277,7 +29457,7 @@ class StyleElement extends HtmlElement { @DomName('HTMLStyleElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLStyleElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLStyleElement.disabled_Setter(this, value); @DomName('HTMLStyleElement.media') @DocsEditable() @@ -29285,7 +29465,7 @@ class StyleElement extends HtmlElement { @DomName('HTMLStyleElement.media') @DocsEditable() - void set media(String value) => _blink.BlinkHTMLStyleElement.media_Setter_DOMString(this, value); + void set media(String value) => _blink.BlinkHTMLStyleElement.media_Setter(this, value); @DomName('HTMLStyleElement.sheet') @DocsEditable() @@ -29297,7 +29477,7 @@ class StyleElement extends HtmlElement { @DomName('HTMLStyleElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkHTMLStyleElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkHTMLStyleElement.type_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29321,7 +29501,7 @@ class StyleMedia extends NativeFieldWrapperClass2 { @DomName('StyleMedia.matchMedium') @DocsEditable() - bool matchMedium(String mediaquery) => _blink.BlinkStyleMedia.matchMedium_Callback_DOMString(this, mediaquery); + bool matchMedium(String mediaquery) => _blink.BlinkStyleMedia.matchMedium_Callback_1(this, mediaquery); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29343,7 +29523,7 @@ class StyleSheet extends NativeFieldWrapperClass2 { @DomName('StyleSheet.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkStyleSheet.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkStyleSheet.disabled_Setter(this, value); @DomName('StyleSheet.href') @DocsEditable() @@ -29427,7 +29607,7 @@ class TableCellElement extends HtmlElement { @DomName('HTMLTableCellElement.colSpan') @DocsEditable() - void set colSpan(int value) => _blink.BlinkHTMLTableCellElement.colSpan_Setter_long(this, value); + void set colSpan(int value) => _blink.BlinkHTMLTableCellElement.colSpan_Setter(this, value); @DomName('HTMLTableCellElement.headers') @DocsEditable() @@ -29435,7 +29615,7 @@ class TableCellElement extends HtmlElement { @DomName('HTMLTableCellElement.headers') @DocsEditable() - void set headers(String value) => _blink.BlinkHTMLTableCellElement.headers_Setter_DOMString(this, value); + void set headers(String value) => _blink.BlinkHTMLTableCellElement.headers_Setter(this, value); @DomName('HTMLTableCellElement.rowSpan') @DocsEditable() @@ -29443,7 +29623,7 @@ class TableCellElement extends HtmlElement { @DomName('HTMLTableCellElement.rowSpan') @DocsEditable() - void set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.rowSpan_Setter_long(this, value); + void set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.rowSpan_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29475,7 +29655,7 @@ class TableColElement extends HtmlElement { @DomName('HTMLTableColElement.span') @DocsEditable() - void set span(int value) => _blink.BlinkHTMLTableColElement.span_Setter_long(this, value); + void set span(int value) => _blink.BlinkHTMLTableColElement.span_Setter(this, value); } // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file @@ -29525,7 +29705,7 @@ class TableElement extends HtmlElement { @DomName('HTMLTableElement.caption') @DocsEditable() - void set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.caption_Setter_HTMLTableCaptionElement(this, value); + void set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.caption_Setter(this, value); @DomName('HTMLTableElement.rows') @DocsEditable() @@ -29541,7 +29721,7 @@ class TableElement extends HtmlElement { @DomName('HTMLTableElement.tFoot') @DocsEditable() - void set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.tFoot_Setter_HTMLTableSectionElement(this, value); + void set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.tFoot_Setter(this, value); @DomName('HTMLTableElement.tHead') @DocsEditable() @@ -29549,7 +29729,7 @@ class TableElement extends HtmlElement { @DomName('HTMLTableElement.tHead') @DocsEditable() - void set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.tHead_Setter_HTMLTableSectionElement(this, value); + void set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.tHead_Setter(this, value); @DomName('HTMLTableElement.createCaption') @DocsEditable() @@ -29573,7 +29753,7 @@ class TableElement extends HtmlElement { @DomName('HTMLTableElement.deleteRow') @DocsEditable() - void deleteRow(int index) => _blink.BlinkHTMLTableElement.deleteRow_Callback_long(this, index); + void deleteRow(int index) => _blink.BlinkHTMLTableElement.deleteRow_Callback_1(this, index); @DomName('HTMLTableElement.deleteTFoot') @DocsEditable() @@ -29585,7 +29765,7 @@ class TableElement extends HtmlElement { HtmlElement _insertRow([int index]) { if (index != null) { - return _blink.BlinkHTMLTableElement.insertRow_Callback_long(this, index); + return _blink.BlinkHTMLTableElement.insertRow_Callback_1(this, index); } return _blink.BlinkHTMLTableElement.insertRow_Callback(this); } @@ -29637,11 +29817,11 @@ class TableRowElement extends HtmlElement { @DomName('HTMLTableRowElement.deleteCell') @DocsEditable() - void deleteCell(int index) => _blink.BlinkHTMLTableRowElement.deleteCell_Callback_long(this, index); + void deleteCell(int index) => _blink.BlinkHTMLTableRowElement.deleteCell_Callback_1(this, index); HtmlElement _insertCell([int index]) { if (index != null) { - return _blink.BlinkHTMLTableRowElement.insertCell_Callback_long(this, index); + return _blink.BlinkHTMLTableRowElement.insertCell_Callback_1(this, index); } return _blink.BlinkHTMLTableRowElement.insertCell_Callback(this); } @@ -29681,11 +29861,11 @@ class TableSectionElement extends HtmlElement { @DomName('HTMLTableSectionElement.deleteRow') @DocsEditable() - void deleteRow(int index) => _blink.BlinkHTMLTableSectionElement.deleteRow_Callback_long(this, index); + void deleteRow(int index) => _blink.BlinkHTMLTableSectionElement.deleteRow_Callback_1(this, index); HtmlElement _insertRow([int index]) { if (index != null) { - return _blink.BlinkHTMLTableSectionElement.insertRow_Callback_long(this, index); + return _blink.BlinkHTMLTableSectionElement.insertRow_Callback_1(this, index); } return _blink.BlinkHTMLTableSectionElement.insertRow_Callback(this); } @@ -29764,7 +29944,7 @@ class Text extends CharacterData { @DomName('Text.splitText') @DocsEditable() - Text splitText(int offset) => _blink.BlinkText.splitText_Callback_ul(this, offset); + Text splitText(int offset) => _blink.BlinkText.splitText_Callback_1(this, offset); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -29796,7 +29976,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.autofocus') @DocsEditable() - void set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.autofocus_Setter_boolean(this, value); + void set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.autofocus_Setter(this, value); @DomName('HTMLTextAreaElement.cols') @DocsEditable() @@ -29804,7 +29984,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.cols') @DocsEditable() - void set cols(int value) => _blink.BlinkHTMLTextAreaElement.cols_Setter_long(this, value); + void set cols(int value) => _blink.BlinkHTMLTextAreaElement.cols_Setter(this, value); @DomName('HTMLTextAreaElement.defaultValue') @DocsEditable() @@ -29812,7 +29992,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.defaultValue') @DocsEditable() - void set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.defaultValue_Setter_DOMString(this, value); + void set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.defaultValue_Setter(this, value); @DomName('HTMLTextAreaElement.dirName') @DocsEditable() @@ -29824,7 +30004,7 @@ class TextAreaElement extends HtmlElement { @DocsEditable() // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-textarea-dirname @Experimental() - void set dirName(String value) => _blink.BlinkHTMLTextAreaElement.dirName_Setter_DOMString(this, value); + void set dirName(String value) => _blink.BlinkHTMLTextAreaElement.dirName_Setter(this, value); @DomName('HTMLTextAreaElement.disabled') @DocsEditable() @@ -29832,7 +30012,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.disabled_Setter(this, value); @DomName('HTMLTextAreaElement.form') @DocsEditable() @@ -29846,7 +30026,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.inputMode') @DocsEditable() @Experimental() // untriaged - void set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.inputMode_Setter_DOMString(this, value); + void set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.inputMode_Setter(this, value); @DomName('HTMLTextAreaElement.labels') @DocsEditable() @@ -29859,7 +30039,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.maxLength') @DocsEditable() - void set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.maxLength_Setter_long(this, value); + void set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.maxLength_Setter(this, value); @DomName('HTMLTextAreaElement.name') @DocsEditable() @@ -29867,7 +30047,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.name') @DocsEditable() - void set name(String value) => _blink.BlinkHTMLTextAreaElement.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkHTMLTextAreaElement.name_Setter(this, value); @DomName('HTMLTextAreaElement.placeholder') @DocsEditable() @@ -29875,7 +30055,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.placeholder') @DocsEditable() - void set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.placeholder_Setter_DOMString(this, value); + void set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.placeholder_Setter(this, value); @DomName('HTMLTextAreaElement.readOnly') @DocsEditable() @@ -29883,7 +30063,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.readOnly') @DocsEditable() - void set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.readOnly_Setter_boolean(this, value); + void set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.readOnly_Setter(this, value); @DomName('HTMLTextAreaElement.required') @DocsEditable() @@ -29891,7 +30071,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.required') @DocsEditable() - void set required(bool value) => _blink.BlinkHTMLTextAreaElement.required_Setter_boolean(this, value); + void set required(bool value) => _blink.BlinkHTMLTextAreaElement.required_Setter(this, value); @DomName('HTMLTextAreaElement.rows') @DocsEditable() @@ -29899,7 +30079,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.rows') @DocsEditable() - void set rows(int value) => _blink.BlinkHTMLTextAreaElement.rows_Setter_long(this, value); + void set rows(int value) => _blink.BlinkHTMLTextAreaElement.rows_Setter(this, value); @DomName('HTMLTextAreaElement.selectionDirection') @DocsEditable() @@ -29907,7 +30087,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.selectionDirection') @DocsEditable() - void set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.selectionDirection_Setter_DOMString(this, value); + void set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.selectionDirection_Setter(this, value); @DomName('HTMLTextAreaElement.selectionEnd') @DocsEditable() @@ -29915,7 +30095,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.selectionEnd') @DocsEditable() - void set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.selectionEnd_Setter_long(this, value); + void set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.selectionEnd_Setter(this, value); @DomName('HTMLTextAreaElement.selectionStart') @DocsEditable() @@ -29923,7 +30103,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.selectionStart') @DocsEditable() - void set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.selectionStart_Setter_long(this, value); + void set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.selectionStart_Setter(this, value); @DomName('HTMLTextAreaElement.textLength') @DocsEditable() @@ -29947,7 +30127,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.value') @DocsEditable() - void set value(String value) => _blink.BlinkHTMLTextAreaElement.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkHTMLTextAreaElement.value_Setter(this, value); @DomName('HTMLTextAreaElement.willValidate') @DocsEditable() @@ -29959,7 +30139,7 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.wrap') @DocsEditable() - void set wrap(String value) => _blink.BlinkHTMLTextAreaElement.wrap_Setter_DOMString(this, value); + void set wrap(String value) => _blink.BlinkHTMLTextAreaElement.wrap_Setter(this, value); @DomName('HTMLTextAreaElement.checkValidity') @DocsEditable() @@ -29971,15 +30151,15 @@ class TextAreaElement extends HtmlElement { @DomName('HTMLTextAreaElement.setCustomValidity') @DocsEditable() - void setCustomValidity(String error) => _blink.BlinkHTMLTextAreaElement.setCustomValidity_Callback_DOMString(this, error); + void setCustomValidity(String error) => _blink.BlinkHTMLTextAreaElement.setCustomValidity_Callback_1(this, error); void setRangeText(String replacement, {int start, int end, String selectionMode}) { if ((replacement is String || replacement == null) && start == null && end == null && selectionMode == null) { - _blink.BlinkHTMLTextAreaElement.setRangeText_Callback_DOMString(this, replacement); + _blink.BlinkHTMLTextAreaElement.setRangeText_Callback_1(this, replacement); return; } if ((selectionMode is String || selectionMode == null) && (end is int || end == null) && (start is int || start == null) && (replacement is String || replacement == null)) { - _blink.BlinkHTMLTextAreaElement.setRangeText_Callback_DOMString_ul_ul_DOMString(this, replacement, start, end, selectionMode); + _blink.BlinkHTMLTextAreaElement.setRangeText_Callback_4(this, replacement, start, end, selectionMode); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -29987,10 +30167,10 @@ class TextAreaElement extends HtmlElement { void setSelectionRange(int start, int end, [String direction]) { if (direction != null) { - _blink.BlinkHTMLTextAreaElement.setSelectionRange_Callback_long_long_DOMString(this, start, end, direction); + _blink.BlinkHTMLTextAreaElement.setSelectionRange_Callback_3(this, start, end, direction); return; } - _blink.BlinkHTMLTextAreaElement.setSelectionRange_Callback_long_long(this, start, end); + _blink.BlinkHTMLTextAreaElement.setSelectionRange_Callback_2(this, start, end); return; } @@ -30023,7 +30203,7 @@ class TextEvent extends UIEvent { @DomName('TextEvent.initTextEvent') @DocsEditable() - void _initTextEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkTextEvent.initTextEvent_Callback_DOMString_boolean_boolean_Window_DOMString(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg); + void _initTextEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkTextEvent.initTextEvent_Callback_5(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -30155,7 +30335,7 @@ class TextTrack extends EventTarget { @DomName('TextTrack.mode') @DocsEditable() - void set mode(String value) => _blink.BlinkTextTrack.mode_Setter_DOMString(this, value); + void set mode(String value) => _blink.BlinkTextTrack.mode_Setter(this, value); @DomName('TextTrack.regions') @DocsEditable() @@ -30164,21 +30344,21 @@ class TextTrack extends EventTarget { @DomName('TextTrack.addCue') @DocsEditable() - void addCue(TextTrackCue cue) => _blink.BlinkTextTrack.addCue_Callback_TextTrackCue(this, cue); + void addCue(TextTrackCue cue) => _blink.BlinkTextTrack.addCue_Callback_1(this, cue); @DomName('TextTrack.addRegion') @DocsEditable() @Experimental() // untriaged - void addRegion(VttRegion region) => _blink.BlinkTextTrack.addRegion_Callback_VTTRegion(this, region); + void addRegion(VttRegion region) => _blink.BlinkTextTrack.addRegion_Callback_1(this, region); @DomName('TextTrack.removeCue') @DocsEditable() - void removeCue(TextTrackCue cue) => _blink.BlinkTextTrack.removeCue_Callback_TextTrackCue(this, cue); + void removeCue(TextTrackCue cue) => _blink.BlinkTextTrack.removeCue_Callback_1(this, cue); @DomName('TextTrack.removeRegion') @DocsEditable() @Experimental() // untriaged - void removeRegion(VttRegion region) => _blink.BlinkTextTrack.removeRegion_Callback_VTTRegion(this, region); + void removeRegion(VttRegion region) => _blink.BlinkTextTrack.removeRegion_Callback_1(this, region); /// Stream of `cuechange` events handled by this [TextTrack]. @DomName('TextTrack.oncuechange') @@ -30227,7 +30407,7 @@ class TextTrackCue extends EventTarget { @DomName('TextTrackCue.endTime') @DocsEditable() - void set endTime(num value) => _blink.BlinkTextTrackCue.endTime_Setter_double(this, value); + void set endTime(num value) => _blink.BlinkTextTrackCue.endTime_Setter(this, value); @DomName('TextTrackCue.id') @DocsEditable() @@ -30235,7 +30415,7 @@ class TextTrackCue extends EventTarget { @DomName('TextTrackCue.id') @DocsEditable() - void set id(String value) => _blink.BlinkTextTrackCue.id_Setter_DOMString(this, value); + void set id(String value) => _blink.BlinkTextTrackCue.id_Setter(this, value); @DomName('TextTrackCue.pauseOnExit') @DocsEditable() @@ -30243,7 +30423,7 @@ class TextTrackCue extends EventTarget { @DomName('TextTrackCue.pauseOnExit') @DocsEditable() - void set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.pauseOnExit_Setter_boolean(this, value); + void set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.pauseOnExit_Setter(this, value); @DomName('TextTrackCue.startTime') @DocsEditable() @@ -30251,7 +30431,7 @@ class TextTrackCue extends EventTarget { @DomName('TextTrackCue.startTime') @DocsEditable() - void set startTime(num value) => _blink.BlinkTextTrackCue.startTime_Setter_double(this, value); + void set startTime(num value) => _blink.BlinkTextTrackCue.startTime_Setter(this, value); @DomName('TextTrackCue.track') @DocsEditable() @@ -30290,10 +30470,10 @@ class TextTrackCueList extends NativeFieldWrapperClass2 with ListMixin= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkTextTrackCueList.item_Callback_ul(this, index); + return _blink.BlinkTextTrackCueList.item_Callback_1(this, index); } - TextTrackCue _nativeIndexedGetter(int index) => _blink.BlinkTextTrackCueList.item_Callback_ul(this, index); + TextTrackCue _nativeIndexedGetter(int index) => _blink.BlinkTextTrackCueList.item_Callback_1(this, index); void operator[]=(int index, TextTrackCue value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -30335,11 +30515,11 @@ class TextTrackCueList extends NativeFieldWrapperClass2 with ListMixin _blink.BlinkTextTrackCueList.getCueById_Callback_DOMString(this, id); + TextTrackCue getCueById(String id) => _blink.BlinkTextTrackCueList.getCueById_Callback_1(this, id); @DomName('TextTrackCueList.item') @DocsEditable() - TextTrackCue item(int index) => _blink.BlinkTextTrackCueList.item_Callback_ul(this, index); + TextTrackCue item(int index) => _blink.BlinkTextTrackCueList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -30379,10 +30559,10 @@ class TextTrackList extends EventTarget with ListMixin, ImmutableList TextTrack operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkTextTrackList.item_Callback_ul(this, index); + return _blink.BlinkTextTrackList.item_Callback_1(this, index); } - TextTrack _nativeIndexedGetter(int index) => _blink.BlinkTextTrackList.item_Callback_ul(this, index); + TextTrack _nativeIndexedGetter(int index) => _blink.BlinkTextTrackList.item_Callback_1(this, index); void operator[]=(int index, TextTrack value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -30425,11 +30605,11 @@ class TextTrackList extends EventTarget with ListMixin, ImmutableList @DomName('TextTrackList.getTrackById') @DocsEditable() @Experimental() // untriaged - TextTrack getTrackById(String id) => _blink.BlinkTextTrackList.getTrackById_Callback_DOMString(this, id); + TextTrack getTrackById(String id) => _blink.BlinkTextTrackList.getTrackById_Callback_1(this, id); @DomName('TextTrackList.item') @DocsEditable() - TextTrack item(int index) => _blink.BlinkTextTrackList.item_Callback_ul(this, index); + TextTrack item(int index) => _blink.BlinkTextTrackList.item_Callback_1(this, index); /// Stream of `addtrack` events handled by this [TextTrackList]. @DomName('TextTrackList.onaddtrack') @@ -30462,11 +30642,11 @@ class TimeRanges extends NativeFieldWrapperClass2 { @DomName('TimeRanges.end') @DocsEditable() - double end(int index) => _blink.BlinkTimeRanges.end_Callback_ul(this, index); + double end(int index) => _blink.BlinkTimeRanges.end_Callback_1(this, index); @DomName('TimeRanges.start') @DocsEditable() - double start(int index) => _blink.BlinkTimeRanges.start_Callback_ul(this, index); + double start(int index) => _blink.BlinkTimeRanges.start_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -30500,7 +30680,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.delay') @DocsEditable() @Experimental() // untriaged - void set delay(num value) => _blink.BlinkTiming.delay_Setter_double(this, value); + void set delay(num value) => _blink.BlinkTiming.delay_Setter(this, value); @DomName('Timing.direction') @DocsEditable() @@ -30510,7 +30690,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.direction') @DocsEditable() @Experimental() // untriaged - void set direction(String value) => _blink.BlinkTiming.direction_Setter_DOMString(this, value); + void set direction(String value) => _blink.BlinkTiming.direction_Setter(this, value); @DomName('Timing.easing') @DocsEditable() @@ -30520,7 +30700,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.easing') @DocsEditable() @Experimental() // untriaged - void set easing(String value) => _blink.BlinkTiming.easing_Setter_DOMString(this, value); + void set easing(String value) => _blink.BlinkTiming.easing_Setter(this, value); @DomName('Timing.endDelay') @DocsEditable() @@ -30530,7 +30710,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.endDelay') @DocsEditable() @Experimental() // untriaged - void set endDelay(num value) => _blink.BlinkTiming.endDelay_Setter_double(this, value); + void set endDelay(num value) => _blink.BlinkTiming.endDelay_Setter(this, value); @DomName('Timing.fill') @DocsEditable() @@ -30540,7 +30720,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.fill') @DocsEditable() @Experimental() // untriaged - void set fill(String value) => _blink.BlinkTiming.fill_Setter_DOMString(this, value); + void set fill(String value) => _blink.BlinkTiming.fill_Setter(this, value); @DomName('Timing.iterationStart') @DocsEditable() @@ -30550,7 +30730,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.iterationStart') @DocsEditable() @Experimental() // untriaged - void set iterationStart(num value) => _blink.BlinkTiming.iterationStart_Setter_double(this, value); + void set iterationStart(num value) => _blink.BlinkTiming.iterationStart_Setter(this, value); @DomName('Timing.iterations') @DocsEditable() @@ -30560,7 +30740,7 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.iterations') @DocsEditable() @Experimental() // untriaged - void set iterations(num value) => _blink.BlinkTiming.iterations_Setter_double(this, value); + void set iterations(num value) => _blink.BlinkTiming.iterations_Setter(this, value); @DomName('Timing.playbackRate') @DocsEditable() @@ -30570,17 +30750,17 @@ class Timing extends NativeFieldWrapperClass2 { @DomName('Timing.playbackRate') @DocsEditable() @Experimental() // untriaged - void set playbackRate(num value) => _blink.BlinkTiming.playbackRate_Setter_double(this, value); + void set playbackRate(num value) => _blink.BlinkTiming.playbackRate_Setter(this, value); @DomName('Timing.__getter__') @DocsEditable() @Experimental() // untriaged - Object __getter__(String name) => _blink.BlinkTiming.$__getter___Callback_DOMString(this, name); + Object __getter__(String name) => _blink.BlinkTiming.$__getter___Callback_1(this, name); @DomName('Timing.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(String name, num duration) => _blink.BlinkTiming.$__setter___Callback_DOMString_double(this, name, duration); + void __setter__(String name, num duration) => _blink.BlinkTiming.$__setter___Callback_2(this, name, duration); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -30770,7 +30950,7 @@ class TouchEvent extends UIEvent { @DomName('TouchEvent.initTouchEvent') @DocsEditable() - void _initTouchEvent(TouchList touches, TouchList targetTouches, TouchList changedTouches, String type, Window view, int unused1, int unused2, int unused3, int unused4, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkTouchEvent.initTouchEvent_Callback_TouchList_TouchList_TouchList_DOMString_Window_long_long_long_long_boolean_boolean_boolean_boolean(this, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey); + void _initTouchEvent(TouchList touches, TouchList targetTouches, TouchList changedTouches, String type, Window view, int unused1, int unused2, int unused3, int unused4, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkTouchEvent.initTouchEvent_Callback_13(this, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey); /** @@ -30810,10 +30990,10 @@ class TouchList extends NativeFieldWrapperClass2 with ListMixin, Immutabl Touch operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkTouchList.item_Callback_ul(this, index); + return _blink.BlinkTouchList.item_Callback_1(this, index); } - Touch _nativeIndexedGetter(int index) => _blink.BlinkTouchList.item_Callback_ul(this, index); + Touch _nativeIndexedGetter(int index) => _blink.BlinkTouchList.item_Callback_1(this, index); void operator[]=(int index, Touch value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -30855,7 +31035,7 @@ class TouchList extends NativeFieldWrapperClass2 with ListMixin, Immutabl @DomName('TouchList.item') @DocsEditable() - Touch item(int index) => _blink.BlinkTouchList.item_Callback_ul(this, index); + Touch item(int index) => _blink.BlinkTouchList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -30911,7 +31091,7 @@ class TrackElement extends HtmlElement { @DomName('HTMLTrackElement.default') @DocsEditable() - void set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.default_Setter_boolean(this, value); + void set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.default_Setter(this, value); @DomName('HTMLTrackElement.integrity') @DocsEditable() @@ -30921,7 +31101,7 @@ class TrackElement extends HtmlElement { @DomName('HTMLTrackElement.integrity') @DocsEditable() @Experimental() // untriaged - void set integrity(String value) => _blink.BlinkHTMLTrackElement.integrity_Setter_DOMString(this, value); + void set integrity(String value) => _blink.BlinkHTMLTrackElement.integrity_Setter(this, value); @DomName('HTMLTrackElement.kind') @DocsEditable() @@ -30929,7 +31109,7 @@ class TrackElement extends HtmlElement { @DomName('HTMLTrackElement.kind') @DocsEditable() - void set kind(String value) => _blink.BlinkHTMLTrackElement.kind_Setter_DOMString(this, value); + void set kind(String value) => _blink.BlinkHTMLTrackElement.kind_Setter(this, value); @DomName('HTMLTrackElement.label') @DocsEditable() @@ -30937,7 +31117,7 @@ class TrackElement extends HtmlElement { @DomName('HTMLTrackElement.label') @DocsEditable() - void set label(String value) => _blink.BlinkHTMLTrackElement.label_Setter_DOMString(this, value); + void set label(String value) => _blink.BlinkHTMLTrackElement.label_Setter(this, value); @DomName('HTMLTrackElement.readyState') @DocsEditable() @@ -30949,7 +31129,7 @@ class TrackElement extends HtmlElement { @DomName('HTMLTrackElement.src') @DocsEditable() - void set src(String value) => _blink.BlinkHTMLTrackElement.src_Setter_DOMString(this, value); + void set src(String value) => _blink.BlinkHTMLTrackElement.src_Setter(this, value); @DomName('HTMLTrackElement.srclang') @DocsEditable() @@ -30957,7 +31137,7 @@ class TrackElement extends HtmlElement { @DomName('HTMLTrackElement.srclang') @DocsEditable() - void set srclang(String value) => _blink.BlinkHTMLTrackElement.srclang_Setter_DOMString(this, value); + void set srclang(String value) => _blink.BlinkHTMLTrackElement.srclang_Setter(this, value); @DomName('HTMLTrackElement.track') @DocsEditable() @@ -31029,7 +31209,7 @@ class TreeWalker extends NativeFieldWrapperClass2 { @DomName('TreeWalker.currentNode') @DocsEditable() - void set currentNode(Node value) => _blink.BlinkTreeWalker.currentNode_Setter_Node(this, value); + void set currentNode(Node value) => _blink.BlinkTreeWalker.currentNode_Setter(this, value); @DomName('TreeWalker.filter') @DocsEditable() @@ -31149,7 +31329,7 @@ class UIEvent extends Event { @DomName('UIEvent.initUIEvent') @DocsEditable() - void _initUIEvent(String type, bool canBubble, bool cancelable, Window view, int detail) => _blink.BlinkUIEvent.initUIEvent_Callback_DOMString_boolean_boolean_Window_long(this, type, canBubble, cancelable, view, detail); + void _initUIEvent(String type, bool canBubble, bool cancelable, Window view, int detail) => _blink.BlinkUIEvent.initUIEvent_Callback_5(this, type, canBubble, cancelable, view, detail); @DomName('UIEvent.layerX') @@ -31219,32 +31399,32 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { static String createObjectUrl(blob_OR_source_OR_stream) { if ((blob_OR_source_OR_stream is Blob || blob_OR_source_OR_stream == null)) { - return _blink.BlinkURL.createObjectURL_Callback_Blob(blob_OR_source_OR_stream); + return _blink.BlinkURL.createObjectURL_Callback_1(blob_OR_source_OR_stream); } if ((blob_OR_source_OR_stream is MediaSource)) { - return _blink.BlinkURL.createObjectURL_Callback_MediaSource(blob_OR_source_OR_stream); + return _blink.BlinkURL.createObjectURL_Callback_1(blob_OR_source_OR_stream); } if ((blob_OR_source_OR_stream is MediaStream)) { - return _blink.BlinkURL.createObjectURL_Callback_MediaStream(blob_OR_source_OR_stream); + return _blink.BlinkURL.createObjectURL_Callback_1(blob_OR_source_OR_stream); } throw new ArgumentError("Incorrect number or type of arguments"); } @DomName('URL.createObjectUrlFromBlob') @DocsEditable() - static String createObjectUrlFromBlob(Blob blob) => _blink.BlinkURL.createObjectURL_Callback_Blob(blob); + static String createObjectUrlFromBlob(Blob blob) => _blink.BlinkURL.createObjectURL_Callback_1(blob); @DomName('URL.createObjectUrlFromSource') @DocsEditable() - static String createObjectUrlFromSource(MediaSource source) => _blink.BlinkURL.createObjectURL_Callback_MediaSource(source); + static String createObjectUrlFromSource(MediaSource source) => _blink.BlinkURL.createObjectURL_Callback_1(source); @DomName('URL.createObjectUrlFromStream') @DocsEditable() - static String createObjectUrlFromStream(MediaStream stream) => _blink.BlinkURL.createObjectURL_Callback_MediaStream(stream); + static String createObjectUrlFromStream(MediaStream stream) => _blink.BlinkURL.createObjectURL_Callback_1(stream); @DomName('URL.revokeObjectURL') @DocsEditable() - static void revokeObjectUrl(String url) => _blink.BlinkURL.revokeObjectURL_Callback_DOMString(url); + static void revokeObjectUrl(String url) => _blink.BlinkURL.revokeObjectURL_Callback_1(url); @DomName('URL.hash') @DocsEditable() @@ -31254,7 +31434,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.hash') @DocsEditable() @Experimental() // untriaged - void set hash(String value) => _blink.BlinkURL.hash_Setter_DOMString(this, value); + void set hash(String value) => _blink.BlinkURL.hash_Setter(this, value); @DomName('URL.host') @DocsEditable() @@ -31264,7 +31444,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.host') @DocsEditable() @Experimental() // untriaged - void set host(String value) => _blink.BlinkURL.host_Setter_DOMString(this, value); + void set host(String value) => _blink.BlinkURL.host_Setter(this, value); @DomName('URL.hostname') @DocsEditable() @@ -31274,7 +31454,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.hostname') @DocsEditable() @Experimental() // untriaged - void set hostname(String value) => _blink.BlinkURL.hostname_Setter_DOMString(this, value); + void set hostname(String value) => _blink.BlinkURL.hostname_Setter(this, value); @DomName('URL.href') @DocsEditable() @@ -31284,7 +31464,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.href') @DocsEditable() @Experimental() // untriaged - void set href(String value) => _blink.BlinkURL.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkURL.href_Setter(this, value); @DomName('URL.origin') @DocsEditable() @@ -31299,7 +31479,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.password') @DocsEditable() @Experimental() // untriaged - void set password(String value) => _blink.BlinkURL.password_Setter_DOMString(this, value); + void set password(String value) => _blink.BlinkURL.password_Setter(this, value); @DomName('URL.pathname') @DocsEditable() @@ -31309,7 +31489,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.pathname') @DocsEditable() @Experimental() // untriaged - void set pathname(String value) => _blink.BlinkURL.pathname_Setter_DOMString(this, value); + void set pathname(String value) => _blink.BlinkURL.pathname_Setter(this, value); @DomName('URL.port') @DocsEditable() @@ -31319,7 +31499,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.port') @DocsEditable() @Experimental() // untriaged - void set port(String value) => _blink.BlinkURL.port_Setter_DOMString(this, value); + void set port(String value) => _blink.BlinkURL.port_Setter(this, value); @DomName('URL.protocol') @DocsEditable() @@ -31329,7 +31509,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.protocol') @DocsEditable() @Experimental() // untriaged - void set protocol(String value) => _blink.BlinkURL.protocol_Setter_DOMString(this, value); + void set protocol(String value) => _blink.BlinkURL.protocol_Setter(this, value); @DomName('URL.search') @DocsEditable() @@ -31339,7 +31519,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.search') @DocsEditable() @Experimental() // untriaged - void set search(String value) => _blink.BlinkURL.search_Setter_DOMString(this, value); + void set search(String value) => _blink.BlinkURL.search_Setter(this, value); @DomName('URL.username') @DocsEditable() @@ -31349,7 +31529,7 @@ class Url extends NativeFieldWrapperClass2 implements UrlUtils { @DomName('URL.username') @DocsEditable() @Experimental() // untriaged - void set username(String value) => _blink.BlinkURL.username_Setter_DOMString(this, value); + void set username(String value) => _blink.BlinkURL.username_Setter(this, value); @DomName('URL.toString') @DocsEditable() @@ -31379,7 +31559,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.hash') @DocsEditable() @Experimental() // untriaged - void set hash(String value) => _blink.BlinkURLUtils.hash_Setter_DOMString(this, value); + void set hash(String value) => _blink.BlinkURLUtils.hash_Setter(this, value); @DomName('URLUtils.host') @DocsEditable() @@ -31389,7 +31569,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.host') @DocsEditable() @Experimental() // untriaged - void set host(String value) => _blink.BlinkURLUtils.host_Setter_DOMString(this, value); + void set host(String value) => _blink.BlinkURLUtils.host_Setter(this, value); @DomName('URLUtils.hostname') @DocsEditable() @@ -31399,7 +31579,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.hostname') @DocsEditable() @Experimental() // untriaged - void set hostname(String value) => _blink.BlinkURLUtils.hostname_Setter_DOMString(this, value); + void set hostname(String value) => _blink.BlinkURLUtils.hostname_Setter(this, value); @DomName('URLUtils.href') @DocsEditable() @@ -31409,7 +31589,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.href') @DocsEditable() @Experimental() // untriaged - void set href(String value) => _blink.BlinkURLUtils.href_Setter_DOMString(this, value); + void set href(String value) => _blink.BlinkURLUtils.href_Setter(this, value); @DomName('URLUtils.origin') @DocsEditable() @@ -31424,7 +31604,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.password') @DocsEditable() @Experimental() // untriaged - void set password(String value) => _blink.BlinkURLUtils.password_Setter_DOMString(this, value); + void set password(String value) => _blink.BlinkURLUtils.password_Setter(this, value); @DomName('URLUtils.pathname') @DocsEditable() @@ -31434,7 +31614,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.pathname') @DocsEditable() @Experimental() // untriaged - void set pathname(String value) => _blink.BlinkURLUtils.pathname_Setter_DOMString(this, value); + void set pathname(String value) => _blink.BlinkURLUtils.pathname_Setter(this, value); @DomName('URLUtils.port') @DocsEditable() @@ -31444,7 +31624,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.port') @DocsEditable() @Experimental() // untriaged - void set port(String value) => _blink.BlinkURLUtils.port_Setter_DOMString(this, value); + void set port(String value) => _blink.BlinkURLUtils.port_Setter(this, value); @DomName('URLUtils.protocol') @DocsEditable() @@ -31454,7 +31634,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.protocol') @DocsEditable() @Experimental() // untriaged - void set protocol(String value) => _blink.BlinkURLUtils.protocol_Setter_DOMString(this, value); + void set protocol(String value) => _blink.BlinkURLUtils.protocol_Setter(this, value); @DomName('URLUtils.search') @DocsEditable() @@ -31464,7 +31644,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.search') @DocsEditable() @Experimental() // untriaged - void set search(String value) => _blink.BlinkURLUtils.search_Setter_DOMString(this, value); + void set search(String value) => _blink.BlinkURLUtils.search_Setter(this, value); @DomName('URLUtils.username') @DocsEditable() @@ -31474,7 +31654,7 @@ abstract class UrlUtils extends NativeFieldWrapperClass2 { @DomName('URLUtils.username') @DocsEditable() @Experimental() // untriaged - void set username(String value) => _blink.BlinkURLUtils.username_Setter_DOMString(this, value); + void set username(String value) => _blink.BlinkURLUtils.username_Setter(this, value); @DomName('URLUtils.toString') @DocsEditable() @@ -31627,7 +31807,7 @@ class VideoElement extends MediaElement implements CanvasImageSource { @DomName('HTMLVideoElement.height') @DocsEditable() - void set height(int value) => _blink.BlinkHTMLVideoElement.height_Setter_ul(this, value); + void set height(int value) => _blink.BlinkHTMLVideoElement.height_Setter(this, value); @DomName('HTMLVideoElement.poster') @DocsEditable() @@ -31635,7 +31815,7 @@ class VideoElement extends MediaElement implements CanvasImageSource { @DomName('HTMLVideoElement.poster') @DocsEditable() - void set poster(String value) => _blink.BlinkHTMLVideoElement.poster_Setter_DOMString(this, value); + void set poster(String value) => _blink.BlinkHTMLVideoElement.poster_Setter(this, value); @DomName('HTMLVideoElement.videoHeight') @DocsEditable() @@ -31665,7 +31845,7 @@ class VideoElement extends MediaElement implements CanvasImageSource { @DomName('HTMLVideoElement.width') @DocsEditable() - void set width(int value) => _blink.BlinkHTMLVideoElement.width_Setter_ul(this, value); + void set width(int value) => _blink.BlinkHTMLVideoElement.width_Setter(this, value); @DomName('HTMLVideoElement.getVideoPlaybackQuality') @DocsEditable() @@ -31766,7 +31946,7 @@ class VideoTrack extends NativeFieldWrapperClass2 { @DomName('VideoTrack.selected') @DocsEditable() @Experimental() // untriaged - void set selected(bool value) => _blink.BlinkVideoTrack.selected_Setter_boolean(this, value); + void set selected(bool value) => _blink.BlinkVideoTrack.selected_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -31801,12 +31981,12 @@ class VideoTrackList extends EventTarget { @DomName('VideoTrackList.__getter__') @DocsEditable() @Experimental() // untriaged - VideoTrack __getter__(int index) => _blink.BlinkVideoTrackList.$__getter___Callback_ul(this, index); + VideoTrack __getter__(int index) => _blink.BlinkVideoTrackList.$__getter___Callback_1(this, index); @DomName('VideoTrackList.getTrackById') @DocsEditable() @Experimental() // untriaged - VideoTrack getTrackById(String id) => _blink.BlinkVideoTrackList.getTrackById_Callback_DOMString(this, id); + VideoTrack getTrackById(String id) => _blink.BlinkVideoTrackList.getTrackById_Callback_1(this, id); @DomName('VideoTrackList.onchange') @DocsEditable() @@ -31842,7 +32022,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.VTTCue') @DocsEditable() factory VttCue(num startTime, num endTime, String text) { - return _blink.BlinkVTTCue.constructorCallback_double_double_DOMString(startTime, endTime, text); + return _blink.BlinkVTTCue.constructorCallback_3(startTime, endTime, text); } @DomName('VTTCue.align') @@ -31853,7 +32033,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.align') @DocsEditable() @Experimental() // untriaged - void set align(String value) => _blink.BlinkVTTCue.align_Setter_DOMString(this, value); + void set align(String value) => _blink.BlinkVTTCue.align_Setter(this, value); @DomName('VTTCue.line') @DocsEditable() @@ -31863,7 +32043,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.line') @DocsEditable() @Experimental() // untriaged - void set line(int value) => _blink.BlinkVTTCue.line_Setter_long(this, value); + void set line(int value) => _blink.BlinkVTTCue.line_Setter(this, value); @DomName('VTTCue.position') @DocsEditable() @@ -31873,7 +32053,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.position') @DocsEditable() @Experimental() // untriaged - void set position(int value) => _blink.BlinkVTTCue.position_Setter_long(this, value); + void set position(int value) => _blink.BlinkVTTCue.position_Setter(this, value); @DomName('VTTCue.regionId') @DocsEditable() @@ -31883,7 +32063,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.regionId') @DocsEditable() @Experimental() // untriaged - void set regionId(String value) => _blink.BlinkVTTCue.regionId_Setter_DOMString(this, value); + void set regionId(String value) => _blink.BlinkVTTCue.regionId_Setter(this, value); @DomName('VTTCue.size') @DocsEditable() @@ -31893,7 +32073,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.size') @DocsEditable() @Experimental() // untriaged - void set size(int value) => _blink.BlinkVTTCue.size_Setter_long(this, value); + void set size(int value) => _blink.BlinkVTTCue.size_Setter(this, value); @DomName('VTTCue.snapToLines') @DocsEditable() @@ -31903,7 +32083,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.snapToLines') @DocsEditable() @Experimental() // untriaged - void set snapToLines(bool value) => _blink.BlinkVTTCue.snapToLines_Setter_boolean(this, value); + void set snapToLines(bool value) => _blink.BlinkVTTCue.snapToLines_Setter(this, value); @DomName('VTTCue.text') @DocsEditable() @@ -31913,7 +32093,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.text') @DocsEditable() @Experimental() // untriaged - void set text(String value) => _blink.BlinkVTTCue.text_Setter_DOMString(this, value); + void set text(String value) => _blink.BlinkVTTCue.text_Setter(this, value); @DomName('VTTCue.vertical') @DocsEditable() @@ -31923,7 +32103,7 @@ class VttCue extends TextTrackCue { @DomName('VTTCue.vertical') @DocsEditable() @Experimental() // untriaged - void set vertical(String value) => _blink.BlinkVTTCue.vertical_Setter_DOMString(this, value); + void set vertical(String value) => _blink.BlinkVTTCue.vertical_Setter(this, value); @DomName('VTTCue.getCueAsHTML') @DocsEditable() @@ -31959,7 +32139,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.height') @DocsEditable() @Experimental() // untriaged - void set height(int value) => _blink.BlinkVTTRegion.height_Setter_long(this, value); + void set height(int value) => _blink.BlinkVTTRegion.height_Setter(this, value); @DomName('VTTRegion.id') @DocsEditable() @@ -31969,7 +32149,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.id') @DocsEditable() @Experimental() // untriaged - void set id(String value) => _blink.BlinkVTTRegion.id_Setter_DOMString(this, value); + void set id(String value) => _blink.BlinkVTTRegion.id_Setter(this, value); @DomName('VTTRegion.regionAnchorX') @DocsEditable() @@ -31979,7 +32159,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.regionAnchorX') @DocsEditable() @Experimental() // untriaged - void set regionAnchorX(num value) => _blink.BlinkVTTRegion.regionAnchorX_Setter_double(this, value); + void set regionAnchorX(num value) => _blink.BlinkVTTRegion.regionAnchorX_Setter(this, value); @DomName('VTTRegion.regionAnchorY') @DocsEditable() @@ -31989,7 +32169,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.regionAnchorY') @DocsEditable() @Experimental() // untriaged - void set regionAnchorY(num value) => _blink.BlinkVTTRegion.regionAnchorY_Setter_double(this, value); + void set regionAnchorY(num value) => _blink.BlinkVTTRegion.regionAnchorY_Setter(this, value); @DomName('VTTRegion.scroll') @DocsEditable() @@ -31999,7 +32179,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.scroll') @DocsEditable() @Experimental() // untriaged - void set scroll(String value) => _blink.BlinkVTTRegion.scroll_Setter_DOMString(this, value); + void set scroll(String value) => _blink.BlinkVTTRegion.scroll_Setter(this, value); @DomName('VTTRegion.track') @DocsEditable() @@ -32014,7 +32194,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.viewportAnchorX') @DocsEditable() @Experimental() // untriaged - void set viewportAnchorX(num value) => _blink.BlinkVTTRegion.viewportAnchorX_Setter_double(this, value); + void set viewportAnchorX(num value) => _blink.BlinkVTTRegion.viewportAnchorX_Setter(this, value); @DomName('VTTRegion.viewportAnchorY') @DocsEditable() @@ -32024,7 +32204,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.viewportAnchorY') @DocsEditable() @Experimental() // untriaged - void set viewportAnchorY(num value) => _blink.BlinkVTTRegion.viewportAnchorY_Setter_double(this, value); + void set viewportAnchorY(num value) => _blink.BlinkVTTRegion.viewportAnchorY_Setter(this, value); @DomName('VTTRegion.width') @DocsEditable() @@ -32034,7 +32214,7 @@ class VttRegion extends NativeFieldWrapperClass2 { @DomName('VTTRegion.width') @DocsEditable() @Experimental() // untriaged - void set width(num value) => _blink.BlinkVTTRegion.width_Setter_double(this, value); + void set width(num value) => _blink.BlinkVTTRegion.width_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -32059,12 +32239,12 @@ class VttRegionList extends NativeFieldWrapperClass2 { @DomName('VTTRegionList.getRegionById') @DocsEditable() @Experimental() // untriaged - VttRegion getRegionById(String id) => _blink.BlinkVTTRegionList.getRegionById_Callback_DOMString(this, id); + VttRegion getRegionById(String id) => _blink.BlinkVTTRegionList.getRegionById_Callback_1(this, id); @DomName('VTTRegionList.item') @DocsEditable() @Experimental() // untriaged - VttRegion item(int index) => _blink.BlinkVTTRegionList.item_Callback_ul(this, index); + VttRegion item(int index) => _blink.BlinkVTTRegionList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -32163,13 +32343,13 @@ class WebSocket extends EventTarget { @DocsEditable() factory WebSocket(String url, [protocol_OR_protocols]) { if ((url is String || url == null) && protocol_OR_protocols == null) { - return _blink.BlinkWebSocket.constructorCallback_DOMString(url); + return _blink.BlinkWebSocket.constructorCallback_1(url); } if ((protocol_OR_protocols is String || protocol_OR_protocols == null) && (url is String || url == null)) { - return _blink.BlinkWebSocket.constructorCallback_DOMString_DOMString(url, protocol_OR_protocols); + return _blink.BlinkWebSocket.constructorCallback_2(url, protocol_OR_protocols); } if ((protocol_OR_protocols is List || protocol_OR_protocols == null) && (url is String || url == null)) { - return _blink.BlinkWebSocket.constructorCallback_DOMString_SEQ_DOMString_SEQ(url, protocol_OR_protocols); + return _blink.BlinkWebSocket.constructorCallback_2(url, protocol_OR_protocols); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -32199,7 +32379,7 @@ class WebSocket extends EventTarget { @DomName('WebSocket.binaryType') @DocsEditable() - void set binaryType(String value) => _blink.BlinkWebSocket.binaryType_Setter_DOMString(this, value); + void set binaryType(String value) => _blink.BlinkWebSocket.binaryType_Setter(this, value); @DomName('WebSocket.bufferedAmount') @DocsEditable() @@ -32223,11 +32403,11 @@ class WebSocket extends EventTarget { void close([int code, String reason]) { if (reason != null) { - _blink.BlinkWebSocket.close_Callback_us_DOMString(this, code, reason); + _blink.BlinkWebSocket.close_Callback_2(this, code, reason); return; } if (code != null) { - _blink.BlinkWebSocket.close_Callback_us(this, code); + _blink.BlinkWebSocket.close_Callback_1(this, code); return; } _blink.BlinkWebSocket.close_Callback(this); @@ -32236,19 +32416,19 @@ class WebSocket extends EventTarget { void send(data) { if ((data is String || data == null)) { - _blink.BlinkWebSocket.send_Callback_DOMString(this, data); + _blink.BlinkWebSocket.send_Callback_1(this, data); return; } if ((data is Blob || data == null)) { - _blink.BlinkWebSocket.send_Callback_Blob(this, data); + _blink.BlinkWebSocket.send_Callback_1(this, data); return; } if ((data is TypedData || data == null)) { - _blink.BlinkWebSocket.send_Callback_ArrayBufferView(this, data); + _blink.BlinkWebSocket.send_Callback_1(this, data); return; } if ((data is ByteBuffer || data == null)) { - _blink.BlinkWebSocket.send_Callback_ArrayBuffer(this, data); + _blink.BlinkWebSocket.send_Callback_1(this, data); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -32256,19 +32436,19 @@ class WebSocket extends EventTarget { @DomName('WebSocket.sendBlob') @DocsEditable() - void sendBlob(Blob data) => _blink.BlinkWebSocket.send_Callback_Blob(this, data); + void sendBlob(Blob data) => _blink.BlinkWebSocket.send_Callback_1(this, data); @DomName('WebSocket.sendByteBuffer') @DocsEditable() - void sendByteBuffer(ByteBuffer data) => _blink.BlinkWebSocket.send_Callback_ArrayBuffer(this, data); + void sendByteBuffer(ByteBuffer data) => _blink.BlinkWebSocket.send_Callback_1(this, data); @DomName('WebSocket.sendString') @DocsEditable() - void sendString(String data) => _blink.BlinkWebSocket.send_Callback_DOMString(this, data); + void sendString(String data) => _blink.BlinkWebSocket.send_Callback_1(this, data); @DomName('WebSocket.sendTypedData') @DocsEditable() - void sendTypedData(TypedData data) => _blink.BlinkWebSocket.send_Callback_ArrayBufferView(this, data); + void sendTypedData(TypedData data) => _blink.BlinkWebSocket.send_Callback_1(this, data); /// Stream of `close` events handled by this [WebSocket]. @DomName('WebSocket.onclose') @@ -32760,7 +32940,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.defaultStatus') @DocsEditable() @Experimental() // non-standard - void set defaultStatus(String value) => _blink.BlinkWindow.defaultStatus_Setter_DOMString(this, value); + void set defaultStatus(String value) => _blink.BlinkWindow.defaultStatus_Setter(this, value); /// *Deprecated*. @DomName('Window.defaultstatus') @@ -32772,7 +32952,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.defaultstatus') @DocsEditable() @Experimental() // non-standard - void set defaultstatus(String value) => _blink.BlinkWindow.defaultstatus_Setter_DOMString(this, value); + void set defaultstatus(String value) => _blink.BlinkWindow.defaultstatus_Setter(this, value); /** * The ratio between physical pixels and logical CSS pixels. @@ -32914,7 +33094,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo */ @DomName('Window.name') @DocsEditable() - void set name(String value) => _blink.BlinkWindow.name_Setter_DOMString(this, value); + void set name(String value) => _blink.BlinkWindow.name_Setter(this, value); /** * The user agent accessing this window. @@ -32949,7 +33129,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.opener') @DocsEditable() - void set opener(Window value) => _blink.BlinkWindow.opener_Setter_Window(this, value); + void set opener(Window value) => _blink.BlinkWindow.opener_Setter(this, value); @DomName('Window.orientation') @DocsEditable() @@ -33170,7 +33350,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo /// *Deprecated*. @DomName('Window.status') @DocsEditable() - void set status(String value) => _blink.BlinkWindow.status_Setter_DOMString(this, value); + void set status(String value) => _blink.BlinkWindow.status_Setter(this, value); /** * This window's status bar. @@ -33231,17 +33411,17 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo WindowBase __getter__(index_OR_name) { if ((index_OR_name is int)) { - return _blink.BlinkWindow.$__getter___Callback_ul(this, index_OR_name); + return _blink.BlinkWindow.$__getter___Callback_1(this, index_OR_name); } if ((index_OR_name is String)) { - return _blink.BlinkWindow.$__getter___Callback_DOMString(this, index_OR_name); + return _blink.BlinkWindow.$__getter___Callback_1(this, index_OR_name); } throw new ArgumentError("Incorrect number or type of arguments"); } void alert([String message]) { if (message != null) { - _blink.BlinkWindow.alert_Callback_DOMString(this, message); + _blink.BlinkWindow.alert_Callback_1(this, message); return; } _blink.BlinkWindow.alert_Callback(this); @@ -33250,7 +33430,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.cancelAnimationFrame') @DocsEditable() - void cancelAnimationFrame(int id) => _blink.BlinkWindow.cancelAnimationFrame_Callback_long(this, id); + void cancelAnimationFrame(int id) => _blink.BlinkWindow.cancelAnimationFrame_Callback_1(this, id); @DomName('Window.close') @DocsEditable() @@ -33258,7 +33438,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo bool confirm([String message]) { if (message != null) { - return _blink.BlinkWindow.confirm_Callback_DOMString(this, message); + return _blink.BlinkWindow.confirm_Callback_1(this, message); } return _blink.BlinkWindow.confirm_Callback(this); } @@ -33274,11 +33454,11 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.find') @DocsEditable() @Experimental() // non-standard - bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) => _blink.BlinkWindow.find_Callback_DOMString_boolean_boolean_boolean_boolean_boolean_boolean(this, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog); + bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) => _blink.BlinkWindow.find_Callback_7(this, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog); @DomName('Window.getComputedStyle') @DocsEditable() - CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) => _blink.BlinkWindow.getComputedStyle_Callback_Element_DOMString(this, element, pseudoElement); + CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) => _blink.BlinkWindow.getComputedStyle_Callback_2(this, element, pseudoElement); /** * Returns all CSS rules that apply to the element's pseudo-element. @@ -33286,7 +33466,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.getMatchedCSSRules') @DocsEditable() @Experimental() // non-standard - List getMatchedCssRules(Element element, String pseudoElement) => _blink.BlinkWindow.getMatchedCSSRules_Callback_Element_DOMString(this, element, pseudoElement); + List getMatchedCssRules(Element element, String pseudoElement) => _blink.BlinkWindow.getMatchedCSSRules_Callback_2(this, element, pseudoElement); /** * Returns the currently selected text. @@ -33314,7 +33494,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo */ @DomName('Window.matchMedia') @DocsEditable() - MediaQueryList matchMedia(String query) => _blink.BlinkWindow.matchMedia_Callback_DOMString(this, query); + MediaQueryList matchMedia(String query) => _blink.BlinkWindow.matchMedia_Callback_1(this, query); /** * Moves this window. @@ -33330,29 +33510,26 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo */ @DomName('Window.moveBy') @DocsEditable() - void moveBy(num x, num y) => _blink.BlinkWindow.moveBy_Callback_float_float(this, x, y); + void moveBy(num x, num y) => _blink.BlinkWindow.moveBy_Callback_2(this, x, y); @DomName('Window.moveTo') @DocsEditable() - void _moveTo(num x, num y) => _blink.BlinkWindow.moveTo_Callback_float_float(this, x, y); + void _moveTo(num x, num y) => _blink.BlinkWindow.moveTo_Callback_2(this, x, y); @DomName('Window.open') @DocsEditable() - WindowBase open(String url, String name, [String options]) => _blink.BlinkWindow.open_Callback_DOMString_DOMString_DOMString(this, url, name, options); + WindowBase open(String url, String name, [String options]) => _blink.BlinkWindow.open_Callback_3(this, url, name, options); - /// *Deprecated.* - @DomName('Window.openDatabase') - @DocsEditable() - @SupportedBrowser(SupportedBrowser.CHROME) - @SupportedBrowser(SupportedBrowser.SAFARI) - @Experimental() - // http://www.w3.org/TR/webdatabase/ - @Experimental() // deprecated - SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) => _blink.BlinkWindow.openDatabase_Callback_DOMString_DOMString_DOMString_ul_DatabaseCallback(this, name, version, displayName, estimatedSize, creationCallback); + SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) { + if (creationCallback != null) { + return _blink.BlinkWindow.openDatabase_Callback_5(this, name, version, displayName, estimatedSize, creationCallback); + } + return _blink.BlinkWindow.openDatabase_Callback_4(this, name, version, displayName, estimatedSize); + } @DomName('Window.postMessage') @DocsEditable() - void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List transfer]) => _blink.BlinkWindow.postMessage_Callback_SerializedScriptValue_DOMString_SEQ_MessagePort_SEQ(this, message, targetOrigin, transfer); + void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List transfer]) => _blink.BlinkWindow.postMessage_Callback_3(this, message, targetOrigin, transfer); /** * Opens the print dialog for this window. @@ -33368,7 +33545,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.requestAnimationFrame') @DocsEditable() - int _requestAnimationFrame(RequestAnimationFrameCallback callback) => _blink.BlinkWindow.requestAnimationFrame_Callback_RequestAnimationFrameCallback(this, callback); + int _requestAnimationFrame(RequestAnimationFrameCallback callback) => _blink.BlinkWindow.requestAnimationFrame_Callback_1(this, callback); /** * Resizes this window by an offset. @@ -33380,7 +33557,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo */ @DomName('Window.resizeBy') @DocsEditable() - void resizeBy(num x, num y) => _blink.BlinkWindow.resizeBy_Callback_float_float(this, x, y); + void resizeBy(num x, num y) => _blink.BlinkWindow.resizeBy_Callback_2(this, x, y); /** * Resizes this window to a specific width and height. @@ -33392,47 +33569,34 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo */ @DomName('Window.resizeTo') @DocsEditable() - void resizeTo(num width, num height) => _blink.BlinkWindow.resizeTo_Callback_float_float(this, width, height); + void resizeTo(num width, num height) => _blink.BlinkWindow.resizeTo_Callback_2(this, width, height); - /** - * Scrolls the page horizontally and vertically to a specific point. - * - * This method is identical to [scrollTo]. - * - * ## Other resources - * - * * [Window scroll] (http://docs.webplatform.org/wiki/dom/methods/scroll) - * from WebPlatform.org. - */ - @DomName('Window.scroll') - @DocsEditable() - void scroll(int x, int y, [Map scrollOptions]) => _blink.BlinkWindow.scroll_Callback_long_long_Dictionary(this, x, y, scrollOptions); + void scroll(int x, int y, [Map scrollOptions]) { + if (scrollOptions != null) { + _blink.BlinkWindow.scroll_Callback_3(this, x, y, scrollOptions); + return; + } + _blink.BlinkWindow.scroll_Callback_2(this, x, y); + return; + } - /** - * Scrolls the page horizontally and vertically by an offset. - * - * ## Other resources - * - * * [Window scrollBy] (http://docs.webplatform.org/wiki/dom/methods/scrollBy) - * from WebPlatform.org. - */ - @DomName('Window.scrollBy') - @DocsEditable() - void scrollBy(int x, int y, [Map scrollOptions]) => _blink.BlinkWindow.scrollBy_Callback_long_long_Dictionary(this, x, y, scrollOptions); + void scrollBy(int x, int y, [Map scrollOptions]) { + if (scrollOptions != null) { + _blink.BlinkWindow.scrollBy_Callback_3(this, x, y, scrollOptions); + return; + } + _blink.BlinkWindow.scrollBy_Callback_2(this, x, y); + return; + } - /** - * Scrolls the page horizontally and vertically to a specific point. - * - * This method is identical to [scroll]. - * - * ## Other resources - * - * * [Window scrollTo] (http://docs.webplatform.org/wiki/dom/methods/scrollTo) - * from WebPlatform.org. - */ - @DomName('Window.scrollTo') - @DocsEditable() - void scrollTo(int x, int y, [Map scrollOptions]) => _blink.BlinkWindow.scrollTo_Callback_long_long_Dictionary(this, x, y, scrollOptions); + void scrollTo(int x, int y, [Map scrollOptions]) { + if (scrollOptions != null) { + _blink.BlinkWindow.scrollTo_Callback_3(this, x, y, scrollOptions); + return; + } + _blink.BlinkWindow.scrollTo_Callback_2(this, x, y); + return; + } /** * Opens a new page as a modal dialog. @@ -33445,7 +33609,7 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo */ @DomName('Window.showModalDialog') @DocsEditable() - Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) => _blink.BlinkWindow.showModalDialog_Callback_DOMString_ScriptValue_DOMString(this, url, dialogArgs, featureArgs); + Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) => _blink.BlinkWindow.showModalDialog_Callback_3(this, url, dialogArgs, featureArgs); /** * Stops the window from loading. @@ -33460,12 +33624,14 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DocsEditable() void stop() => _blink.BlinkWindow.stop_Callback(this); - @DomName('Window.webkitRequestFileSystem') - @DocsEditable() - @SupportedBrowser(SupportedBrowser.CHROME) - @Experimental() - // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem - void __requestFileSystem(int type, int size, _FileSystemCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkWindow.webkitRequestFileSystem_Callback_us_ll_FileSystemCallback_ErrorCallback(this, type, size, successCallback, errorCallback); + void __requestFileSystem(int type, int size, _FileSystemCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkWindow.webkitRequestFileSystem_Callback_4(this, type, size, successCallback, errorCallback); + return; + } + _blink.BlinkWindow.webkitRequestFileSystem_Callback_3(this, type, size, successCallback); + return; + } Future _requestFileSystem(int type, int size) { var completer = new Completer(); @@ -33475,21 +33641,14 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo return completer.future; } - /** - * Asynchronously retrieves a local filesystem entry. - * - * ## Other resources - * - * * [Obtaining access to file system entry points] - * (http://www.w3.org/TR/file-system-api/#obtaining-access-to-file-system-entry-points) - * from W3C. - */ - @DomName('Window.webkitResolveLocalFileSystemURL') - @DocsEditable() - @SupportedBrowser(SupportedBrowser.CHROME) - @Experimental() - // http://www.w3.org/TR/file-system-api/#idl-def-LocalFileSystem - void _resolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkWindow.webkitResolveLocalFileSystemURL_Callback_DOMString_EntryCallback_ErrorCallback(this, url, successCallback, errorCallback); + void _resolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkWindow.webkitResolveLocalFileSystemURL_Callback_3(this, url, successCallback, errorCallback); + return; + } + _blink.BlinkWindow.webkitResolveLocalFileSystemURL_Callback_2(this, url, successCallback); + return; + } Future resolveLocalFileSystemUrl(String url) { var completer = new Completer(); @@ -33501,27 +33660,27 @@ class Window extends EventTarget implements WindowEventHandlers, WindowBase, Glo @DomName('Window.atob') @DocsEditable() - String atob(String string) => _blink.BlinkWindow.atob_Callback_DOMString(this, string); + String atob(String string) => _blink.BlinkWindow.atob_Callback_1(this, string); @DomName('Window.btoa') @DocsEditable() - String btoa(String string) => _blink.BlinkWindow.btoa_Callback_DOMString(this, string); + String btoa(String string) => _blink.BlinkWindow.btoa_Callback_1(this, string); @DomName('Window.clearInterval') @DocsEditable() - void _clearInterval(int handle) => _blink.BlinkWindow.clearInterval_Callback_long(this, handle); + void _clearInterval(int handle) => _blink.BlinkWindow.clearInterval_Callback_1(this, handle); @DomName('Window.clearTimeout') @DocsEditable() - void _clearTimeout(int handle) => _blink.BlinkWindow.clearTimeout_Callback_long(this, handle); + void _clearTimeout(int handle) => _blink.BlinkWindow.clearTimeout_Callback_1(this, handle); @DomName('Window.setInterval') @DocsEditable() - int _setInterval(Object handler, int timeout) => _blink.BlinkWindow.setInterval_Callback_ScriptValue_long(this, handler, timeout); + int _setInterval(Object handler, int timeout) => _blink.BlinkWindow.setInterval_Callback_2(this, handler, timeout); @DomName('Window.setTimeout') @DocsEditable() - int _setTimeout(Object handler, int timeout) => _blink.BlinkWindow.setTimeout_Callback_ScriptValue_long(this, handler, timeout); + int _setTimeout(Object handler, int timeout) => _blink.BlinkWindow.setTimeout_Callback_2(this, handler, timeout); /// Stream of `contentloaded` events handled by this [Window]. @DomName('Window.onDOMContentLoaded') @@ -33972,12 +34131,12 @@ abstract class WindowBase64 extends NativeFieldWrapperClass2 { @DomName('WindowBase64.atob') @DocsEditable() @Experimental() // untriaged - String atob(String string) => _blink.BlinkWindowBase64.atob_Callback_DOMString(this, string); + String atob(String string) => _blink.BlinkWindowBase64.atob_Callback_1(this, string); @DomName('WindowBase64.btoa') @DocsEditable() @Experimental() // untriaged - String btoa(String string) => _blink.BlinkWindowBase64.btoa_Callback_DOMString(this, string); + String btoa(String string) => _blink.BlinkWindowBase64.btoa_Callback_1(this, string); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34105,7 +34264,7 @@ class Worker extends EventTarget implements AbstractWorker { @DomName('Worker.Worker') @DocsEditable() factory Worker(String scriptUrl) { - return _blink.BlinkWorker.constructorCallback_DOMString(scriptUrl); + return _blink.BlinkWorker.constructorCallback_1(scriptUrl); } /// Checks if this type is supported on the current platform. @@ -34113,7 +34272,7 @@ class Worker extends EventTarget implements AbstractWorker { @DomName('Worker.postMessage') @DocsEditable() - void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkWorker.postMessage_Callback_SerializedScriptValue_SEQ_MessagePort_SEQ(this, message, transfer); + void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkWorker.postMessage_Callback_2(this, message, transfer); @DomName('Worker.terminate') @DocsEditable() @@ -34224,22 +34383,34 @@ class WorkerGlobalScope extends EventTarget implements _WindowTimers, WindowBase @DomName('WorkerGlobalScope.importScripts') @DocsEditable() @Experimental() // untriaged - void importScripts(String urls) => _blink.BlinkWorkerGlobalScope.importScripts_Callback_DOMString(this, urls); + void importScripts(String urls) => _blink.BlinkWorkerGlobalScope.importScripts_Callback_1(this, urls); - @DomName('WorkerGlobalScope.openDatabase') - @DocsEditable() - @Experimental() // untriaged - SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) => _blink.BlinkWorkerGlobalScope.openDatabase_Callback_DOMString_DOMString_DOMString_ul_DatabaseCallback(this, name, version, displayName, estimatedSize, creationCallback); + SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) { + if (creationCallback != null) { + return _blink.BlinkWorkerGlobalScope.openDatabase_Callback_5(this, name, version, displayName, estimatedSize, creationCallback); + } + return _blink.BlinkWorkerGlobalScope.openDatabase_Callback_4(this, name, version, displayName, estimatedSize); + } - @DomName('WorkerGlobalScope.openDatabaseSync') - @DocsEditable() - @Experimental() // untriaged - _DatabaseSync openDatabaseSync(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) => _blink.BlinkWorkerGlobalScope.openDatabaseSync_Callback_DOMString_DOMString_DOMString_ul_DatabaseCallback(this, name, version, displayName, estimatedSize, creationCallback); + _DatabaseSync openDatabaseSync(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) { + if (creationCallback != null) { + return _blink.BlinkWorkerGlobalScope.openDatabaseSync_Callback_5(this, name, version, displayName, estimatedSize, creationCallback); + } + return _blink.BlinkWorkerGlobalScope.openDatabaseSync_Callback_4(this, name, version, displayName, estimatedSize); + } - @DomName('WorkerGlobalScope.webkitRequestFileSystem') - @DocsEditable() - @Experimental() // untriaged - void _webkitRequestFileSystem(int type, int size, [_FileSystemCallback successCallback, _ErrorCallback errorCallback]) => _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_us_ll_FileSystemCallback_ErrorCallback(this, type, size, successCallback, errorCallback); + void _webkitRequestFileSystem(int type, int size, [_FileSystemCallback successCallback, _ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_4(this, type, size, successCallback, errorCallback); + return; + } + if (successCallback != null) { + _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_3(this, type, size, successCallback); + return; + } + _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_2(this, type, size); + return; + } Future webkitRequestFileSystem(int type, int size) { var completer = new Completer(); @@ -34255,7 +34426,7 @@ class WorkerGlobalScope extends EventTarget implements _WindowTimers, WindowBase @SupportedBrowser(SupportedBrowser.SAFARI) @Experimental() @Experimental() // untriaged - _DOMFileSystemSync requestFileSystemSync(int type, int size) => _blink.BlinkWorkerGlobalScope.webkitRequestFileSystemSync_Callback_us_ll(this, type, size); + _DOMFileSystemSync requestFileSystemSync(int type, int size) => _blink.BlinkWorkerGlobalScope.webkitRequestFileSystemSync_Callback_2(this, type, size); @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemSyncURL') @DocsEditable() @@ -34263,12 +34434,16 @@ class WorkerGlobalScope extends EventTarget implements _WindowTimers, WindowBase @SupportedBrowser(SupportedBrowser.SAFARI) @Experimental() @Experimental() // untriaged - _EntrySync resolveLocalFileSystemSyncUrl(String url) => _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemSyncURL_Callback_DOMString(this, url); + _EntrySync resolveLocalFileSystemSyncUrl(String url) => _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemSyncURL_Callback_1(this, url); - @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemURL') - @DocsEditable() - @Experimental() // untriaged - void _webkitResolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) => _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemURL_Callback_DOMString_EntryCallback_ErrorCallback(this, url, successCallback, errorCallback); + void _webkitResolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) { + if (errorCallback != null) { + _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemURL_Callback_3(this, url, successCallback, errorCallback); + return; + } + _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemURL_Callback_2(this, url, successCallback); + return; + } Future webkitResolveLocalFileSystemUrl(String url) { var completer = new Completer(); @@ -34281,32 +34456,32 @@ class WorkerGlobalScope extends EventTarget implements _WindowTimers, WindowBase @DomName('WorkerGlobalScope.atob') @DocsEditable() @Experimental() // untriaged - String atob(String string) => _blink.BlinkWorkerGlobalScope.atob_Callback_DOMString(this, string); + String atob(String string) => _blink.BlinkWorkerGlobalScope.atob_Callback_1(this, string); @DomName('WorkerGlobalScope.btoa') @DocsEditable() @Experimental() // untriaged - String btoa(String string) => _blink.BlinkWorkerGlobalScope.btoa_Callback_DOMString(this, string); + String btoa(String string) => _blink.BlinkWorkerGlobalScope.btoa_Callback_1(this, string); @DomName('WorkerGlobalScope.clearInterval') @DocsEditable() @Experimental() // untriaged - void _clearInterval(int handle) => _blink.BlinkWorkerGlobalScope.clearInterval_Callback_long(this, handle); + void _clearInterval(int handle) => _blink.BlinkWorkerGlobalScope.clearInterval_Callback_1(this, handle); @DomName('WorkerGlobalScope.clearTimeout') @DocsEditable() @Experimental() // untriaged - void _clearTimeout(int handle) => _blink.BlinkWorkerGlobalScope.clearTimeout_Callback_long(this, handle); + void _clearTimeout(int handle) => _blink.BlinkWorkerGlobalScope.clearTimeout_Callback_1(this, handle); @DomName('WorkerGlobalScope.setInterval') @DocsEditable() @Experimental() // untriaged - int _setInterval(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.setInterval_Callback_ScriptValue_long(this, handler, timeout); + int _setInterval(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.setInterval_Callback_2(this, handler, timeout); @DomName('WorkerGlobalScope.setTimeout') @DocsEditable() @Experimental() // untriaged - int _setTimeout(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.setTimeout_Callback_ScriptValue_long(this, handler, timeout); + int _setTimeout(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.setTimeout_Callback_2(this, handler, timeout); /// Stream of `error` events handled by this [WorkerGlobalScope]. @DomName('WorkerGlobalScope.onerror') @@ -34363,15 +34538,15 @@ class XPathEvaluator extends NativeFieldWrapperClass2 { @DomName('XPathEvaluator.createExpression') @DocsEditable() - XPathExpression createExpression(String expression, XPathNSResolver resolver) => _blink.BlinkXPathEvaluator.createExpression_Callback_DOMString_XPathNSResolver(this, expression, resolver); + XPathExpression createExpression(String expression, XPathNSResolver resolver) => _blink.BlinkXPathEvaluator.createExpression_Callback_2(this, expression, resolver); @DomName('XPathEvaluator.createNSResolver') @DocsEditable() - XPathNSResolver createNSResolver(Node nodeResolver) => _blink.BlinkXPathEvaluator.createNSResolver_Callback_Node(this, nodeResolver); + XPathNSResolver createNSResolver(Node nodeResolver) => _blink.BlinkXPathEvaluator.createNSResolver_Callback_1(this, nodeResolver); @DomName('XPathEvaluator.evaluate') @DocsEditable() - XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, int type, XPathResult inResult) => _blink.BlinkXPathEvaluator.evaluate_Callback_DOMString_Node_XPathNSResolver_us_XPathResult(this, expression, contextNode, resolver, type, inResult); + XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, int type, XPathResult inResult) => _blink.BlinkXPathEvaluator.evaluate_Callback_5(this, expression, contextNode, resolver, type, inResult); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34391,7 +34566,7 @@ class XPathExpression extends NativeFieldWrapperClass2 { @DomName('XPathExpression.evaluate') @DocsEditable() - XPathResult evaluate(Node contextNode, int type, XPathResult inResult) => _blink.BlinkXPathExpression.evaluate_Callback_Node_us_XPathResult(this, contextNode, type, inResult); + XPathResult evaluate(Node contextNode, int type, XPathResult inResult) => _blink.BlinkXPathExpression.evaluate_Callback_3(this, contextNode, type, inResult); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34411,7 +34586,7 @@ class XPathNSResolver extends NativeFieldWrapperClass2 { @DomName('XPathNSResolver.lookupNamespaceURI') @DocsEditable() - String lookupNamespaceUri(String prefix) => _blink.BlinkXPathNSResolver.lookupNamespaceURI_Callback_DOMString(this, prefix); + String lookupNamespaceUri(String prefix) => _blink.BlinkXPathNSResolver.lookupNamespaceURI_Callback_1(this, prefix); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34503,7 +34678,7 @@ class XPathResult extends NativeFieldWrapperClass2 { @DomName('XPathResult.snapshotItem') @DocsEditable() - Node snapshotItem(int index) => _blink.BlinkXPathResult.snapshotItem_Callback_ul(this, index); + Node snapshotItem(int index) => _blink.BlinkXPathResult.snapshotItem_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34544,7 +34719,7 @@ class XmlSerializer extends NativeFieldWrapperClass2 { @DomName('XMLSerializer.serializeToString') @DocsEditable() - String serializeToString(Node node) => _blink.BlinkXMLSerializer.serializeToString_Callback_Node(this, node); + String serializeToString(Node node) => _blink.BlinkXMLSerializer.serializeToString_Callback_1(this, node); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34579,15 +34754,15 @@ class XsltProcessor extends NativeFieldWrapperClass2 { @DomName('XSLTProcessor.getParameter') @DocsEditable() - String getParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.getParameter_Callback_DOMString_DOMString(this, namespaceURI, localName); + String getParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.getParameter_Callback_2(this, namespaceURI, localName); @DomName('XSLTProcessor.importStylesheet') @DocsEditable() - void importStylesheet(Node stylesheet) => _blink.BlinkXSLTProcessor.importStylesheet_Callback_Node(this, stylesheet); + void importStylesheet(Node stylesheet) => _blink.BlinkXSLTProcessor.importStylesheet_Callback_1(this, stylesheet); @DomName('XSLTProcessor.removeParameter') @DocsEditable() - void removeParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.removeParameter_Callback_DOMString_DOMString(this, namespaceURI, localName); + void removeParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.removeParameter_Callback_2(this, namespaceURI, localName); @DomName('XSLTProcessor.reset') @DocsEditable() @@ -34595,15 +34770,15 @@ class XsltProcessor extends NativeFieldWrapperClass2 { @DomName('XSLTProcessor.setParameter') @DocsEditable() - void setParameter(String namespaceURI, String localName, String value) => _blink.BlinkXSLTProcessor.setParameter_Callback_DOMString_DOMString_DOMString(this, namespaceURI, localName, value); + void setParameter(String namespaceURI, String localName, String value) => _blink.BlinkXSLTProcessor.setParameter_Callback_3(this, namespaceURI, localName, value); @DomName('XSLTProcessor.transformToDocument') @DocsEditable() - Document transformToDocument(Node source) => _blink.BlinkXSLTProcessor.transformToDocument_Callback_Node(this, source); + Document transformToDocument(Node source) => _blink.BlinkXSLTProcessor.transformToDocument_Callback_1(this, source); @DomName('XSLTProcessor.transformToFragment') @DocsEditable() - DocumentFragment transformToFragment(Node source, Document docVal) => _blink.BlinkXSLTProcessor.transformToFragment_Callback_Node_Document(this, source, docVal); + DocumentFragment transformToFragment(Node source, Document docVal) => _blink.BlinkXSLTProcessor.transformToFragment_Callback_2(this, source, docVal); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34646,7 +34821,7 @@ class _Attr extends Node { @DomName('Attr.textContent') @DocsEditable() @Experimental() // untriaged - void set text(String value) => _blink.BlinkAttr.textContent_Setter_DOMString(this, value); + void set text(String value) => _blink.BlinkAttr.textContent_Setter(this, value); @DomName('Attr.value') @DocsEditable() @@ -34654,7 +34829,7 @@ class _Attr extends Node { @DomName('Attr.value') @DocsEditable() - void set value(String value) => _blink.BlinkAttr.value_Setter_DOMString(this, value); + void set value(String value) => _blink.BlinkAttr.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -34917,10 +35092,10 @@ class _ClientRectList extends NativeFieldWrapperClass2 with ListMixin Rectangle operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkClientRectList.item_Callback_ul(this, index); + return _blink.BlinkClientRectList.item_Callback_1(this, index); } - Rectangle _nativeIndexedGetter(int index) => _blink.BlinkClientRectList.item_Callback_ul(this, index); + Rectangle _nativeIndexedGetter(int index) => _blink.BlinkClientRectList.item_Callback_1(this, index); void operator[]=(int index, Rectangle value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -34962,7 +35137,7 @@ class _ClientRectList extends NativeFieldWrapperClass2 with ListMixin @DomName('ClientRectList.item') @DocsEditable() - Rectangle item(int index) => _blink.BlinkClientRectList.item_Callback_ul(this, index); + Rectangle item(int index) => _blink.BlinkClientRectList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35001,10 +35176,10 @@ class _CssRuleList extends NativeFieldWrapperClass2 with ListMixin, Imm CssRule operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkCSSRuleList.item_Callback_ul(this, index); + return _blink.BlinkCSSRuleList.item_Callback_1(this, index); } - CssRule _nativeIndexedGetter(int index) => _blink.BlinkCSSRuleList.item_Callback_ul(this, index); + CssRule _nativeIndexedGetter(int index) => _blink.BlinkCSSRuleList.item_Callback_1(this, index); void operator[]=(int index, CssRule value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -35046,7 +35221,7 @@ class _CssRuleList extends NativeFieldWrapperClass2 with ListMixin, Imm @DomName('CSSRuleList.item') @DocsEditable() - CssRule item(int index) => _blink.BlinkCSSRuleList.item_Callback_ul(this, index); + CssRule item(int index) => _blink.BlinkCSSRuleList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35071,10 +35246,10 @@ class _CssValueList extends _CSSValue with ListMixin<_CSSValue>, ImmutableListMi _CSSValue operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkCSSValueList.item_Callback_ul(this, index); + return _blink.BlinkCSSValueList.item_Callback_1(this, index); } - _CSSValue _nativeIndexedGetter(int index) => _blink.BlinkCSSValueList.item_Callback_ul(this, index); + _CSSValue _nativeIndexedGetter(int index) => _blink.BlinkCSSValueList.item_Callback_1(this, index); void operator[]=(int index, _CSSValue value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -35116,7 +35291,7 @@ class _CssValueList extends _CSSValue with ListMixin<_CSSValue>, ImmutableListMi @DomName('CSSValueList.item') @DocsEditable() - _CSSValue item(int index) => _blink.BlinkCSSValueList.item_Callback_ul(this, index); + _CSSValue item(int index) => _blink.BlinkCSSValueList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35226,7 +35401,7 @@ class _DomPoint extends NativeFieldWrapperClass2 { factory _DomPoint(num x, num y) => _create(x, y); @DocsEditable() - static _DomPoint _create(x, y) => _blink.BlinkWebKitPoint.constructorCallback_float_float(x, y); + static _DomPoint _create(x, y) => _blink.BlinkWebKitPoint.constructorCallback_2(x, y); /// Checks if this type is supported on the current platform. static bool get supported => true; @@ -35237,7 +35412,7 @@ class _DomPoint extends NativeFieldWrapperClass2 { @DomName('WebKitPoint.x') @DocsEditable() - void set x(num value) => _blink.BlinkWebKitPoint.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkWebKitPoint.x_Setter(this, value); @DomName('WebKitPoint.y') @DocsEditable() @@ -35245,7 +35420,7 @@ class _DomPoint extends NativeFieldWrapperClass2 { @DomName('WebKitPoint.y') @DocsEditable() - void set y(num value) => _blink.BlinkWebKitPoint.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkWebKitPoint.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35266,16 +35441,16 @@ class _DomRect extends DomRectReadOnly { @DocsEditable() factory _DomRect([num x, num y, num width, num height]) { if (height != null) { - return _blink.BlinkDOMRect.constructorCallback_double_double_double_double(x, y, width, height); + return _blink.BlinkDOMRect.constructorCallback_4(x, y, width, height); } if (width != null) { - return _blink.BlinkDOMRect.constructorCallback_double_double_double(x, y, width); + return _blink.BlinkDOMRect.constructorCallback_3(x, y, width); } if (y != null) { - return _blink.BlinkDOMRect.constructorCallback_double_double(x, y); + return _blink.BlinkDOMRect.constructorCallback_2(x, y); } if (x != null) { - return _blink.BlinkDOMRect.constructorCallback_double(x); + return _blink.BlinkDOMRect.constructorCallback_1(x); } return _blink.BlinkDOMRect.constructorCallback(); } @@ -35288,7 +35463,7 @@ class _DomRect extends DomRectReadOnly { @DomName('DOMRect.height') @DocsEditable() @Experimental() // untriaged - void set height(num value) => _blink.BlinkDOMRect.height_Setter_double(this, value); + void set height(num value) => _blink.BlinkDOMRect.height_Setter(this, value); @DomName('DOMRect.width') @DocsEditable() @@ -35298,7 +35473,7 @@ class _DomRect extends DomRectReadOnly { @DomName('DOMRect.width') @DocsEditable() @Experimental() // untriaged - void set width(num value) => _blink.BlinkDOMRect.width_Setter_double(this, value); + void set width(num value) => _blink.BlinkDOMRect.width_Setter(this, value); @DomName('DOMRect.x') @DocsEditable() @@ -35308,7 +35483,7 @@ class _DomRect extends DomRectReadOnly { @DomName('DOMRect.x') @DocsEditable() @Experimental() // untriaged - void set x(num value) => _blink.BlinkDOMRect.x_Setter_double(this, value); + void set x(num value) => _blink.BlinkDOMRect.x_Setter(this, value); @DomName('DOMRect.y') @DocsEditable() @@ -35318,7 +35493,7 @@ class _DomRect extends DomRectReadOnly { @DomName('DOMRect.y') @DocsEditable() @Experimental() // untriaged - void set y(num value) => _blink.BlinkDOMRect.y_Setter_double(this, value); + void set y(num value) => _blink.BlinkDOMRect.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35413,10 +35588,10 @@ class _GamepadList extends NativeFieldWrapperClass2 with ListMixin, Imm Gamepad operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkGamepadList.item_Callback_ul(this, index); + return _blink.BlinkGamepadList.item_Callback_1(this, index); } - Gamepad _nativeIndexedGetter(int index) => _blink.BlinkGamepadList.item_Callback_ul(this, index); + Gamepad _nativeIndexedGetter(int index) => _blink.BlinkGamepadList.item_Callback_1(this, index); void operator[]=(int index, Gamepad value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -35458,7 +35633,7 @@ class _GamepadList extends NativeFieldWrapperClass2 with ListMixin, Imm @DomName('GamepadList.item') @DocsEditable() - Gamepad item(int index) => _blink.BlinkGamepadList.item_Callback_ul(this, index); + Gamepad item(int index) => _blink.BlinkGamepadList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35478,7 +35653,7 @@ abstract class _HTMLAllCollection extends NativeFieldWrapperClass2 { @DomName('HTMLAllCollection.item') @DocsEditable() - Element _item(int index) => _blink.BlinkHTMLAllCollection.item_Callback_ul(this, index); + Element _item(int index) => _blink.BlinkHTMLAllCollection.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35657,10 +35832,10 @@ class _NamedNodeMap extends NativeFieldWrapperClass2 with ListMixin, Immut Node operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkNamedNodeMap.item_Callback_ul(this, index); + return _blink.BlinkNamedNodeMap.item_Callback_1(this, index); } - Node _nativeIndexedGetter(int index) => _blink.BlinkNamedNodeMap.item_Callback_ul(this, index); + Node _nativeIndexedGetter(int index) => _blink.BlinkNamedNodeMap.item_Callback_1(this, index); void operator[]=(int index, Node value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -35702,35 +35877,35 @@ class _NamedNodeMap extends NativeFieldWrapperClass2 with ListMixin, Immut @DomName('NamedNodeMap.__getter__') @DocsEditable() - Node __getter__(String name) => _blink.BlinkNamedNodeMap.$__getter___Callback_DOMString(this, name); + Node __getter__(String name) => _blink.BlinkNamedNodeMap.$__getter___Callback_1(this, name); @DomName('NamedNodeMap.getNamedItem') @DocsEditable() - Node getNamedItem(String name) => _blink.BlinkNamedNodeMap.getNamedItem_Callback_DOMString(this, name); + Node getNamedItem(String name) => _blink.BlinkNamedNodeMap.getNamedItem_Callback_1(this, name); @DomName('NamedNodeMap.getNamedItemNS') @DocsEditable() - Node getNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.getNamedItemNS_Callback_DOMString_DOMString(this, namespaceURI, localName); + Node getNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.getNamedItemNS_Callback_2(this, namespaceURI, localName); @DomName('NamedNodeMap.item') @DocsEditable() - Node item(int index) => _blink.BlinkNamedNodeMap.item_Callback_ul(this, index); + Node item(int index) => _blink.BlinkNamedNodeMap.item_Callback_1(this, index); @DomName('NamedNodeMap.removeNamedItem') @DocsEditable() - Node removeNamedItem(String name) => _blink.BlinkNamedNodeMap.removeNamedItem_Callback_DOMString(this, name); + Node removeNamedItem(String name) => _blink.BlinkNamedNodeMap.removeNamedItem_Callback_1(this, name); @DomName('NamedNodeMap.removeNamedItemNS') @DocsEditable() - Node removeNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.removeNamedItemNS_Callback_DOMString_DOMString(this, namespaceURI, localName); + Node removeNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.removeNamedItemNS_Callback_2(this, namespaceURI, localName); @DomName('NamedNodeMap.setNamedItem') @DocsEditable() - Node setNamedItem(Node node) => _blink.BlinkNamedNodeMap.setNamedItem_Callback_Node(this, node); + Node setNamedItem(Node node) => _blink.BlinkNamedNodeMap.setNamedItem_Callback_1(this, node); @DomName('NamedNodeMap.setNamedItemNS') @DocsEditable() - Node setNamedItemNS(Node node) => _blink.BlinkNamedNodeMap.setNamedItemNS_Callback_Node(this, node); + Node setNamedItemNS(Node node) => _blink.BlinkNamedNodeMap.setNamedItemNS_Callback_1(this, node); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -35825,16 +36000,16 @@ class _Request extends NativeFieldWrapperClass2 { @DocsEditable() factory _Request(input, [Map requestInitDict]) { if ((input is String || input == null) && requestInitDict == null) { - return _blink.BlinkRequest.constructorCallback_DOMString(input); + return _blink.BlinkRequest.constructorCallback_1(input); } if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) { - return _blink.BlinkRequest.constructorCallback_DOMString_Dictionary(input, requestInitDict); + return _blink.BlinkRequest.constructorCallback_2(input, requestInitDict); } if ((input is _Request || input == null) && requestInitDict == null) { - return _blink.BlinkRequest.constructorCallback_Request(input); + return _blink.BlinkRequest.constructorCallback_1(input); } if ((requestInitDict is Map || requestInitDict == null) && (input is _Request || input == null)) { - return _blink.BlinkRequest.constructorCallback_Request_Dictionary(input, requestInitDict); + return _blink.BlinkRequest.constructorCallback_2(input, requestInitDict); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -35883,16 +36058,16 @@ abstract class _Response extends NativeFieldWrapperClass2 { @DocsEditable() factory _Response(body, [Map responseInitDict]) { if ((body is String || body == null) && responseInitDict == null) { - return _blink.BlinkResponse.constructorCallback_DOMString(body); + return _blink.BlinkResponse.constructorCallback_1(body); } if ((responseInitDict is Map || responseInitDict == null) && (body is String || body == null)) { - return _blink.BlinkResponse.constructorCallback_DOMString_Dictionary(body, responseInitDict); + return _blink.BlinkResponse.constructorCallback_2(body, responseInitDict); } if ((body is Blob || body == null) && responseInitDict == null) { - return _blink.BlinkResponse.constructorCallback_Blob(body); + return _blink.BlinkResponse.constructorCallback_1(body); } if ((responseInitDict is Map || responseInitDict == null) && (body is Blob || body == null)) { - return _blink.BlinkResponse.constructorCallback_Blob_Dictionary(body, responseInitDict); + return _blink.BlinkResponse.constructorCallback_2(body, responseInitDict); } throw new ArgumentError("Incorrect number or type of arguments"); } @@ -35935,10 +36110,10 @@ class _SpeechRecognitionResultList extends NativeFieldWrapperClass2 with ListMix SpeechRecognitionResult operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkSpeechRecognitionResultList.item_Callback_ul(this, index); + return _blink.BlinkSpeechRecognitionResultList.item_Callback_1(this, index); } - SpeechRecognitionResult _nativeIndexedGetter(int index) => _blink.BlinkSpeechRecognitionResultList.item_Callback_ul(this, index); + SpeechRecognitionResult _nativeIndexedGetter(int index) => _blink.BlinkSpeechRecognitionResultList.item_Callback_1(this, index); void operator[]=(int index, SpeechRecognitionResult value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -35980,7 +36155,7 @@ class _SpeechRecognitionResultList extends NativeFieldWrapperClass2 with ListMix @DomName('SpeechRecognitionResultList.item') @DocsEditable() - SpeechRecognitionResult item(int index) => _blink.BlinkSpeechRecognitionResultList.item_Callback_ul(this, index); + SpeechRecognitionResult item(int index) => _blink.BlinkSpeechRecognitionResultList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -36003,10 +36178,10 @@ class _StyleSheetList extends NativeFieldWrapperClass2 with ListMixin= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkStyleSheetList.item_Callback_ul(this, index); + return _blink.BlinkStyleSheetList.item_Callback_1(this, index); } - StyleSheet _nativeIndexedGetter(int index) => _blink.BlinkStyleSheetList.item_Callback_ul(this, index); + StyleSheet _nativeIndexedGetter(int index) => _blink.BlinkStyleSheetList.item_Callback_1(this, index); void operator[]=(int index, StyleSheet value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -36048,11 +36223,11 @@ class _StyleSheetList extends NativeFieldWrapperClass2 with ListMixin _blink.BlinkStyleSheetList.$__getter___Callback_DOMString(this, name); + CssStyleSheet __getter__(String name) => _blink.BlinkStyleSheetList.$__getter___Callback_1(this, name); @DomName('StyleSheetList.item') @DocsEditable() - StyleSheet item(int index) => _blink.BlinkStyleSheetList.item_Callback_ul(this, index); + StyleSheet item(int index) => _blink.BlinkStyleSheetList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -36107,7 +36282,7 @@ abstract class _WebKitCSSMatrix extends NativeFieldWrapperClass2 { @DomName('WebKitCSSMatrix.WebKitCSSMatrix') @DocsEditable() factory _WebKitCSSMatrix([String cssValue]) { - return _blink.BlinkWebKitCSSMatrix.constructorCallback_DOMString(cssValue); + return _blink.BlinkWebKitCSSMatrix.constructorCallback_1(cssValue); } } @@ -36144,22 +36319,22 @@ abstract class _WindowTimers extends NativeFieldWrapperClass2 { @DomName('WindowTimers.clearInterval') @DocsEditable() @Experimental() // untriaged - void _clearInterval(int handle) => _blink.BlinkWindowTimers.clearInterval_Callback_long(this, handle); + void _clearInterval(int handle) => _blink.BlinkWindowTimers.clearInterval_Callback_1(this, handle); @DomName('WindowTimers.clearTimeout') @DocsEditable() @Experimental() // untriaged - void _clearTimeout(int handle) => _blink.BlinkWindowTimers.clearTimeout_Callback_long(this, handle); + void _clearTimeout(int handle) => _blink.BlinkWindowTimers.clearTimeout_Callback_1(this, handle); @DomName('WindowTimers.setInterval') @DocsEditable() @Experimental() // untriaged - int _setInterval(Object handler, int timeout) => _blink.BlinkWindowTimers.setInterval_Callback_ScriptValue_long(this, handler, timeout); + int _setInterval(Object handler, int timeout) => _blink.BlinkWindowTimers.setInterval_Callback_2(this, handler, timeout); @DomName('WindowTimers.setTimeout') @DocsEditable() @Experimental() // untriaged - int _setTimeout(Object handler, int timeout) => _blink.BlinkWindowTimers.setTimeout_Callback_ScriptValue_long(this, handler, timeout); + int _setTimeout(Object handler, int timeout) => _blink.BlinkWindowTimers.setTimeout_Callback_2(this, handler, timeout); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file diff --git a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart index bd7a009dd3cb..2360ca5a0cd9 100644 --- a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart +++ b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart @@ -96,25 +96,29 @@ class Cursor extends NativeFieldWrapperClass2 { @DomName('IDBCursor.advance') @DocsEditable() - void advance(int count) => _blink.BlinkIDBCursor.advance_Callback_ul(this, count); + void advance(int count) => _blink.BlinkIDBCursor.advance_Callback_1(this, count); @DomName('IDBCursor.continuePrimaryKey') @DocsEditable() @Experimental() // untriaged - void continuePrimaryKey(Object key, Object primaryKey) => _blink.BlinkIDBCursor.continuePrimaryKey_Callback_ScriptValue_ScriptValue(this, key, primaryKey); + void continuePrimaryKey(Object key, Object primaryKey) => _blink.BlinkIDBCursor.continuePrimaryKey_Callback_2(this, key, primaryKey); @DomName('IDBCursor.delete') @DocsEditable() Request _delete() => _blink.BlinkIDBCursor.delete_Callback(this); - @DomName('IDBCursor.next') - @DocsEditable() - @Experimental() // non-standard - void next([Object key]) => _blink.BlinkIDBCursor.continue_Callback_ScriptValue(this, key); + void next([Object key]) { + if (key != null) { + _blink.BlinkIDBCursor.continue_Callback_1(this, key); + return; + } + _blink.BlinkIDBCursor.continue_Callback(this); + return; + } @DomName('IDBCursor.update') @DocsEditable() - Request _update(Object value) => _blink.BlinkIDBCursor.update_Callback_ScriptValue(this, value); + Request _update(Object value) => _blink.BlinkIDBCursor.update_Callback_1(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -230,55 +234,58 @@ class Database extends EventTarget { @DocsEditable() void close() => _blink.BlinkIDBDatabase.close_Callback(this); - @DomName('IDBDatabase.createObjectStore') - @DocsEditable() - ObjectStore _createObjectStore(String name, [Map options]) => _blink.BlinkIDBDatabase.createObjectStore_Callback_DOMString_Dictionary(this, name, options); + ObjectStore _createObjectStore(String name, [Map options]) { + if (options != null) { + return _blink.BlinkIDBDatabase.createObjectStore_Callback_2(this, name, options); + } + return _blink.BlinkIDBDatabase.createObjectStore_Callback_1(this, name); + } @DomName('IDBDatabase.deleteObjectStore') @DocsEditable() - void deleteObjectStore(String name) => _blink.BlinkIDBDatabase.deleteObjectStore_Callback_DOMString(this, name); + void deleteObjectStore(String name) => _blink.BlinkIDBDatabase.deleteObjectStore_Callback_1(this, name); Transaction transaction(storeName_OR_storeNames, [String mode]) { if ((storeName_OR_storeNames is String || storeName_OR_storeNames == null) && mode == null) { - return _blink.BlinkIDBDatabase.transaction_Callback_DOMString(this, storeName_OR_storeNames); + return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName_OR_storeNames); } if ((mode is String || mode == null) && (storeName_OR_storeNames is String || storeName_OR_storeNames == null)) { - return _blink.BlinkIDBDatabase.transaction_Callback_DOMString_DOMString(this, storeName_OR_storeNames, mode); + return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName_OR_storeNames, mode); } if ((storeName_OR_storeNames is List || storeName_OR_storeNames == null) && mode == null) { - return _blink.BlinkIDBDatabase.transaction_Callback_SEQ_DOMString_SEQ(this, storeName_OR_storeNames); + return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName_OR_storeNames); } if ((mode is String || mode == null) && (storeName_OR_storeNames is List || storeName_OR_storeNames == null)) { - return _blink.BlinkIDBDatabase.transaction_Callback_SEQ_DOMString_SEQ_DOMString(this, storeName_OR_storeNames, mode); + return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName_OR_storeNames, mode); } if ((storeName_OR_storeNames is DomStringList || storeName_OR_storeNames == null) && mode == null) { - return _blink.BlinkIDBDatabase.transaction_Callback_DOMStringList(this, storeName_OR_storeNames); + return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName_OR_storeNames); } if ((mode is String || mode == null) && (storeName_OR_storeNames is DomStringList || storeName_OR_storeNames == null)) { - return _blink.BlinkIDBDatabase.transaction_Callback_DOMStringList_DOMString(this, storeName_OR_storeNames, mode); + return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName_OR_storeNames, mode); } throw new ArgumentError("Incorrect number or type of arguments"); } Transaction transactionList(List storeNames, [String mode]) { if (mode != null) { - return _blink.BlinkIDBDatabase.transaction_Callback_SEQ_DOMString_SEQ_DOMString(this, storeNames, mode); + return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeNames, mode); } - return _blink.BlinkIDBDatabase.transaction_Callback_SEQ_DOMString_SEQ(this, storeNames); + return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeNames); } Transaction transactionStore(String storeName, [String mode]) { if (mode != null) { - return _blink.BlinkIDBDatabase.transaction_Callback_DOMString_DOMString(this, storeName, mode); + return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName, mode); } - return _blink.BlinkIDBDatabase.transaction_Callback_DOMString(this, storeName); + return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName); } Transaction transactionStores(List storeNames, [String mode]) { if (mode != null) { - return _blink.BlinkIDBDatabase.transaction_Callback_DOMStringList_DOMString(this, storeNames, mode); + return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeNames, mode); } - return _blink.BlinkIDBDatabase.transaction_Callback_DOMStringList(this, storeNames); + return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeNames); } /// Stream of `abort` events handled by this [Database]. @@ -395,17 +402,17 @@ class IdbFactory extends NativeFieldWrapperClass2 { @DomName('IDBFactory.cmp') @DocsEditable() - int cmp(Object first, Object second) => _blink.BlinkIDBFactory.cmp_Callback_ScriptValue_ScriptValue(this, first, second); + int cmp(Object first, Object second) => _blink.BlinkIDBFactory.cmp_Callback_2(this, first, second); @DomName('IDBFactory.deleteDatabase') @DocsEditable() - OpenDBRequest _deleteDatabase(String name) => _blink.BlinkIDBFactory.deleteDatabase_Callback_DOMString(this, name); + OpenDBRequest _deleteDatabase(String name) => _blink.BlinkIDBFactory.deleteDatabase_Callback_1(this, name); OpenDBRequest _open(String name, [int version]) { if (version != null) { - return _blink.BlinkIDBFactory.open_Callback_DOMString_ull(this, name, version); + return _blink.BlinkIDBFactory.open_Callback_2(this, name, version); } - return _blink.BlinkIDBFactory.open_Callback_DOMString(this, name); + return _blink.BlinkIDBFactory.open_Callback_1(this, name); } @DomName('IDBFactory.webkitGetDatabaseNames') @@ -553,28 +560,28 @@ class Index extends NativeFieldWrapperClass2 { @DomName('IDBIndex.count') @DocsEditable() - Request _count(Object key) => _blink.BlinkIDBIndex.count_Callback_ScriptValue(this, key); + Request _count(Object key) => _blink.BlinkIDBIndex.count_Callback_1(this, key); @DomName('IDBIndex.get') @DocsEditable() - Request _get(Object key) => _blink.BlinkIDBIndex.get_Callback_ScriptValue(this, key); + Request _get(Object key) => _blink.BlinkIDBIndex.get_Callback_1(this, key); @DomName('IDBIndex.getKey') @DocsEditable() - Request _getKey(Object key) => _blink.BlinkIDBIndex.getKey_Callback_ScriptValue(this, key); + Request _getKey(Object key) => _blink.BlinkIDBIndex.getKey_Callback_1(this, key); Request _openCursor(Object range, [String direction]) { if (direction != null) { - return _blink.BlinkIDBIndex.openCursor_Callback_ScriptValue_DOMString(this, range, direction); + return _blink.BlinkIDBIndex.openCursor_Callback_2(this, range, direction); } - return _blink.BlinkIDBIndex.openCursor_Callback_ScriptValue(this, range); + return _blink.BlinkIDBIndex.openCursor_Callback_1(this, range); } Request _openKeyCursor(Object range, [String direction]) { if (direction != null) { - return _blink.BlinkIDBIndex.openKeyCursor_Callback_ScriptValue_DOMString(this, range, direction); + return _blink.BlinkIDBIndex.openKeyCursor_Callback_2(this, range, direction); } - return _blink.BlinkIDBIndex.openKeyCursor_Callback_ScriptValue(this, range); + return _blink.BlinkIDBIndex.openKeyCursor_Callback_1(this, range); } } @@ -623,25 +630,34 @@ class KeyRange extends NativeFieldWrapperClass2 { @DocsEditable() bool get upperOpen => _blink.BlinkIDBKeyRange.upperOpen_Getter(this); - @DomName('IDBKeyRange.bound_') - @DocsEditable() - @Experimental() // non-standard - static KeyRange bound_(Object lower, Object upper, [bool lowerOpen, bool upperOpen]) => _blink.BlinkIDBKeyRange.bound_Callback_ScriptValue_ScriptValue_boolean_boolean(lower, upper, lowerOpen, upperOpen); + static KeyRange bound_(Object lower, Object upper, [bool lowerOpen, bool upperOpen]) { + if (upperOpen != null) { + return _blink.BlinkIDBKeyRange.bound_Callback_4(lower, upper, lowerOpen, upperOpen); + } + if (lowerOpen != null) { + return _blink.BlinkIDBKeyRange.bound_Callback_3(lower, upper, lowerOpen); + } + return _blink.BlinkIDBKeyRange.bound_Callback_2(lower, upper); + } - @DomName('IDBKeyRange.lowerBound_') - @DocsEditable() - @Experimental() // non-standard - static KeyRange lowerBound_(Object bound, [bool open]) => _blink.BlinkIDBKeyRange.lowerBound_Callback_ScriptValue_boolean(bound, open); + static KeyRange lowerBound_(Object bound, [bool open]) { + if (open != null) { + return _blink.BlinkIDBKeyRange.lowerBound_Callback_2(bound, open); + } + return _blink.BlinkIDBKeyRange.lowerBound_Callback_1(bound); + } @DomName('IDBKeyRange.only_') @DocsEditable() @Experimental() // non-standard - static KeyRange only_(Object value) => _blink.BlinkIDBKeyRange.only_Callback_ScriptValue(value); + static KeyRange only_(Object value) => _blink.BlinkIDBKeyRange.only_Callback_1(value); - @DomName('IDBKeyRange.upperBound_') - @DocsEditable() - @Experimental() // non-standard - static KeyRange upperBound_(Object bound, [bool open]) => _blink.BlinkIDBKeyRange.upperBound_Callback_ScriptValue_boolean(bound, open); + static KeyRange upperBound_(Object bound, [bool open]) { + if (open != null) { + return _blink.BlinkIDBKeyRange.upperBound_Callback_2(bound, open); + } + return _blink.BlinkIDBKeyRange.upperBound_Callback_1(bound); + } } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -802,9 +818,12 @@ class ObjectStore extends NativeFieldWrapperClass2 { @DocsEditable() Transaction get transaction => _blink.BlinkIDBObjectStore.transaction_Getter(this); - @DomName('IDBObjectStore.add') - @DocsEditable() - Request _add(Object value, [Object key]) => _blink.BlinkIDBObjectStore.add_Callback_ScriptValue_ScriptValue(this, value, key); + Request _add(Object value, [Object key]) { + if (key != null) { + return _blink.BlinkIDBObjectStore.add_Callback_2(this, value, key); + } + return _blink.BlinkIDBObjectStore.add_Callback_1(this, value); + } @DomName('IDBObjectStore.clear') @DocsEditable() @@ -812,48 +831,60 @@ class ObjectStore extends NativeFieldWrapperClass2 { @DomName('IDBObjectStore.count') @DocsEditable() - Request _count(Object key) => _blink.BlinkIDBObjectStore.count_Callback_ScriptValue(this, key); + Request _count(Object key) => _blink.BlinkIDBObjectStore.count_Callback_1(this, key); Index _createIndex(String name, keyPath, [Map options]) { + if ((keyPath is String || keyPath == null) && (name is String || name == null) && options == null) { + return _blink.BlinkIDBObjectStore.createIndex_Callback_2(this, name, keyPath); + } if ((options is Map || options == null) && (keyPath is String || keyPath == null) && (name is String || name == null)) { - return _blink.BlinkIDBObjectStore.createIndex_Callback_DOMString_DOMString_Dictionary(this, name, keyPath, options); + return _blink.BlinkIDBObjectStore.createIndex_Callback_3(this, name, keyPath, options); + } + if ((keyPath is List || keyPath == null) && (name is String || name == null) && options == null) { + return _blink.BlinkIDBObjectStore.createIndex_Callback_2(this, name, keyPath); } if ((options is Map || options == null) && (keyPath is List || keyPath == null) && (name is String || name == null)) { - return _blink.BlinkIDBObjectStore.createIndex_Callback_DOMString_SEQ_DOMString_SEQ_Dictionary(this, name, keyPath, options); + return _blink.BlinkIDBObjectStore.createIndex_Callback_3(this, name, keyPath, options); } throw new ArgumentError("Incorrect number or type of arguments"); } @DomName('IDBObjectStore.delete') @DocsEditable() - Request _delete(Object key) => _blink.BlinkIDBObjectStore.delete_Callback_ScriptValue(this, key); + Request _delete(Object key) => _blink.BlinkIDBObjectStore.delete_Callback_1(this, key); @DomName('IDBObjectStore.deleteIndex') @DocsEditable() - void deleteIndex(String name) => _blink.BlinkIDBObjectStore.deleteIndex_Callback_DOMString(this, name); + void deleteIndex(String name) => _blink.BlinkIDBObjectStore.deleteIndex_Callback_1(this, name); @DomName('IDBObjectStore.get') @DocsEditable() - Request _get(Object key) => _blink.BlinkIDBObjectStore.get_Callback_ScriptValue(this, key); + Request _get(Object key) => _blink.BlinkIDBObjectStore.get_Callback_1(this, key); @DomName('IDBObjectStore.index') @DocsEditable() - Index index(String name) => _blink.BlinkIDBObjectStore.index_Callback_DOMString(this, name); + Index index(String name) => _blink.BlinkIDBObjectStore.index_Callback_1(this, name); - @DomName('IDBObjectStore.openCursor') - @DocsEditable() - Request _openCursor(Object range, [String direction]) => _blink.BlinkIDBObjectStore.openCursor_Callback_ScriptValue_DOMString(this, range, direction); + Request _openCursor(Object range, [String direction]) { + if (direction != null) { + return _blink.BlinkIDBObjectStore.openCursor_Callback_2(this, range, direction); + } + return _blink.BlinkIDBObjectStore.openCursor_Callback_1(this, range); + } Request openKeyCursor(Object range, [String direction]) { if (direction != null) { - return _blink.BlinkIDBObjectStore.openKeyCursor_Callback_ScriptValue_DOMString(this, range, direction); + return _blink.BlinkIDBObjectStore.openKeyCursor_Callback_2(this, range, direction); } - return _blink.BlinkIDBObjectStore.openKeyCursor_Callback_ScriptValue(this, range); + return _blink.BlinkIDBObjectStore.openKeyCursor_Callback_1(this, range); } - @DomName('IDBObjectStore.put') - @DocsEditable() - Request _put(Object value, [Object key]) => _blink.BlinkIDBObjectStore.put_Callback_ScriptValue_ScriptValue(this, value, key); + Request _put(Object value, [Object key]) { + if (key != null) { + return _blink.BlinkIDBObjectStore.put_Callback_2(this, value, key); + } + return _blink.BlinkIDBObjectStore.put_Callback_1(this, value); + } /** @@ -1081,7 +1112,7 @@ class Transaction extends EventTarget { @DomName('IDBTransaction.objectStore') @DocsEditable() - ObjectStore objectStore(String name) => _blink.BlinkIDBTransaction.objectStore_Callback_DOMString(this, name); + ObjectStore objectStore(String name) => _blink.BlinkIDBTransaction.objectStore_Callback_1(this, name); /// Stream of `abort` events handled by this [Transaction]. @DomName('IDBTransaction.onabort') diff --git a/sdk/lib/svg/dartium/svg_dartium.dart b/sdk/lib/svg/dartium/svg_dartium.dart index 08bb81f1ff55..5cba7fbc1213 100644 --- a/sdk/lib/svg/dartium/svg_dartium.dart +++ b/sdk/lib/svg/dartium/svg_dartium.dart @@ -241,7 +241,7 @@ class AltGlyphElement extends TextPositioningElement implements UriReference { @DomName('SVGAltGlyphElement.format') @DocsEditable() - void set format(String value) => _blink.BlinkSVGAltGlyphElement.format_Setter_DOMString(this, value); + void set format(String value) => _blink.BlinkSVGAltGlyphElement.format_Setter(this, value); @DomName('SVGAltGlyphElement.glyphRef') @DocsEditable() @@ -249,7 +249,7 @@ class AltGlyphElement extends TextPositioningElement implements UriReference { @DomName('SVGAltGlyphElement.glyphRef') @DocsEditable() - void set glyphRef(String value) => _blink.BlinkSVGAltGlyphElement.glyphRef_Setter_DOMString(this, value); + void set glyphRef(String value) => _blink.BlinkSVGAltGlyphElement.glyphRef_Setter(this, value); @DomName('SVGAltGlyphElement.href') @DocsEditable() @@ -300,7 +300,7 @@ class Angle extends NativeFieldWrapperClass2 { @DomName('SVGAngle.value') @DocsEditable() - void set value(num value) => _blink.BlinkSVGAngle.value_Setter_float(this, value); + void set value(num value) => _blink.BlinkSVGAngle.value_Setter(this, value); @DomName('SVGAngle.valueAsString') @DocsEditable() @@ -308,7 +308,7 @@ class Angle extends NativeFieldWrapperClass2 { @DomName('SVGAngle.valueAsString') @DocsEditable() - void set valueAsString(String value) => _blink.BlinkSVGAngle.valueAsString_Setter_DOMString(this, value); + void set valueAsString(String value) => _blink.BlinkSVGAngle.valueAsString_Setter(this, value); @DomName('SVGAngle.valueInSpecifiedUnits') @DocsEditable() @@ -316,15 +316,15 @@ class Angle extends NativeFieldWrapperClass2 { @DomName('SVGAngle.valueInSpecifiedUnits') @DocsEditable() - void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.valueInSpecifiedUnits_Setter_float(this, value); + void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.valueInSpecifiedUnits_Setter(this, value); @DomName('SVGAngle.convertToSpecifiedUnits') @DocsEditable() - void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGAngle.convertToSpecifiedUnits_Callback_us(this, unitType); + void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGAngle.convertToSpecifiedUnits_Callback_1(this, unitType); @DomName('SVGAngle.newValueSpecifiedUnits') @DocsEditable() - void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGAngle.newValueSpecifiedUnits_Callback_us_float(this, unitType, valueInSpecifiedUnits); + void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGAngle.newValueSpecifiedUnits_Callback_2(this, unitType, valueInSpecifiedUnits); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -467,7 +467,7 @@ class AnimatedBoolean extends NativeFieldWrapperClass2 { @DomName('SVGAnimatedBoolean.baseVal') @DocsEditable() - void set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.baseVal_Setter_boolean(this, value); + void set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.baseVal_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -494,7 +494,7 @@ class AnimatedEnumeration extends NativeFieldWrapperClass2 { @DomName('SVGAnimatedEnumeration.baseVal') @DocsEditable() - void set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.baseVal_Setter_us(this, value); + void set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.baseVal_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -521,7 +521,7 @@ class AnimatedInteger extends NativeFieldWrapperClass2 { @DomName('SVGAnimatedInteger.baseVal') @DocsEditable() - void set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.baseVal_Setter_long(this, value); + void set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.baseVal_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -594,7 +594,7 @@ class AnimatedNumber extends NativeFieldWrapperClass2 { @DomName('SVGAnimatedNumber.baseVal') @DocsEditable() - void set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.baseVal_Setter_float(this, value); + void set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.baseVal_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -690,7 +690,7 @@ class AnimatedString extends NativeFieldWrapperClass2 { @DomName('SVGAnimatedString.baseVal') @DocsEditable() - void set baseVal(String value) => _blink.BlinkSVGAnimatedString.baseVal_Setter_DOMString(this, value); + void set baseVal(String value) => _blink.BlinkSVGAnimatedString.baseVal_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -750,7 +750,7 @@ class AnimationElement extends SvgElement implements Tests { @DomName('SVGAnimationElement.beginElementAt') @DocsEditable() - void beginElementAt(num offset) => _blink.BlinkSVGAnimationElement.beginElementAt_Callback_float(this, offset); + void beginElementAt(num offset) => _blink.BlinkSVGAnimationElement.beginElementAt_Callback_1(this, offset); @DomName('SVGAnimationElement.endElement') @DocsEditable() @@ -758,7 +758,7 @@ class AnimationElement extends SvgElement implements Tests { @DomName('SVGAnimationElement.endElementAt') @DocsEditable() - void endElementAt(num offset) => _blink.BlinkSVGAnimationElement.endElementAt_Callback_float(this, offset); + void endElementAt(num offset) => _blink.BlinkSVGAnimationElement.endElementAt_Callback_1(this, offset); @DomName('SVGAnimationElement.getCurrentTime') @DocsEditable() @@ -786,7 +786,7 @@ class AnimationElement extends SvgElement implements Tests { @DomName('SVGAnimationElement.hasExtension') @DocsEditable() - bool hasExtension(String extension) => _blink.BlinkSVGAnimationElement.hasExtension_Callback_DOMString(this, extension); + bool hasExtension(String extension) => _blink.BlinkSVGAnimationElement.hasExtension_Callback_1(this, extension); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1837,7 +1837,7 @@ class FEGaussianBlurElement extends SvgElement implements FilterPrimitiveStandar @DomName('SVGFEGaussianBlurElement.setStdDeviation') @DocsEditable() - void setStdDeviation(num stdDeviationX, num stdDeviationY) => _blink.BlinkSVGFEGaussianBlurElement.setStdDeviation_Callback_float_float(this, stdDeviationX, stdDeviationY); + void setStdDeviation(num stdDeviationX, num stdDeviationY) => _blink.BlinkSVGFEGaussianBlurElement.setStdDeviation_Callback_2(this, stdDeviationX, stdDeviationY); @DomName('SVGFEGaussianBlurElement.height') @DocsEditable() @@ -2542,7 +2542,7 @@ class FilterElement extends SvgElement implements UriReference { @DomName('SVGFilterElement.setFilterRes') @DocsEditable() - void setFilterRes(int filterResX, int filterResY) => _blink.BlinkSVGFilterElement.setFilterRes_Callback_ul_ul(this, filterResX, filterResY); + void setFilterRes(int filterResX, int filterResY) => _blink.BlinkSVGFilterElement.setFilterRes_Callback_2(this, filterResX, filterResY); @DomName('SVGFilterElement.href') @DocsEditable() @@ -2702,12 +2702,12 @@ class GeometryElement extends GraphicsElement { @DomName('SVGGeometryElement.isPointInFill') @DocsEditable() @Experimental() // untriaged - bool isPointInFill(Point point) => _blink.BlinkSVGGeometryElement.isPointInFill_Callback_SVGPoint(this, point); + bool isPointInFill(Point point) => _blink.BlinkSVGGeometryElement.isPointInFill_Callback_1(this, point); @DomName('SVGGeometryElement.isPointInStroke') @DocsEditable() @Experimental() // untriaged - bool isPointInStroke(Point point) => _blink.BlinkSVGGeometryElement.isPointInStroke_Callback_SVGPoint(this, point); + bool isPointInStroke(Point point) => _blink.BlinkSVGGeometryElement.isPointInStroke_Callback_1(this, point); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -2763,7 +2763,7 @@ class GraphicsElement extends SvgElement implements Tests { @DomName('SVGGraphicsElement.getTransformToElement') @DocsEditable() @Experimental() // untriaged - Matrix getTransformToElement(SvgElement element) => _blink.BlinkSVGGraphicsElement.getTransformToElement_Callback_SVGElement(this, element); + Matrix getTransformToElement(SvgElement element) => _blink.BlinkSVGGraphicsElement.getTransformToElement_Callback_1(this, element); @DomName('SVGGraphicsElement.requiredExtensions') @DocsEditable() @@ -2783,7 +2783,7 @@ class GraphicsElement extends SvgElement implements Tests { @DomName('SVGGraphicsElement.hasExtension') @DocsEditable() @Experimental() // untriaged - bool hasExtension(String extension) => _blink.BlinkSVGGraphicsElement.hasExtension_Callback_DOMString(this, extension); + bool hasExtension(String extension) => _blink.BlinkSVGGraphicsElement.hasExtension_Callback_1(this, extension); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -2903,7 +2903,7 @@ class Length extends NativeFieldWrapperClass2 { @DomName('SVGLength.value') @DocsEditable() - void set value(num value) => _blink.BlinkSVGLength.value_Setter_float(this, value); + void set value(num value) => _blink.BlinkSVGLength.value_Setter(this, value); @DomName('SVGLength.valueAsString') @DocsEditable() @@ -2911,7 +2911,7 @@ class Length extends NativeFieldWrapperClass2 { @DomName('SVGLength.valueAsString') @DocsEditable() - void set valueAsString(String value) => _blink.BlinkSVGLength.valueAsString_Setter_DOMString(this, value); + void set valueAsString(String value) => _blink.BlinkSVGLength.valueAsString_Setter(this, value); @DomName('SVGLength.valueInSpecifiedUnits') @DocsEditable() @@ -2919,15 +2919,15 @@ class Length extends NativeFieldWrapperClass2 { @DomName('SVGLength.valueInSpecifiedUnits') @DocsEditable() - void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.valueInSpecifiedUnits_Setter_float(this, value); + void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.valueInSpecifiedUnits_Setter(this, value); @DomName('SVGLength.convertToSpecifiedUnits') @DocsEditable() - void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGLength.convertToSpecifiedUnits_Callback_us(this, unitType); + void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGLength.convertToSpecifiedUnits_Callback_1(this, unitType); @DomName('SVGLength.newValueSpecifiedUnits') @DocsEditable() - void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGLength.newValueSpecifiedUnits_Callback_us_float(this, unitType, valueInSpecifiedUnits); + void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGLength.newValueSpecifiedUnits_Callback_2(this, unitType, valueInSpecifiedUnits); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3000,11 +3000,11 @@ class LengthList extends NativeFieldWrapperClass2 with ListMixin, Immuta @DomName('SVGLengthList.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(int index, Length value) => _blink.BlinkSVGLengthList.$__setter___Callback_ul_SVGLength(this, index, value); + void __setter__(int index, Length value) => _blink.BlinkSVGLengthList.$__setter___Callback_2(this, index, value); @DomName('SVGLengthList.appendItem') @DocsEditable() - Length appendItem(Length item) => _blink.BlinkSVGLengthList.appendItem_Callback_SVGLength(this, item); + Length appendItem(Length item) => _blink.BlinkSVGLengthList.appendItem_Callback_1(this, item); @DomName('SVGLengthList.clear') @DocsEditable() @@ -3012,23 +3012,23 @@ class LengthList extends NativeFieldWrapperClass2 with ListMixin, Immuta @DomName('SVGLengthList.getItem') @DocsEditable() - Length getItem(int index) => _blink.BlinkSVGLengthList.getItem_Callback_ul(this, index); + Length getItem(int index) => _blink.BlinkSVGLengthList.getItem_Callback_1(this, index); @DomName('SVGLengthList.initialize') @DocsEditable() - Length initialize(Length item) => _blink.BlinkSVGLengthList.initialize_Callback_SVGLength(this, item); + Length initialize(Length item) => _blink.BlinkSVGLengthList.initialize_Callback_1(this, item); @DomName('SVGLengthList.insertItemBefore') @DocsEditable() - Length insertItemBefore(Length item, int index) => _blink.BlinkSVGLengthList.insertItemBefore_Callback_SVGLength_ul(this, item, index); + Length insertItemBefore(Length item, int index) => _blink.BlinkSVGLengthList.insertItemBefore_Callback_2(this, item, index); @DomName('SVGLengthList.removeItem') @DocsEditable() - Length removeItem(int index) => _blink.BlinkSVGLengthList.removeItem_Callback_ul(this, index); + Length removeItem(int index) => _blink.BlinkSVGLengthList.removeItem_Callback_1(this, index); @DomName('SVGLengthList.replaceItem') @DocsEditable() - Length replaceItem(Length item, int index) => _blink.BlinkSVGLengthList.replaceItem_Callback_SVGLength_ul(this, item, index); + Length replaceItem(Length item, int index) => _blink.BlinkSVGLengthList.replaceItem_Callback_2(this, item, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3191,7 +3191,7 @@ class MarkerElement extends SvgElement implements FitToViewBox { @DomName('SVGMarkerElement.setOrientToAngle') @DocsEditable() - void setOrientToAngle(Angle angle) => _blink.BlinkSVGMarkerElement.setOrientToAngle_Callback_SVGAngle(this, angle); + void setOrientToAngle(Angle angle) => _blink.BlinkSVGMarkerElement.setOrientToAngle_Callback_1(this, angle); @DomName('SVGMarkerElement.setOrientToAuto') @DocsEditable() @@ -3268,7 +3268,7 @@ class MaskElement extends SvgElement implements Tests { @DomName('SVGMaskElement.hasExtension') @DocsEditable() - bool hasExtension(String extension) => _blink.BlinkSVGMaskElement.hasExtension_Callback_DOMString(this, extension); + bool hasExtension(String extension) => _blink.BlinkSVGMaskElement.hasExtension_Callback_1(this, extension); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3291,7 +3291,7 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.a') @DocsEditable() - void set a(num value) => _blink.BlinkSVGMatrix.a_Setter_double(this, value); + void set a(num value) => _blink.BlinkSVGMatrix.a_Setter(this, value); @DomName('SVGMatrix.b') @DocsEditable() @@ -3299,7 +3299,7 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.b') @DocsEditable() - void set b(num value) => _blink.BlinkSVGMatrix.b_Setter_double(this, value); + void set b(num value) => _blink.BlinkSVGMatrix.b_Setter(this, value); @DomName('SVGMatrix.c') @DocsEditable() @@ -3307,7 +3307,7 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.c') @DocsEditable() - void set c(num value) => _blink.BlinkSVGMatrix.c_Setter_double(this, value); + void set c(num value) => _blink.BlinkSVGMatrix.c_Setter(this, value); @DomName('SVGMatrix.d') @DocsEditable() @@ -3315,7 +3315,7 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.d') @DocsEditable() - void set d(num value) => _blink.BlinkSVGMatrix.d_Setter_double(this, value); + void set d(num value) => _blink.BlinkSVGMatrix.d_Setter(this, value); @DomName('SVGMatrix.e') @DocsEditable() @@ -3323,7 +3323,7 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.e') @DocsEditable() - void set e(num value) => _blink.BlinkSVGMatrix.e_Setter_double(this, value); + void set e(num value) => _blink.BlinkSVGMatrix.e_Setter(this, value); @DomName('SVGMatrix.f') @DocsEditable() @@ -3331,7 +3331,7 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.f') @DocsEditable() - void set f(num value) => _blink.BlinkSVGMatrix.f_Setter_double(this, value); + void set f(num value) => _blink.BlinkSVGMatrix.f_Setter(this, value); @DomName('SVGMatrix.flipX') @DocsEditable() @@ -3347,35 +3347,35 @@ class Matrix extends NativeFieldWrapperClass2 { @DomName('SVGMatrix.multiply') @DocsEditable() - Matrix multiply(Matrix secondMatrix) => _blink.BlinkSVGMatrix.multiply_Callback_SVGMatrix(this, secondMatrix); + Matrix multiply(Matrix secondMatrix) => _blink.BlinkSVGMatrix.multiply_Callback_1(this, secondMatrix); @DomName('SVGMatrix.rotate') @DocsEditable() - Matrix rotate(num angle) => _blink.BlinkSVGMatrix.rotate_Callback_float(this, angle); + Matrix rotate(num angle) => _blink.BlinkSVGMatrix.rotate_Callback_1(this, angle); @DomName('SVGMatrix.rotateFromVector') @DocsEditable() - Matrix rotateFromVector(num x, num y) => _blink.BlinkSVGMatrix.rotateFromVector_Callback_float_float(this, x, y); + Matrix rotateFromVector(num x, num y) => _blink.BlinkSVGMatrix.rotateFromVector_Callback_2(this, x, y); @DomName('SVGMatrix.scale') @DocsEditable() - Matrix scale(num scaleFactor) => _blink.BlinkSVGMatrix.scale_Callback_float(this, scaleFactor); + Matrix scale(num scaleFactor) => _blink.BlinkSVGMatrix.scale_Callback_1(this, scaleFactor); @DomName('SVGMatrix.scaleNonUniform') @DocsEditable() - Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => _blink.BlinkSVGMatrix.scaleNonUniform_Callback_float_float(this, scaleFactorX, scaleFactorY); + Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => _blink.BlinkSVGMatrix.scaleNonUniform_Callback_2(this, scaleFactorX, scaleFactorY); @DomName('SVGMatrix.skewX') @DocsEditable() - Matrix skewX(num angle) => _blink.BlinkSVGMatrix.skewX_Callback_float(this, angle); + Matrix skewX(num angle) => _blink.BlinkSVGMatrix.skewX_Callback_1(this, angle); @DomName('SVGMatrix.skewY') @DocsEditable() - Matrix skewY(num angle) => _blink.BlinkSVGMatrix.skewY_Callback_float(this, angle); + Matrix skewY(num angle) => _blink.BlinkSVGMatrix.skewY_Callback_1(this, angle); @DomName('SVGMatrix.translate') @DocsEditable() - Matrix translate(num x, num y) => _blink.BlinkSVGMatrix.translate_Callback_float_float(this, x, y); + Matrix translate(num x, num y) => _blink.BlinkSVGMatrix.translate_Callback_2(this, x, y); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3419,7 +3419,7 @@ class Number extends NativeFieldWrapperClass2 { @DomName('SVGNumber.value') @DocsEditable() - void set value(num value) => _blink.BlinkSVGNumber.value_Setter_float(this, value); + void set value(num value) => _blink.BlinkSVGNumber.value_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3492,11 +3492,11 @@ class NumberList extends NativeFieldWrapperClass2 with ListMixin, Immuta @DomName('SVGNumberList.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(int index, Number value) => _blink.BlinkSVGNumberList.$__setter___Callback_ul_SVGNumber(this, index, value); + void __setter__(int index, Number value) => _blink.BlinkSVGNumberList.$__setter___Callback_2(this, index, value); @DomName('SVGNumberList.appendItem') @DocsEditable() - Number appendItem(Number item) => _blink.BlinkSVGNumberList.appendItem_Callback_SVGNumber(this, item); + Number appendItem(Number item) => _blink.BlinkSVGNumberList.appendItem_Callback_1(this, item); @DomName('SVGNumberList.clear') @DocsEditable() @@ -3504,23 +3504,23 @@ class NumberList extends NativeFieldWrapperClass2 with ListMixin, Immuta @DomName('SVGNumberList.getItem') @DocsEditable() - Number getItem(int index) => _blink.BlinkSVGNumberList.getItem_Callback_ul(this, index); + Number getItem(int index) => _blink.BlinkSVGNumberList.getItem_Callback_1(this, index); @DomName('SVGNumberList.initialize') @DocsEditable() - Number initialize(Number item) => _blink.BlinkSVGNumberList.initialize_Callback_SVGNumber(this, item); + Number initialize(Number item) => _blink.BlinkSVGNumberList.initialize_Callback_1(this, item); @DomName('SVGNumberList.insertItemBefore') @DocsEditable() - Number insertItemBefore(Number item, int index) => _blink.BlinkSVGNumberList.insertItemBefore_Callback_SVGNumber_ul(this, item, index); + Number insertItemBefore(Number item, int index) => _blink.BlinkSVGNumberList.insertItemBefore_Callback_2(this, item, index); @DomName('SVGNumberList.removeItem') @DocsEditable() - Number removeItem(int index) => _blink.BlinkSVGNumberList.removeItem_Callback_ul(this, index); + Number removeItem(int index) => _blink.BlinkSVGNumberList.removeItem_Callback_1(this, index); @DomName('SVGNumberList.replaceItem') @DocsEditable() - Number replaceItem(Number item, int index) => _blink.BlinkSVGNumberList.replaceItem_Callback_SVGNumber_ul(this, item, index); + Number replaceItem(Number item, int index) => _blink.BlinkSVGNumberList.replaceItem_Callback_2(this, item, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3569,11 +3569,11 @@ class PathElement extends GeometryElement { @DomName('SVGPathElement.createSVGPathSegArcAbs') @DocsEditable() - PathSegArcAbs createSvgPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.createSVGPathSegArcAbs_Callback_float_float_float_float_float_boolean_boolean(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag); + PathSegArcAbs createSvgPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.createSVGPathSegArcAbs_Callback_7(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag); @DomName('SVGPathElement.createSVGPathSegArcRel') @DocsEditable() - PathSegArcRel createSvgPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.createSVGPathSegArcRel_Callback_float_float_float_float_float_boolean_boolean(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag); + PathSegArcRel createSvgPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.createSVGPathSegArcRel_Callback_7(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag); @DomName('SVGPathElement.createSVGPathSegClosePath') @DocsEditable() @@ -3581,75 +3581,75 @@ class PathElement extends GeometryElement { @DomName('SVGPathElement.createSVGPathSegCurvetoCubicAbs') @DocsEditable() - PathSegCurvetoCubicAbs createSvgPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicAbs_Callback_float_float_float_float_float_float(this, x, y, x1, y1, x2, y2); + PathSegCurvetoCubicAbs createSvgPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicAbs_Callback_6(this, x, y, x1, y1, x2, y2); @DomName('SVGPathElement.createSVGPathSegCurvetoCubicRel') @DocsEditable() - PathSegCurvetoCubicRel createSvgPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicRel_Callback_float_float_float_float_float_float(this, x, y, x1, y1, x2, y2); + PathSegCurvetoCubicRel createSvgPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicRel_Callback_6(this, x, y, x1, y1, x2, y2); @DomName('SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs') @DocsEditable() - PathSegCurvetoCubicSmoothAbs createSvgPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs_Callback_float_float_float_float(this, x, y, x2, y2); + PathSegCurvetoCubicSmoothAbs createSvgPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(this, x, y, x2, y2); @DomName('SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel') @DocsEditable() - PathSegCurvetoCubicSmoothRel createSvgPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicSmoothRel_Callback_float_float_float_float(this, x, y, x2, y2); + PathSegCurvetoCubicSmoothRel createSvgPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicSmoothRel_Callback_4(this, x, y, x2, y2); @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticAbs') @DocsEditable() - PathSegCurvetoQuadraticAbs createSvgPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticAbs_Callback_float_float_float_float(this, x, y, x1, y1); + PathSegCurvetoQuadraticAbs createSvgPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticAbs_Callback_4(this, x, y, x1, y1); @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticRel') @DocsEditable() - PathSegCurvetoQuadraticRel createSvgPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticRel_Callback_float_float_float_float(this, x, y, x1, y1); + PathSegCurvetoQuadraticRel createSvgPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticRel_Callback_4(this, x, y, x1, y1); @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs') @DocsEditable() - PathSegCurvetoQuadraticSmoothAbs createSvgPathSegCurvetoQuadraticSmoothAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_float_float(this, x, y); + PathSegCurvetoQuadraticSmoothAbs createSvgPathSegCurvetoQuadraticSmoothAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(this, x, y); @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel') @DocsEditable() - PathSegCurvetoQuadraticSmoothRel createSvgPathSegCurvetoQuadraticSmoothRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_float_float(this, x, y); + PathSegCurvetoQuadraticSmoothRel createSvgPathSegCurvetoQuadraticSmoothRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(this, x, y); @DomName('SVGPathElement.createSVGPathSegLinetoAbs') @DocsEditable() - PathSegLinetoAbs createSvgPathSegLinetoAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoAbs_Callback_float_float(this, x, y); + PathSegLinetoAbs createSvgPathSegLinetoAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoAbs_Callback_2(this, x, y); @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalAbs') @DocsEditable() - PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoHorizontalAbs_Callback_float(this, x); + PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoHorizontalAbs_Callback_1(this, x); @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalRel') @DocsEditable() - PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoHorizontalRel_Callback_float(this, x); + PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoHorizontalRel_Callback_1(this, x); @DomName('SVGPathElement.createSVGPathSegLinetoRel') @DocsEditable() - PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoRel_Callback_float_float(this, x, y); + PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoRel_Callback_2(this, x, y); @DomName('SVGPathElement.createSVGPathSegLinetoVerticalAbs') @DocsEditable() - PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoVerticalAbs_Callback_float(this, y); + PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoVerticalAbs_Callback_1(this, y); @DomName('SVGPathElement.createSVGPathSegLinetoVerticalRel') @DocsEditable() - PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoVerticalRel_Callback_float(this, y); + PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoVerticalRel_Callback_1(this, y); @DomName('SVGPathElement.createSVGPathSegMovetoAbs') @DocsEditable() - PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegMovetoAbs_Callback_float_float(this, x, y); + PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegMovetoAbs_Callback_2(this, x, y); @DomName('SVGPathElement.createSVGPathSegMovetoRel') @DocsEditable() - PathSegMovetoRel createSvgPathSegMovetoRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegMovetoRel_Callback_float_float(this, x, y); + PathSegMovetoRel createSvgPathSegMovetoRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegMovetoRel_Callback_2(this, x, y); @DomName('SVGPathElement.getPathSegAtLength') @DocsEditable() - int getPathSegAtLength(num distance) => _blink.BlinkSVGPathElement.getPathSegAtLength_Callback_float(this, distance); + int getPathSegAtLength(num distance) => _blink.BlinkSVGPathElement.getPathSegAtLength_Callback_1(this, distance); @DomName('SVGPathElement.getPointAtLength') @DocsEditable() - Point getPointAtLength(num distance) => _blink.BlinkSVGPathElement.getPointAtLength_Callback_float(this, distance); + Point getPointAtLength(num distance) => _blink.BlinkSVGPathElement.getPointAtLength_Callback_1(this, distance); @DomName('SVGPathElement.getTotalLength') @DocsEditable() @@ -3779,7 +3779,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.angle') @DocsEditable() - void set angle(num value) => _blink.BlinkSVGPathSegArcAbs.angle_Setter_float(this, value); + void set angle(num value) => _blink.BlinkSVGPathSegArcAbs.angle_Setter(this, value); @DomName('SVGPathSegArcAbs.largeArcFlag') @DocsEditable() @@ -3787,7 +3787,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.largeArcFlag') @DocsEditable() - void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.largeArcFlag_Setter_boolean(this, value); + void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.largeArcFlag_Setter(this, value); @DomName('SVGPathSegArcAbs.r1') @DocsEditable() @@ -3795,7 +3795,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.r1') @DocsEditable() - void set r1(num value) => _blink.BlinkSVGPathSegArcAbs.r1_Setter_float(this, value); + void set r1(num value) => _blink.BlinkSVGPathSegArcAbs.r1_Setter(this, value); @DomName('SVGPathSegArcAbs.r2') @DocsEditable() @@ -3803,7 +3803,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.r2') @DocsEditable() - void set r2(num value) => _blink.BlinkSVGPathSegArcAbs.r2_Setter_float(this, value); + void set r2(num value) => _blink.BlinkSVGPathSegArcAbs.r2_Setter(this, value); @DomName('SVGPathSegArcAbs.sweepFlag') @DocsEditable() @@ -3811,7 +3811,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.sweepFlag') @DocsEditable() - void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.sweepFlag_Setter_boolean(this, value); + void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.sweepFlag_Setter(this, value); @DomName('SVGPathSegArcAbs.x') @DocsEditable() @@ -3819,7 +3819,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegArcAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegArcAbs.x_Setter(this, value); @DomName('SVGPathSegArcAbs.y') @DocsEditable() @@ -3827,7 +3827,7 @@ class PathSegArcAbs extends PathSeg { @DomName('SVGPathSegArcAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegArcAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegArcAbs.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3850,7 +3850,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.angle') @DocsEditable() - void set angle(num value) => _blink.BlinkSVGPathSegArcRel.angle_Setter_float(this, value); + void set angle(num value) => _blink.BlinkSVGPathSegArcRel.angle_Setter(this, value); @DomName('SVGPathSegArcRel.largeArcFlag') @DocsEditable() @@ -3858,7 +3858,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.largeArcFlag') @DocsEditable() - void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.largeArcFlag_Setter_boolean(this, value); + void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.largeArcFlag_Setter(this, value); @DomName('SVGPathSegArcRel.r1') @DocsEditable() @@ -3866,7 +3866,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.r1') @DocsEditable() - void set r1(num value) => _blink.BlinkSVGPathSegArcRel.r1_Setter_float(this, value); + void set r1(num value) => _blink.BlinkSVGPathSegArcRel.r1_Setter(this, value); @DomName('SVGPathSegArcRel.r2') @DocsEditable() @@ -3874,7 +3874,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.r2') @DocsEditable() - void set r2(num value) => _blink.BlinkSVGPathSegArcRel.r2_Setter_float(this, value); + void set r2(num value) => _blink.BlinkSVGPathSegArcRel.r2_Setter(this, value); @DomName('SVGPathSegArcRel.sweepFlag') @DocsEditable() @@ -3882,7 +3882,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.sweepFlag') @DocsEditable() - void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.sweepFlag_Setter_boolean(this, value); + void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.sweepFlag_Setter(this, value); @DomName('SVGPathSegArcRel.x') @DocsEditable() @@ -3890,7 +3890,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegArcRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegArcRel.x_Setter(this, value); @DomName('SVGPathSegArcRel.y') @DocsEditable() @@ -3898,7 +3898,7 @@ class PathSegArcRel extends PathSeg { @DomName('SVGPathSegArcRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegArcRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegArcRel.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3936,7 +3936,7 @@ class PathSegCurvetoCubicAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x_Setter(this, value); @DomName('SVGPathSegCurvetoCubicAbs.x1') @DocsEditable() @@ -3944,7 +3944,7 @@ class PathSegCurvetoCubicAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicAbs.x1') @DocsEditable() - void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x1_Setter_float(this, value); + void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x1_Setter(this, value); @DomName('SVGPathSegCurvetoCubicAbs.x2') @DocsEditable() @@ -3952,7 +3952,7 @@ class PathSegCurvetoCubicAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicAbs.x2') @DocsEditable() - void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x2_Setter_float(this, value); + void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x2_Setter(this, value); @DomName('SVGPathSegCurvetoCubicAbs.y') @DocsEditable() @@ -3960,7 +3960,7 @@ class PathSegCurvetoCubicAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y_Setter(this, value); @DomName('SVGPathSegCurvetoCubicAbs.y1') @DocsEditable() @@ -3968,7 +3968,7 @@ class PathSegCurvetoCubicAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicAbs.y1') @DocsEditable() - void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y1_Setter_float(this, value); + void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y1_Setter(this, value); @DomName('SVGPathSegCurvetoCubicAbs.y2') @DocsEditable() @@ -3976,7 +3976,7 @@ class PathSegCurvetoCubicAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicAbs.y2') @DocsEditable() - void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y2_Setter_float(this, value); + void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y2_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -3999,7 +3999,7 @@ class PathSegCurvetoCubicRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x_Setter(this, value); @DomName('SVGPathSegCurvetoCubicRel.x1') @DocsEditable() @@ -4007,7 +4007,7 @@ class PathSegCurvetoCubicRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicRel.x1') @DocsEditable() - void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x1_Setter_float(this, value); + void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x1_Setter(this, value); @DomName('SVGPathSegCurvetoCubicRel.x2') @DocsEditable() @@ -4015,7 +4015,7 @@ class PathSegCurvetoCubicRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicRel.x2') @DocsEditable() - void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x2_Setter_float(this, value); + void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x2_Setter(this, value); @DomName('SVGPathSegCurvetoCubicRel.y') @DocsEditable() @@ -4023,7 +4023,7 @@ class PathSegCurvetoCubicRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y_Setter(this, value); @DomName('SVGPathSegCurvetoCubicRel.y1') @DocsEditable() @@ -4031,7 +4031,7 @@ class PathSegCurvetoCubicRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicRel.y1') @DocsEditable() - void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y1_Setter_float(this, value); + void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y1_Setter(this, value); @DomName('SVGPathSegCurvetoCubicRel.y2') @DocsEditable() @@ -4039,7 +4039,7 @@ class PathSegCurvetoCubicRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicRel.y2') @DocsEditable() - void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y2_Setter_float(this, value); + void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y2_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4062,7 +4062,7 @@ class PathSegCurvetoCubicSmoothAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x_Setter(this, value); @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2') @DocsEditable() @@ -4070,7 +4070,7 @@ class PathSegCurvetoCubicSmoothAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2') @DocsEditable() - void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x2_Setter_float(this, value); + void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x2_Setter(this, value); @DomName('SVGPathSegCurvetoCubicSmoothAbs.y') @DocsEditable() @@ -4078,7 +4078,7 @@ class PathSegCurvetoCubicSmoothAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y_Setter(this, value); @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2') @DocsEditable() @@ -4086,7 +4086,7 @@ class PathSegCurvetoCubicSmoothAbs extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2') @DocsEditable() - void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y2_Setter_float(this, value); + void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y2_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4109,7 +4109,7 @@ class PathSegCurvetoCubicSmoothRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x_Setter(this, value); @DomName('SVGPathSegCurvetoCubicSmoothRel.x2') @DocsEditable() @@ -4117,7 +4117,7 @@ class PathSegCurvetoCubicSmoothRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothRel.x2') @DocsEditable() - void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x2_Setter_float(this, value); + void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x2_Setter(this, value); @DomName('SVGPathSegCurvetoCubicSmoothRel.y') @DocsEditable() @@ -4125,7 +4125,7 @@ class PathSegCurvetoCubicSmoothRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y_Setter(this, value); @DomName('SVGPathSegCurvetoCubicSmoothRel.y2') @DocsEditable() @@ -4133,7 +4133,7 @@ class PathSegCurvetoCubicSmoothRel extends PathSeg { @DomName('SVGPathSegCurvetoCubicSmoothRel.y2') @DocsEditable() - void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y2_Setter_float(this, value); + void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y2_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4156,7 +4156,7 @@ class PathSegCurvetoQuadraticAbs extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticAbs.x1') @DocsEditable() @@ -4164,7 +4164,7 @@ class PathSegCurvetoQuadraticAbs extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticAbs.x1') @DocsEditable() - void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x1_Setter_float(this, value); + void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x1_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticAbs.y') @DocsEditable() @@ -4172,7 +4172,7 @@ class PathSegCurvetoQuadraticAbs extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticAbs.y1') @DocsEditable() @@ -4180,7 +4180,7 @@ class PathSegCurvetoQuadraticAbs extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticAbs.y1') @DocsEditable() - void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y1_Setter_float(this, value); + void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y1_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4203,7 +4203,7 @@ class PathSegCurvetoQuadraticRel extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticRel.x1') @DocsEditable() @@ -4211,7 +4211,7 @@ class PathSegCurvetoQuadraticRel extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticRel.x1') @DocsEditable() - void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x1_Setter_float(this, value); + void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x1_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticRel.y') @DocsEditable() @@ -4219,7 +4219,7 @@ class PathSegCurvetoQuadraticRel extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticRel.y1') @DocsEditable() @@ -4227,7 +4227,7 @@ class PathSegCurvetoQuadraticRel extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticRel.y1') @DocsEditable() - void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y1_Setter_float(this, value); + void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y1_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4250,7 +4250,7 @@ class PathSegCurvetoQuadraticSmoothAbs extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.x_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y') @DocsEditable() @@ -4258,7 +4258,7 @@ class PathSegCurvetoQuadraticSmoothAbs extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4281,7 +4281,7 @@ class PathSegCurvetoQuadraticSmoothRel extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.x_Setter(this, value); @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y') @DocsEditable() @@ -4289,7 +4289,7 @@ class PathSegCurvetoQuadraticSmoothRel extends PathSeg { @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4312,7 +4312,7 @@ class PathSegLinetoAbs extends PathSeg { @DomName('SVGPathSegLinetoAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.x_Setter(this, value); @DomName('SVGPathSegLinetoAbs.y') @DocsEditable() @@ -4320,7 +4320,7 @@ class PathSegLinetoAbs extends PathSeg { @DomName('SVGPathSegLinetoAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4343,7 +4343,7 @@ class PathSegLinetoHorizontalAbs extends PathSeg { @DomName('SVGPathSegLinetoHorizontalAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.x_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4366,7 +4366,7 @@ class PathSegLinetoHorizontalRel extends PathSeg { @DomName('SVGPathSegLinetoHorizontalRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.x_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4389,7 +4389,7 @@ class PathSegLinetoRel extends PathSeg { @DomName('SVGPathSegLinetoRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegLinetoRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegLinetoRel.x_Setter(this, value); @DomName('SVGPathSegLinetoRel.y') @DocsEditable() @@ -4397,7 +4397,7 @@ class PathSegLinetoRel extends PathSeg { @DomName('SVGPathSegLinetoRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegLinetoRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegLinetoRel.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4420,7 +4420,7 @@ class PathSegLinetoVerticalAbs extends PathSeg { @DomName('SVGPathSegLinetoVerticalAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4443,7 +4443,7 @@ class PathSegLinetoVerticalRel extends PathSeg { @DomName('SVGPathSegLinetoVerticalRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4516,11 +4516,11 @@ class PathSegList extends NativeFieldWrapperClass2 with ListMixin, Immu @DomName('SVGPathSegList.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(int index, PathSeg value) => _blink.BlinkSVGPathSegList.$__setter___Callback_ul_SVGPathSeg(this, index, value); + void __setter__(int index, PathSeg value) => _blink.BlinkSVGPathSegList.$__setter___Callback_2(this, index, value); @DomName('SVGPathSegList.appendItem') @DocsEditable() - PathSeg appendItem(PathSeg newItem) => _blink.BlinkSVGPathSegList.appendItem_Callback_SVGPathSeg(this, newItem); + PathSeg appendItem(PathSeg newItem) => _blink.BlinkSVGPathSegList.appendItem_Callback_1(this, newItem); @DomName('SVGPathSegList.clear') @DocsEditable() @@ -4528,23 +4528,23 @@ class PathSegList extends NativeFieldWrapperClass2 with ListMixin, Immu @DomName('SVGPathSegList.getItem') @DocsEditable() - PathSeg getItem(int index) => _blink.BlinkSVGPathSegList.getItem_Callback_ul(this, index); + PathSeg getItem(int index) => _blink.BlinkSVGPathSegList.getItem_Callback_1(this, index); @DomName('SVGPathSegList.initialize') @DocsEditable() - PathSeg initialize(PathSeg newItem) => _blink.BlinkSVGPathSegList.initialize_Callback_SVGPathSeg(this, newItem); + PathSeg initialize(PathSeg newItem) => _blink.BlinkSVGPathSegList.initialize_Callback_1(this, newItem); @DomName('SVGPathSegList.insertItemBefore') @DocsEditable() - PathSeg insertItemBefore(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.insertItemBefore_Callback_SVGPathSeg_ul(this, newItem, index); + PathSeg insertItemBefore(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.insertItemBefore_Callback_2(this, newItem, index); @DomName('SVGPathSegList.removeItem') @DocsEditable() - PathSeg removeItem(int index) => _blink.BlinkSVGPathSegList.removeItem_Callback_ul(this, index); + PathSeg removeItem(int index) => _blink.BlinkSVGPathSegList.removeItem_Callback_1(this, index); @DomName('SVGPathSegList.replaceItem') @DocsEditable() - PathSeg replaceItem(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.replaceItem_Callback_SVGPathSeg_ul(this, newItem, index); + PathSeg replaceItem(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.replaceItem_Callback_2(this, newItem, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4567,7 +4567,7 @@ class PathSegMovetoAbs extends PathSeg { @DomName('SVGPathSegMovetoAbs.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.x_Setter(this, value); @DomName('SVGPathSegMovetoAbs.y') @DocsEditable() @@ -4575,7 +4575,7 @@ class PathSegMovetoAbs extends PathSeg { @DomName('SVGPathSegMovetoAbs.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4598,7 +4598,7 @@ class PathSegMovetoRel extends PathSeg { @DomName('SVGPathSegMovetoRel.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPathSegMovetoRel.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPathSegMovetoRel.x_Setter(this, value); @DomName('SVGPathSegMovetoRel.y') @DocsEditable() @@ -4606,7 +4606,7 @@ class PathSegMovetoRel extends PathSeg { @DomName('SVGPathSegMovetoRel.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPathSegMovetoRel.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPathSegMovetoRel.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4683,7 +4683,7 @@ class PatternElement extends SvgElement implements FitToViewBox, UriReference, T @DomName('SVGPatternElement.hasExtension') @DocsEditable() - bool hasExtension(String extension) => _blink.BlinkSVGPatternElement.hasExtension_Callback_DOMString(this, extension); + bool hasExtension(String extension) => _blink.BlinkSVGPatternElement.hasExtension_Callback_1(this, extension); @DomName('SVGPatternElement.href') @DocsEditable() @@ -4710,7 +4710,7 @@ class Point extends NativeFieldWrapperClass2 { @DomName('SVGPoint.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGPoint.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGPoint.x_Setter(this, value); @DomName('SVGPoint.y') @DocsEditable() @@ -4718,11 +4718,11 @@ class Point extends NativeFieldWrapperClass2 { @DomName('SVGPoint.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGPoint.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGPoint.y_Setter(this, value); @DomName('SVGPoint.matrixTransform') @DocsEditable() - Point matrixTransform(Matrix matrix) => _blink.BlinkSVGPoint.matrixTransform_Callback_SVGMatrix(this, matrix); + Point matrixTransform(Matrix matrix) => _blink.BlinkSVGPoint.matrixTransform_Callback_1(this, matrix); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4751,11 +4751,11 @@ class PointList extends NativeFieldWrapperClass2 { @DomName('SVGPointList.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(int index, Point value) => _blink.BlinkSVGPointList.$__setter___Callback_ul_SVGPoint(this, index, value); + void __setter__(int index, Point value) => _blink.BlinkSVGPointList.$__setter___Callback_2(this, index, value); @DomName('SVGPointList.appendItem') @DocsEditable() - Point appendItem(Point item) => _blink.BlinkSVGPointList.appendItem_Callback_SVGPoint(this, item); + Point appendItem(Point item) => _blink.BlinkSVGPointList.appendItem_Callback_1(this, item); @DomName('SVGPointList.clear') @DocsEditable() @@ -4763,23 +4763,23 @@ class PointList extends NativeFieldWrapperClass2 { @DomName('SVGPointList.getItem') @DocsEditable() - Point getItem(int index) => _blink.BlinkSVGPointList.getItem_Callback_ul(this, index); + Point getItem(int index) => _blink.BlinkSVGPointList.getItem_Callback_1(this, index); @DomName('SVGPointList.initialize') @DocsEditable() - Point initialize(Point item) => _blink.BlinkSVGPointList.initialize_Callback_SVGPoint(this, item); + Point initialize(Point item) => _blink.BlinkSVGPointList.initialize_Callback_1(this, item); @DomName('SVGPointList.insertItemBefore') @DocsEditable() - Point insertItemBefore(Point item, int index) => _blink.BlinkSVGPointList.insertItemBefore_Callback_SVGPoint_ul(this, item, index); + Point insertItemBefore(Point item, int index) => _blink.BlinkSVGPointList.insertItemBefore_Callback_2(this, item, index); @DomName('SVGPointList.removeItem') @DocsEditable() - Point removeItem(int index) => _blink.BlinkSVGPointList.removeItem_Callback_ul(this, index); + Point removeItem(int index) => _blink.BlinkSVGPointList.removeItem_Callback_1(this, index); @DomName('SVGPointList.replaceItem') @DocsEditable() - Point replaceItem(Point item, int index) => _blink.BlinkSVGPointList.replaceItem_Callback_SVGPoint_ul(this, item, index); + Point replaceItem(Point item, int index) => _blink.BlinkSVGPointList.replaceItem_Callback_2(this, item, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -4924,7 +4924,7 @@ class PreserveAspectRatio extends NativeFieldWrapperClass2 { @DomName('SVGPreserveAspectRatio.align') @DocsEditable() - void set align(int value) => _blink.BlinkSVGPreserveAspectRatio.align_Setter_us(this, value); + void set align(int value) => _blink.BlinkSVGPreserveAspectRatio.align_Setter(this, value); @DomName('SVGPreserveAspectRatio.meetOrSlice') @DocsEditable() @@ -4932,7 +4932,7 @@ class PreserveAspectRatio extends NativeFieldWrapperClass2 { @DomName('SVGPreserveAspectRatio.meetOrSlice') @DocsEditable() - void set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.meetOrSlice_Setter_us(this, value); + void set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.meetOrSlice_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -5004,7 +5004,7 @@ class Rect extends NativeFieldWrapperClass2 { @DomName('SVGRect.height') @DocsEditable() - void set height(num value) => _blink.BlinkSVGRect.height_Setter_float(this, value); + void set height(num value) => _blink.BlinkSVGRect.height_Setter(this, value); @DomName('SVGRect.width') @DocsEditable() @@ -5012,7 +5012,7 @@ class Rect extends NativeFieldWrapperClass2 { @DomName('SVGRect.width') @DocsEditable() - void set width(num value) => _blink.BlinkSVGRect.width_Setter_float(this, value); + void set width(num value) => _blink.BlinkSVGRect.width_Setter(this, value); @DomName('SVGRect.x') @DocsEditable() @@ -5020,7 +5020,7 @@ class Rect extends NativeFieldWrapperClass2 { @DomName('SVGRect.x') @DocsEditable() - void set x(num value) => _blink.BlinkSVGRect.x_Setter_float(this, value); + void set x(num value) => _blink.BlinkSVGRect.x_Setter(this, value); @DomName('SVGRect.y') @DocsEditable() @@ -5028,7 +5028,7 @@ class Rect extends NativeFieldWrapperClass2 { @DomName('SVGRect.y') @DocsEditable() - void set y(num value) => _blink.BlinkSVGRect.y_Setter_float(this, value); + void set y(num value) => _blink.BlinkSVGRect.y_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -5149,7 +5149,7 @@ class ScriptElement extends SvgElement implements UriReference { @DomName('SVGScriptElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkSVGScriptElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkSVGScriptElement.type_Setter(this, value); @DomName('SVGScriptElement.href') @DocsEditable() @@ -5286,11 +5286,11 @@ class StringList extends NativeFieldWrapperClass2 with ListMixin, Immuta @DomName('SVGStringList.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(int index, String value) => _blink.BlinkSVGStringList.$__setter___Callback_ul_DOMString(this, index, value); + void __setter__(int index, String value) => _blink.BlinkSVGStringList.$__setter___Callback_2(this, index, value); @DomName('SVGStringList.appendItem') @DocsEditable() - String appendItem(String item) => _blink.BlinkSVGStringList.appendItem_Callback_DOMString(this, item); + String appendItem(String item) => _blink.BlinkSVGStringList.appendItem_Callback_1(this, item); @DomName('SVGStringList.clear') @DocsEditable() @@ -5298,23 +5298,23 @@ class StringList extends NativeFieldWrapperClass2 with ListMixin, Immuta @DomName('SVGStringList.getItem') @DocsEditable() - String getItem(int index) => _blink.BlinkSVGStringList.getItem_Callback_ul(this, index); + String getItem(int index) => _blink.BlinkSVGStringList.getItem_Callback_1(this, index); @DomName('SVGStringList.initialize') @DocsEditable() - String initialize(String item) => _blink.BlinkSVGStringList.initialize_Callback_DOMString(this, item); + String initialize(String item) => _blink.BlinkSVGStringList.initialize_Callback_1(this, item); @DomName('SVGStringList.insertItemBefore') @DocsEditable() - String insertItemBefore(String item, int index) => _blink.BlinkSVGStringList.insertItemBefore_Callback_DOMString_ul(this, item, index); + String insertItemBefore(String item, int index) => _blink.BlinkSVGStringList.insertItemBefore_Callback_2(this, item, index); @DomName('SVGStringList.removeItem') @DocsEditable() - String removeItem(int index) => _blink.BlinkSVGStringList.removeItem_Callback_ul(this, index); + String removeItem(int index) => _blink.BlinkSVGStringList.removeItem_Callback_1(this, index); @DomName('SVGStringList.replaceItem') @DocsEditable() - String replaceItem(String item, int index) => _blink.BlinkSVGStringList.replaceItem_Callback_DOMString_ul(this, item, index); + String replaceItem(String item, int index) => _blink.BlinkSVGStringList.replaceItem_Callback_2(this, item, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -5348,7 +5348,7 @@ class StyleElement extends SvgElement { @DomName('SVGStyleElement.disabled') @DocsEditable() - void set disabled(bool value) => _blink.BlinkSVGStyleElement.disabled_Setter_boolean(this, value); + void set disabled(bool value) => _blink.BlinkSVGStyleElement.disabled_Setter(this, value); @DomName('SVGStyleElement.media') @DocsEditable() @@ -5356,7 +5356,7 @@ class StyleElement extends SvgElement { @DomName('SVGStyleElement.media') @DocsEditable() - void set media(String value) => _blink.BlinkSVGStyleElement.media_Setter_DOMString(this, value); + void set media(String value) => _blink.BlinkSVGStyleElement.media_Setter(this, value); @DomName('SVGStyleElement.sheet') @DocsEditable() @@ -5369,7 +5369,7 @@ class StyleElement extends SvgElement { @DomName('SVGStyleElement.title') @DocsEditable() - void set title(String value) => _blink.BlinkSVGStyleElement.title_Setter_DOMString(this, value); + void set title(String value) => _blink.BlinkSVGStyleElement.title_Setter(this, value); @DomName('SVGStyleElement.type') @DocsEditable() @@ -5377,7 +5377,7 @@ class StyleElement extends SvgElement { @DomName('SVGStyleElement.type') @DocsEditable() - void set type(String value) => _blink.BlinkSVGStyleElement.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkSVGStyleElement.type_Setter(this, value); } // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file @@ -5822,7 +5822,7 @@ class SvgElement extends Element implements GlobalEventHandlers { @DomName('SVGElement.tabIndex') @DocsEditable() @Experimental() // untriaged - void set tabIndex(int value) => _blink.BlinkSVGElement.tabIndex_Setter_long(this, value); + void set tabIndex(int value) => _blink.BlinkSVGElement.tabIndex_Setter(this, value); @DomName('SVGElement.viewportElement') @DocsEditable() @@ -5834,7 +5834,7 @@ class SvgElement extends Element implements GlobalEventHandlers { @DomName('SVGElement.xmlbase') @DocsEditable() - void set xmlbase(String value) => _blink.BlinkSVGElement.xmlbase_Setter_DOMString(this, value); + void set xmlbase(String value) => _blink.BlinkSVGElement.xmlbase_Setter(this, value); @DomName('SVGElement.xmllang') @DocsEditable() @@ -5844,7 +5844,7 @@ class SvgElement extends Element implements GlobalEventHandlers { @DomName('SVGElement.xmllang') @DocsEditable() @Experimental() // untriaged - void set xmllang(String value) => _blink.BlinkSVGElement.xmllang_Setter_DOMString(this, value); + void set xmllang(String value) => _blink.BlinkSVGElement.xmllang_Setter(this, value); @DomName('SVGElement.xmlspace') @DocsEditable() @@ -5854,7 +5854,7 @@ class SvgElement extends Element implements GlobalEventHandlers { @DomName('SVGElement.xmlspace') @DocsEditable() @Experimental() // untriaged - void set xmlspace(String value) => _blink.BlinkSVGElement.xmlspace_Setter_DOMString(this, value); + void set xmlspace(String value) => _blink.BlinkSVGElement.xmlspace_Setter(this, value); @DomName('SVGElement.onabort') @DocsEditable() @@ -6147,7 +6147,7 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.currentScale') @DocsEditable() - void set currentScale(num value) => _blink.BlinkSVGSVGElement.currentScale_Setter_float(this, value); + void set currentScale(num value) => _blink.BlinkSVGSVGElement.currentScale_Setter(this, value); @DomName('SVGSVGElement.currentTranslate') @DocsEditable() @@ -6203,11 +6203,11 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.checkEnclosure') @DocsEditable() - bool checkEnclosure(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.checkEnclosure_Callback_SVGElement_SVGRect(this, element, rect); + bool checkEnclosure(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.checkEnclosure_Callback_2(this, element, rect); @DomName('SVGSVGElement.checkIntersection') @DocsEditable() - bool checkIntersection(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.checkIntersection_Callback_SVGElement_SVGRect(this, element, rect); + bool checkIntersection(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.checkIntersection_Callback_2(this, element, rect); @DomName('SVGSVGElement.createSVGAngle') @DocsEditable() @@ -6239,7 +6239,7 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.createSVGTransformFromMatrix') @DocsEditable() - Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGSVGElement.createSVGTransformFromMatrix_Callback_SVGMatrix(this, matrix); + Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGSVGElement.createSVGTransformFromMatrix_Callback_1(this, matrix); @DomName('SVGSVGElement.deselectAll') @DocsEditable() @@ -6255,15 +6255,15 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.getElementById') @DocsEditable() - Element getElementById(String elementId) => _blink.BlinkSVGSVGElement.getElementById_Callback_DOMString(this, elementId); + Element getElementById(String elementId) => _blink.BlinkSVGSVGElement.getElementById_Callback_1(this, elementId); @DomName('SVGSVGElement.getEnclosureList') @DocsEditable() - List getEnclosureList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.getEnclosureList_Callback_SVGRect_SVGElement(this, rect, referenceElement); + List getEnclosureList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.getEnclosureList_Callback_2(this, rect, referenceElement); @DomName('SVGSVGElement.getIntersectionList') @DocsEditable() - List getIntersectionList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.getIntersectionList_Callback_SVGRect_SVGElement(this, rect, referenceElement); + List getIntersectionList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.getIntersectionList_Callback_2(this, rect, referenceElement); @DomName('SVGSVGElement.pauseAnimations') @DocsEditable() @@ -6271,11 +6271,11 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.setCurrentTime') @DocsEditable() - void setCurrentTime(num seconds) => _blink.BlinkSVGSVGElement.setCurrentTime_Callback_float(this, seconds); + void setCurrentTime(num seconds) => _blink.BlinkSVGSVGElement.setCurrentTime_Callback_1(this, seconds); @DomName('SVGSVGElement.suspendRedraw') @DocsEditable() - int suspendRedraw(int maxWaitMilliseconds) => _blink.BlinkSVGSVGElement.suspendRedraw_Callback_ul(this, maxWaitMilliseconds); + int suspendRedraw(int maxWaitMilliseconds) => _blink.BlinkSVGSVGElement.suspendRedraw_Callback_1(this, maxWaitMilliseconds); @DomName('SVGSVGElement.unpauseAnimations') @DocsEditable() @@ -6283,7 +6283,7 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.unsuspendRedraw') @DocsEditable() - void unsuspendRedraw(int suspendHandleId) => _blink.BlinkSVGSVGElement.unsuspendRedraw_Callback_ul(this, suspendHandleId); + void unsuspendRedraw(int suspendHandleId) => _blink.BlinkSVGSVGElement.unsuspendRedraw_Callback_1(this, suspendHandleId); @DomName('SVGSVGElement.unsuspendRedrawAll') @DocsEditable() @@ -6303,7 +6303,7 @@ class SvgSvgElement extends GraphicsElement implements FitToViewBox, ZoomAndPan @DomName('SVGSVGElement.zoomAndPan') @DocsEditable() - void set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.zoomAndPan_Setter_us(this, value); + void set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.zoomAndPan_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -6417,7 +6417,7 @@ abstract class Tests extends NativeFieldWrapperClass2 { @DomName('SVGTests.hasExtension') @DocsEditable() - bool hasExtension(String extension) => _blink.BlinkSVGTests.hasExtension_Callback_DOMString(this, extension); + bool hasExtension(String extension) => _blink.BlinkSVGTests.hasExtension_Callback_1(this, extension); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -6462,7 +6462,7 @@ class TextContentElement extends GraphicsElement { @DomName('SVGTextContentElement.getCharNumAtPosition') @DocsEditable() - int getCharNumAtPosition(Point point) => _blink.BlinkSVGTextContentElement.getCharNumAtPosition_Callback_SVGPoint(this, point); + int getCharNumAtPosition(Point point) => _blink.BlinkSVGTextContentElement.getCharNumAtPosition_Callback_1(this, point); @DomName('SVGTextContentElement.getComputedTextLength') @DocsEditable() @@ -6470,11 +6470,11 @@ class TextContentElement extends GraphicsElement { @DomName('SVGTextContentElement.getEndPositionOfChar') @DocsEditable() - Point getEndPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.getEndPositionOfChar_Callback_ul(this, offset); + Point getEndPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.getEndPositionOfChar_Callback_1(this, offset); @DomName('SVGTextContentElement.getExtentOfChar') @DocsEditable() - Rect getExtentOfChar(int offset) => _blink.BlinkSVGTextContentElement.getExtentOfChar_Callback_ul(this, offset); + Rect getExtentOfChar(int offset) => _blink.BlinkSVGTextContentElement.getExtentOfChar_Callback_1(this, offset); @DomName('SVGTextContentElement.getNumberOfChars') @DocsEditable() @@ -6482,19 +6482,19 @@ class TextContentElement extends GraphicsElement { @DomName('SVGTextContentElement.getRotationOfChar') @DocsEditable() - double getRotationOfChar(int offset) => _blink.BlinkSVGTextContentElement.getRotationOfChar_Callback_ul(this, offset); + double getRotationOfChar(int offset) => _blink.BlinkSVGTextContentElement.getRotationOfChar_Callback_1(this, offset); @DomName('SVGTextContentElement.getStartPositionOfChar') @DocsEditable() - Point getStartPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.getStartPositionOfChar_Callback_ul(this, offset); + Point getStartPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.getStartPositionOfChar_Callback_1(this, offset); @DomName('SVGTextContentElement.getSubStringLength') @DocsEditable() - double getSubStringLength(int offset, int length) => _blink.BlinkSVGTextContentElement.getSubStringLength_Callback_ul_ul(this, offset, length); + double getSubStringLength(int offset, int length) => _blink.BlinkSVGTextContentElement.getSubStringLength_Callback_2(this, offset, length); @DomName('SVGTextContentElement.selectSubString') @DocsEditable() - void selectSubString(int offset, int length) => _blink.BlinkSVGTextContentElement.selectSubString_Callback_ul_ul(this, offset, length); + void selectSubString(int offset, int length) => _blink.BlinkSVGTextContentElement.selectSubString_Callback_2(this, offset, length); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -6705,27 +6705,27 @@ class Transform extends NativeFieldWrapperClass2 { @DomName('SVGTransform.setMatrix') @DocsEditable() - void setMatrix(Matrix matrix) => _blink.BlinkSVGTransform.setMatrix_Callback_SVGMatrix(this, matrix); + void setMatrix(Matrix matrix) => _blink.BlinkSVGTransform.setMatrix_Callback_1(this, matrix); @DomName('SVGTransform.setRotate') @DocsEditable() - void setRotate(num angle, num cx, num cy) => _blink.BlinkSVGTransform.setRotate_Callback_float_float_float(this, angle, cx, cy); + void setRotate(num angle, num cx, num cy) => _blink.BlinkSVGTransform.setRotate_Callback_3(this, angle, cx, cy); @DomName('SVGTransform.setScale') @DocsEditable() - void setScale(num sx, num sy) => _blink.BlinkSVGTransform.setScale_Callback_float_float(this, sx, sy); + void setScale(num sx, num sy) => _blink.BlinkSVGTransform.setScale_Callback_2(this, sx, sy); @DomName('SVGTransform.setSkewX') @DocsEditable() - void setSkewX(num angle) => _blink.BlinkSVGTransform.setSkewX_Callback_float(this, angle); + void setSkewX(num angle) => _blink.BlinkSVGTransform.setSkewX_Callback_1(this, angle); @DomName('SVGTransform.setSkewY') @DocsEditable() - void setSkewY(num angle) => _blink.BlinkSVGTransform.setSkewY_Callback_float(this, angle); + void setSkewY(num angle) => _blink.BlinkSVGTransform.setSkewY_Callback_1(this, angle); @DomName('SVGTransform.setTranslate') @DocsEditable() - void setTranslate(num tx, num ty) => _blink.BlinkSVGTransform.setTranslate_Callback_float_float(this, tx, ty); + void setTranslate(num tx, num ty) => _blink.BlinkSVGTransform.setTranslate_Callback_2(this, tx, ty); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -6798,11 +6798,11 @@ class TransformList extends NativeFieldWrapperClass2 with ListMixin, @DomName('SVGTransformList.__setter__') @DocsEditable() @Experimental() // untriaged - void __setter__(int index, Transform value) => _blink.BlinkSVGTransformList.$__setter___Callback_ul_SVGTransform(this, index, value); + void __setter__(int index, Transform value) => _blink.BlinkSVGTransformList.$__setter___Callback_2(this, index, value); @DomName('SVGTransformList.appendItem') @DocsEditable() - Transform appendItem(Transform item) => _blink.BlinkSVGTransformList.appendItem_Callback_SVGTransform(this, item); + Transform appendItem(Transform item) => _blink.BlinkSVGTransformList.appendItem_Callback_1(this, item); @DomName('SVGTransformList.clear') @DocsEditable() @@ -6814,27 +6814,27 @@ class TransformList extends NativeFieldWrapperClass2 with ListMixin, @DomName('SVGTransformList.createSVGTransformFromMatrix') @DocsEditable() - Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGTransformList.createSVGTransformFromMatrix_Callback_SVGMatrix(this, matrix); + Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGTransformList.createSVGTransformFromMatrix_Callback_1(this, matrix); @DomName('SVGTransformList.getItem') @DocsEditable() - Transform getItem(int index) => _blink.BlinkSVGTransformList.getItem_Callback_ul(this, index); + Transform getItem(int index) => _blink.BlinkSVGTransformList.getItem_Callback_1(this, index); @DomName('SVGTransformList.initialize') @DocsEditable() - Transform initialize(Transform item) => _blink.BlinkSVGTransformList.initialize_Callback_SVGTransform(this, item); + Transform initialize(Transform item) => _blink.BlinkSVGTransformList.initialize_Callback_1(this, item); @DomName('SVGTransformList.insertItemBefore') @DocsEditable() - Transform insertItemBefore(Transform item, int index) => _blink.BlinkSVGTransformList.insertItemBefore_Callback_SVGTransform_ul(this, item, index); + Transform insertItemBefore(Transform item, int index) => _blink.BlinkSVGTransformList.insertItemBefore_Callback_2(this, item, index); @DomName('SVGTransformList.removeItem') @DocsEditable() - Transform removeItem(int index) => _blink.BlinkSVGTransformList.removeItem_Callback_ul(this, index); + Transform removeItem(int index) => _blink.BlinkSVGTransformList.removeItem_Callback_1(this, index); @DomName('SVGTransformList.replaceItem') @DocsEditable() - Transform replaceItem(Transform item, int index) => _blink.BlinkSVGTransformList.replaceItem_Callback_SVGTransform_ul(this, item, index); + Transform replaceItem(Transform item, int index) => _blink.BlinkSVGTransformList.replaceItem_Callback_2(this, item, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -6970,7 +6970,7 @@ class ViewElement extends SvgElement implements FitToViewBox, ZoomAndPan { @DomName('SVGViewElement.zoomAndPan') @DocsEditable() - void set zoomAndPan(int value) => _blink.BlinkSVGViewElement.zoomAndPan_Setter_us(this, value); + void set zoomAndPan(int value) => _blink.BlinkSVGViewElement.zoomAndPan_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7029,7 +7029,7 @@ class ViewSpec extends NativeFieldWrapperClass2 implements FitToViewBox, ZoomAnd @DomName('SVGViewSpec.zoomAndPan') @DocsEditable() @Experimental() // nonstandard - void set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.zoomAndPan_Setter_us(this, value); + void set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.zoomAndPan_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -7064,7 +7064,7 @@ abstract class ZoomAndPan extends NativeFieldWrapperClass2 { @DomName('SVGZoomAndPan.zoomAndPan') @DocsEditable() - void set zoomAndPan(int value) => _blink.BlinkSVGZoomAndPan.zoomAndPan_Setter_us(this, value); + void set zoomAndPan(int value) => _blink.BlinkSVGZoomAndPan.zoomAndPan_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file diff --git a/sdk/lib/web_audio/dartium/web_audio_dartium.dart b/sdk/lib/web_audio/dartium/web_audio_dartium.dart index 7b7b6a9b0aa9..d21f80c86e3b 100644 --- a/sdk/lib/web_audio/dartium/web_audio_dartium.dart +++ b/sdk/lib/web_audio/dartium/web_audio_dartium.dart @@ -66,7 +66,7 @@ class AnalyserNode extends AudioNode { @DomName('AnalyserNode.fftSize') @DocsEditable() - void set fftSize(int value) => _blink.BlinkAnalyserNode.fftSize_Setter_ul(this, value); + void set fftSize(int value) => _blink.BlinkAnalyserNode.fftSize_Setter(this, value); @DomName('AnalyserNode.frequencyBinCount') @DocsEditable() @@ -78,7 +78,7 @@ class AnalyserNode extends AudioNode { @DomName('AnalyserNode.maxDecibels') @DocsEditable() - void set maxDecibels(num value) => _blink.BlinkAnalyserNode.maxDecibels_Setter_double(this, value); + void set maxDecibels(num value) => _blink.BlinkAnalyserNode.maxDecibels_Setter(this, value); @DomName('AnalyserNode.minDecibels') @DocsEditable() @@ -86,7 +86,7 @@ class AnalyserNode extends AudioNode { @DomName('AnalyserNode.minDecibels') @DocsEditable() - void set minDecibels(num value) => _blink.BlinkAnalyserNode.minDecibels_Setter_double(this, value); + void set minDecibels(num value) => _blink.BlinkAnalyserNode.minDecibels_Setter(this, value); @DomName('AnalyserNode.smoothingTimeConstant') @DocsEditable() @@ -94,24 +94,24 @@ class AnalyserNode extends AudioNode { @DomName('AnalyserNode.smoothingTimeConstant') @DocsEditable() - void set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.smoothingTimeConstant_Setter_double(this, value); + void set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.smoothingTimeConstant_Setter(this, value); @DomName('AnalyserNode.getByteFrequencyData') @DocsEditable() - void getByteFrequencyData(Uint8List array) => _blink.BlinkAnalyserNode.getByteFrequencyData_Callback_Uint8Array(this, array); + void getByteFrequencyData(Uint8List array) => _blink.BlinkAnalyserNode.getByteFrequencyData_Callback_1(this, array); @DomName('AnalyserNode.getByteTimeDomainData') @DocsEditable() - void getByteTimeDomainData(Uint8List array) => _blink.BlinkAnalyserNode.getByteTimeDomainData_Callback_Uint8Array(this, array); + void getByteTimeDomainData(Uint8List array) => _blink.BlinkAnalyserNode.getByteTimeDomainData_Callback_1(this, array); @DomName('AnalyserNode.getFloatFrequencyData') @DocsEditable() - void getFloatFrequencyData(Float32List array) => _blink.BlinkAnalyserNode.getFloatFrequencyData_Callback_Float32Array(this, array); + void getFloatFrequencyData(Float32List array) => _blink.BlinkAnalyserNode.getFloatFrequencyData_Callback_1(this, array); @DomName('AnalyserNode.getFloatTimeDomainData') @DocsEditable() @Experimental() // untriaged - void getFloatTimeDomainData(Float32List array) => _blink.BlinkAnalyserNode.getFloatTimeDomainData_Callback_Float32Array(this, array); + void getFloatTimeDomainData(Float32List array) => _blink.BlinkAnalyserNode.getFloatTimeDomainData_Callback_1(this, array); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -147,7 +147,7 @@ class AudioBuffer extends NativeFieldWrapperClass2 { @DomName('AudioBuffer.getChannelData') @DocsEditable() - Float32List getChannelData(int channelIndex) => _blink.BlinkAudioBuffer.getChannelData_Callback_ul(this, channelIndex); + Float32List getChannelData(int channelIndex) => _blink.BlinkAudioBuffer.getChannelData_Callback_1(this, channelIndex); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -195,7 +195,7 @@ class AudioBufferSourceNode extends AudioSourceNode { @DomName('AudioBufferSourceNode.buffer') @DocsEditable() - void set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.buffer_Setter_AudioBuffer(this, value); + void set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.buffer_Setter(this, value); @DomName('AudioBufferSourceNode.loop') @DocsEditable() @@ -203,7 +203,7 @@ class AudioBufferSourceNode extends AudioSourceNode { @DomName('AudioBufferSourceNode.loop') @DocsEditable() - void set loop(bool value) => _blink.BlinkAudioBufferSourceNode.loop_Setter_boolean(this, value); + void set loop(bool value) => _blink.BlinkAudioBufferSourceNode.loop_Setter(this, value); @DomName('AudioBufferSourceNode.loopEnd') @DocsEditable() @@ -211,7 +211,7 @@ class AudioBufferSourceNode extends AudioSourceNode { @DomName('AudioBufferSourceNode.loopEnd') @DocsEditable() - void set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.loopEnd_Setter_double(this, value); + void set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.loopEnd_Setter(this, value); @DomName('AudioBufferSourceNode.loopStart') @DocsEditable() @@ -219,7 +219,7 @@ class AudioBufferSourceNode extends AudioSourceNode { @DomName('AudioBufferSourceNode.loopStart') @DocsEditable() - void set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.loopStart_Setter_double(this, value); + void set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.loopStart_Setter(this, value); @DomName('AudioBufferSourceNode.playbackRate') @DocsEditable() @@ -227,15 +227,15 @@ class AudioBufferSourceNode extends AudioSourceNode { void start([num when, num grainOffset, num grainDuration]) { if (grainDuration != null) { - _blink.BlinkAudioBufferSourceNode.start_Callback_double_double_double(this, when, grainOffset, grainDuration); + _blink.BlinkAudioBufferSourceNode.start_Callback_3(this, when, grainOffset, grainDuration); return; } if (grainOffset != null) { - _blink.BlinkAudioBufferSourceNode.start_Callback_double_double(this, when, grainOffset); + _blink.BlinkAudioBufferSourceNode.start_Callback_2(this, when, grainOffset); return; } if (when != null) { - _blink.BlinkAudioBufferSourceNode.start_Callback_double(this, when); + _blink.BlinkAudioBufferSourceNode.start_Callback_1(this, when); return; } _blink.BlinkAudioBufferSourceNode.start_Callback(this); @@ -244,7 +244,7 @@ class AudioBufferSourceNode extends AudioSourceNode { void stop([num when]) { if (when != null) { - _blink.BlinkAudioBufferSourceNode.stop_Callback_double(this, when); + _blink.BlinkAudioBufferSourceNode.stop_Callback_1(this, when); return; } _blink.BlinkAudioBufferSourceNode.stop_Callback(this); @@ -317,7 +317,7 @@ class AudioContext extends EventTarget { @DomName('AudioContext.createBuffer') @DocsEditable() - AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) => _blink.BlinkAudioContext.createBuffer_Callback_ul_ul_float(this, numberOfChannels, numberOfFrames, sampleRate); + AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) => _blink.BlinkAudioContext.createBuffer_Callback_3(this, numberOfChannels, numberOfFrames, sampleRate); @DomName('AudioContext.createBufferSource') @DocsEditable() @@ -325,14 +325,14 @@ class AudioContext extends EventTarget { ChannelMergerNode createChannelMerger([int numberOfInputs]) { if (numberOfInputs != null) { - return _blink.BlinkAudioContext.createChannelMerger_Callback_ul(this, numberOfInputs); + return _blink.BlinkAudioContext.createChannelMerger_Callback_1(this, numberOfInputs); } return _blink.BlinkAudioContext.createChannelMerger_Callback(this); } ChannelSplitterNode createChannelSplitter([int numberOfOutputs]) { if (numberOfOutputs != null) { - return _blink.BlinkAudioContext.createChannelSplitter_Callback_ul(this, numberOfOutputs); + return _blink.BlinkAudioContext.createChannelSplitter_Callback_1(this, numberOfOutputs); } return _blink.BlinkAudioContext.createChannelSplitter_Callback(this); } @@ -343,7 +343,7 @@ class AudioContext extends EventTarget { DelayNode createDelay([num maxDelayTime]) { if (maxDelayTime != null) { - return _blink.BlinkAudioContext.createDelay_Callback_double(this, maxDelayTime); + return _blink.BlinkAudioContext.createDelay_Callback_1(this, maxDelayTime); } return _blink.BlinkAudioContext.createDelay_Callback(this); } @@ -358,7 +358,7 @@ class AudioContext extends EventTarget { @DomName('AudioContext.createMediaElementSource') @DocsEditable() - MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => _blink.BlinkAudioContext.createMediaElementSource_Callback_HTMLMediaElement(this, mediaElement); + MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => _blink.BlinkAudioContext.createMediaElementSource_Callback_1(this, mediaElement); @DomName('AudioContext.createMediaStreamDestination') @DocsEditable() @@ -366,7 +366,7 @@ class AudioContext extends EventTarget { @DomName('AudioContext.createMediaStreamSource') @DocsEditable() - MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) => _blink.BlinkAudioContext.createMediaStreamSource_Callback_MediaStream(this, mediaStream); + MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) => _blink.BlinkAudioContext.createMediaStreamSource_Callback_1(this, mediaStream); @DomName('AudioContext.createOscillator') @DocsEditable() @@ -379,17 +379,17 @@ class AudioContext extends EventTarget { @DomName('AudioContext.createPeriodicWave') @DocsEditable() @Experimental() // untriaged - PeriodicWave createPeriodicWave(Float32List real, Float32List imag) => _blink.BlinkAudioContext.createPeriodicWave_Callback_Float32Array_Float32Array(this, real, imag); + PeriodicWave createPeriodicWave(Float32List real, Float32List imag) => _blink.BlinkAudioContext.createPeriodicWave_Callback_2(this, real, imag); ScriptProcessorNode createScriptProcessor([int bufferSize, int numberOfInputChannels, int numberOfOutputChannels]) { if (numberOfOutputChannels != null) { - return _blink.BlinkAudioContext.createScriptProcessor_Callback_ul_ul_ul(this, bufferSize, numberOfInputChannels, numberOfOutputChannels); + return _blink.BlinkAudioContext.createScriptProcessor_Callback_3(this, bufferSize, numberOfInputChannels, numberOfOutputChannels); } if (numberOfInputChannels != null) { - return _blink.BlinkAudioContext.createScriptProcessor_Callback_ul_ul(this, bufferSize, numberOfInputChannels); + return _blink.BlinkAudioContext.createScriptProcessor_Callback_2(this, bufferSize, numberOfInputChannels); } if (bufferSize != null) { - return _blink.BlinkAudioContext.createScriptProcessor_Callback_ul(this, bufferSize); + return _blink.BlinkAudioContext.createScriptProcessor_Callback_1(this, bufferSize); } return _blink.BlinkAudioContext.createScriptProcessor_Callback(this); } @@ -400,7 +400,7 @@ class AudioContext extends EventTarget { @DomName('AudioContext.decodeAudioData') @DocsEditable() - void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) => _blink.BlinkAudioContext.decodeAudioData_Callback_ArrayBuffer_AudioBufferCallback_AudioBufferCallback(this, audioData, successCallback, errorCallback); + void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) => _blink.BlinkAudioContext.decodeAudioData_Callback_3(this, audioData, successCallback, errorCallback); @DomName('AudioContext.startRendering') @DocsEditable() @@ -467,7 +467,7 @@ class AudioListener extends NativeFieldWrapperClass2 { @DomName('AudioListener.dopplerFactor') @DocsEditable() - void set dopplerFactor(num value) => _blink.BlinkAudioListener.dopplerFactor_Setter_float(this, value); + void set dopplerFactor(num value) => _blink.BlinkAudioListener.dopplerFactor_Setter(this, value); @DomName('AudioListener.speedOfSound') @DocsEditable() @@ -475,19 +475,19 @@ class AudioListener extends NativeFieldWrapperClass2 { @DomName('AudioListener.speedOfSound') @DocsEditable() - void set speedOfSound(num value) => _blink.BlinkAudioListener.speedOfSound_Setter_float(this, value); + void set speedOfSound(num value) => _blink.BlinkAudioListener.speedOfSound_Setter(this, value); @DomName('AudioListener.setOrientation') @DocsEditable() - void setOrientation(num x, num y, num z, num xUp, num yUp, num zUp) => _blink.BlinkAudioListener.setOrientation_Callback_float_float_float_float_float_float(this, x, y, z, xUp, yUp, zUp); + void setOrientation(num x, num y, num z, num xUp, num yUp, num zUp) => _blink.BlinkAudioListener.setOrientation_Callback_6(this, x, y, z, xUp, yUp, zUp); @DomName('AudioListener.setPosition') @DocsEditable() - void setPosition(num x, num y, num z) => _blink.BlinkAudioListener.setPosition_Callback_float_float_float(this, x, y, z); + void setPosition(num x, num y, num z) => _blink.BlinkAudioListener.setPosition_Callback_3(this, x, y, z); @DomName('AudioListener.setVelocity') @DocsEditable() - void setVelocity(num x, num y, num z) => _blink.BlinkAudioListener.setVelocity_Callback_float_float_float(this, x, y, z); + void setVelocity(num x, num y, num z) => _blink.BlinkAudioListener.setVelocity_Callback_3(this, x, y, z); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -508,7 +508,7 @@ class AudioNode extends EventTarget { @DomName('AudioNode.channelCount') @DocsEditable() - void set channelCount(int value) => _blink.BlinkAudioNode.channelCount_Setter_ul(this, value); + void set channelCount(int value) => _blink.BlinkAudioNode.channelCount_Setter(this, value); @DomName('AudioNode.channelCountMode') @DocsEditable() @@ -516,7 +516,7 @@ class AudioNode extends EventTarget { @DomName('AudioNode.channelCountMode') @DocsEditable() - void set channelCountMode(String value) => _blink.BlinkAudioNode.channelCountMode_Setter_DOMString(this, value); + void set channelCountMode(String value) => _blink.BlinkAudioNode.channelCountMode_Setter(this, value); @DomName('AudioNode.channelInterpretation') @DocsEditable() @@ -524,7 +524,7 @@ class AudioNode extends EventTarget { @DomName('AudioNode.channelInterpretation') @DocsEditable() - void set channelInterpretation(String value) => _blink.BlinkAudioNode.channelInterpretation_Setter_DOMString(this, value); + void set channelInterpretation(String value) => _blink.BlinkAudioNode.channelInterpretation_Setter(this, value); @DomName('AudioNode.context') @DocsEditable() @@ -540,11 +540,11 @@ class AudioNode extends EventTarget { void _connect(destination, int output, [int input]) { if ((input is int || input == null) && (output is int || output == null) && (destination is AudioNode || destination == null)) { - _blink.BlinkAudioNode.connect_Callback_AudioNode_ul_ul(this, destination, output, input); + _blink.BlinkAudioNode.connect_Callback_3(this, destination, output, input); return; } if ((output is int || output == null) && (destination is AudioParam || destination == null) && input == null) { - _blink.BlinkAudioNode.connect_Callback_AudioParam_ul(this, destination, output); + _blink.BlinkAudioNode.connect_Callback_2(this, destination, output); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -552,7 +552,7 @@ class AudioNode extends EventTarget { @DomName('AudioNode.disconnect') @DocsEditable() - void disconnect(int output) => _blink.BlinkAudioNode.disconnect_Callback_ul(this, output); + void disconnect(int output) => _blink.BlinkAudioNode.disconnect_Callback_1(this, output); @DomName('AudioNode.connect') void connectNode(AudioNode destination, [int output = 0, int input = 0]) => @@ -587,31 +587,31 @@ class AudioParam extends NativeFieldWrapperClass2 { @DomName('AudioParam.value') @DocsEditable() - void set value(num value) => _blink.BlinkAudioParam.value_Setter_float(this, value); + void set value(num value) => _blink.BlinkAudioParam.value_Setter(this, value); @DomName('AudioParam.cancelScheduledValues') @DocsEditable() - void cancelScheduledValues(num startTime) => _blink.BlinkAudioParam.cancelScheduledValues_Callback_double(this, startTime); + void cancelScheduledValues(num startTime) => _blink.BlinkAudioParam.cancelScheduledValues_Callback_1(this, startTime); @DomName('AudioParam.exponentialRampToValueAtTime') @DocsEditable() - void exponentialRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.exponentialRampToValueAtTime_Callback_float_double(this, value, time); + void exponentialRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.exponentialRampToValueAtTime_Callback_2(this, value, time); @DomName('AudioParam.linearRampToValueAtTime') @DocsEditable() - void linearRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.linearRampToValueAtTime_Callback_float_double(this, value, time); + void linearRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.linearRampToValueAtTime_Callback_2(this, value, time); @DomName('AudioParam.setTargetAtTime') @DocsEditable() - void setTargetAtTime(num target, num time, num timeConstant) => _blink.BlinkAudioParam.setTargetAtTime_Callback_float_double_double(this, target, time, timeConstant); + void setTargetAtTime(num target, num time, num timeConstant) => _blink.BlinkAudioParam.setTargetAtTime_Callback_3(this, target, time, timeConstant); @DomName('AudioParam.setValueAtTime') @DocsEditable() - void setValueAtTime(num value, num time) => _blink.BlinkAudioParam.setValueAtTime_Callback_float_double(this, value, time); + void setValueAtTime(num value, num time) => _blink.BlinkAudioParam.setValueAtTime_Callback_2(this, value, time); @DomName('AudioParam.setValueCurveAtTime') @DocsEditable() - void setValueCurveAtTime(Float32List values, num time, num duration) => _blink.BlinkAudioParam.setValueCurveAtTime_Callback_Float32Array_double_double(this, values, time, duration); + void setValueCurveAtTime(Float32List values, num time, num duration) => _blink.BlinkAudioParam.setValueCurveAtTime_Callback_3(this, values, time, duration); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -696,11 +696,11 @@ class BiquadFilterNode extends AudioNode { @DomName('BiquadFilterNode.type') @DocsEditable() - void set type(String value) => _blink.BlinkBiquadFilterNode.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkBiquadFilterNode.type_Setter(this, value); @DomName('BiquadFilterNode.getFrequencyResponse') @DocsEditable() - void getFrequencyResponse(Float32List frequencyHz, Float32List magResponse, Float32List phaseResponse) => _blink.BlinkBiquadFilterNode.getFrequencyResponse_Callback_Float32Array_Float32Array_Float32Array(this, frequencyHz, magResponse, phaseResponse); + void getFrequencyResponse(Float32List frequencyHz, Float32List magResponse, Float32List phaseResponse) => _blink.BlinkBiquadFilterNode.getFrequencyResponse_Callback_3(this, frequencyHz, magResponse, phaseResponse); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -756,7 +756,7 @@ class ConvolverNode extends AudioNode { @DomName('ConvolverNode.buffer') @DocsEditable() - void set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.buffer_Setter_AudioBuffer(this, value); + void set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.buffer_Setter(this, value); @DomName('ConvolverNode.normalize') @DocsEditable() @@ -764,7 +764,7 @@ class ConvolverNode extends AudioNode { @DomName('ConvolverNode.normalize') @DocsEditable() - void set normalize(bool value) => _blink.BlinkConvolverNode.normalize_Setter_boolean(this, value); + void set normalize(bool value) => _blink.BlinkConvolverNode.normalize_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -946,7 +946,7 @@ class OfflineAudioContext extends AudioContext { @DomName('OfflineAudioContext.OfflineAudioContext') @DocsEditable() factory OfflineAudioContext(int numberOfChannels, int numberOfFrames, num sampleRate) { - return _blink.BlinkOfflineAudioContext.constructorCallback_ul_ul_float(numberOfChannels, numberOfFrames, sampleRate); + return _blink.BlinkOfflineAudioContext.constructorCallback_3(numberOfChannels, numberOfFrames, sampleRate); } } @@ -990,24 +990,24 @@ class OscillatorNode extends AudioSourceNode { @DomName('OscillatorNode.type') @DocsEditable() - void set type(String value) => _blink.BlinkOscillatorNode.type_Setter_DOMString(this, value); + void set type(String value) => _blink.BlinkOscillatorNode.type_Setter(this, value); @DomName('OscillatorNode.noteOff') @DocsEditable() - void noteOff(num when) => _blink.BlinkOscillatorNode.noteOff_Callback_double(this, when); + void noteOff(num when) => _blink.BlinkOscillatorNode.noteOff_Callback_1(this, when); @DomName('OscillatorNode.noteOn') @DocsEditable() - void noteOn(num when) => _blink.BlinkOscillatorNode.noteOn_Callback_double(this, when); + void noteOn(num when) => _blink.BlinkOscillatorNode.noteOn_Callback_1(this, when); @DomName('OscillatorNode.setPeriodicWave') @DocsEditable() @Experimental() // untriaged - void setPeriodicWave(PeriodicWave periodicWave) => _blink.BlinkOscillatorNode.setPeriodicWave_Callback_PeriodicWave(this, periodicWave); + void setPeriodicWave(PeriodicWave periodicWave) => _blink.BlinkOscillatorNode.setPeriodicWave_Callback_1(this, periodicWave); void start([num when]) { if (when != null) { - _blink.BlinkOscillatorNode.start_Callback_double(this, when); + _blink.BlinkOscillatorNode.start_Callback_1(this, when); return; } _blink.BlinkOscillatorNode.start_Callback(this); @@ -1016,7 +1016,7 @@ class OscillatorNode extends AudioSourceNode { void stop([num when]) { if (when != null) { - _blink.BlinkOscillatorNode.stop_Callback_double(this, when); + _blink.BlinkOscillatorNode.stop_Callback_1(this, when); return; } _blink.BlinkOscillatorNode.stop_Callback(this); @@ -1051,7 +1051,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.coneInnerAngle') @DocsEditable() - void set coneInnerAngle(num value) => _blink.BlinkPannerNode.coneInnerAngle_Setter_double(this, value); + void set coneInnerAngle(num value) => _blink.BlinkPannerNode.coneInnerAngle_Setter(this, value); @DomName('PannerNode.coneOuterAngle') @DocsEditable() @@ -1059,7 +1059,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.coneOuterAngle') @DocsEditable() - void set coneOuterAngle(num value) => _blink.BlinkPannerNode.coneOuterAngle_Setter_double(this, value); + void set coneOuterAngle(num value) => _blink.BlinkPannerNode.coneOuterAngle_Setter(this, value); @DomName('PannerNode.coneOuterGain') @DocsEditable() @@ -1067,7 +1067,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.coneOuterGain') @DocsEditable() - void set coneOuterGain(num value) => _blink.BlinkPannerNode.coneOuterGain_Setter_double(this, value); + void set coneOuterGain(num value) => _blink.BlinkPannerNode.coneOuterGain_Setter(this, value); @DomName('PannerNode.distanceModel') @DocsEditable() @@ -1075,7 +1075,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.distanceModel') @DocsEditable() - void set distanceModel(String value) => _blink.BlinkPannerNode.distanceModel_Setter_DOMString(this, value); + void set distanceModel(String value) => _blink.BlinkPannerNode.distanceModel_Setter(this, value); @DomName('PannerNode.maxDistance') @DocsEditable() @@ -1083,7 +1083,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.maxDistance') @DocsEditable() - void set maxDistance(num value) => _blink.BlinkPannerNode.maxDistance_Setter_double(this, value); + void set maxDistance(num value) => _blink.BlinkPannerNode.maxDistance_Setter(this, value); @DomName('PannerNode.panningModel') @DocsEditable() @@ -1091,7 +1091,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.panningModel') @DocsEditable() - void set panningModel(String value) => _blink.BlinkPannerNode.panningModel_Setter_DOMString(this, value); + void set panningModel(String value) => _blink.BlinkPannerNode.panningModel_Setter(this, value); @DomName('PannerNode.refDistance') @DocsEditable() @@ -1099,7 +1099,7 @@ class PannerNode extends AudioNode { @DomName('PannerNode.refDistance') @DocsEditable() - void set refDistance(num value) => _blink.BlinkPannerNode.refDistance_Setter_double(this, value); + void set refDistance(num value) => _blink.BlinkPannerNode.refDistance_Setter(this, value); @DomName('PannerNode.rolloffFactor') @DocsEditable() @@ -1107,19 +1107,19 @@ class PannerNode extends AudioNode { @DomName('PannerNode.rolloffFactor') @DocsEditable() - void set rolloffFactor(num value) => _blink.BlinkPannerNode.rolloffFactor_Setter_double(this, value); + void set rolloffFactor(num value) => _blink.BlinkPannerNode.rolloffFactor_Setter(this, value); @DomName('PannerNode.setOrientation') @DocsEditable() - void setOrientation(num x, num y, num z) => _blink.BlinkPannerNode.setOrientation_Callback_float_float_float(this, x, y, z); + void setOrientation(num x, num y, num z) => _blink.BlinkPannerNode.setOrientation_Callback_3(this, x, y, z); @DomName('PannerNode.setPosition') @DocsEditable() - void setPosition(num x, num y, num z) => _blink.BlinkPannerNode.setPosition_Callback_float_float_float(this, x, y, z); + void setPosition(num x, num y, num z) => _blink.BlinkPannerNode.setPosition_Callback_3(this, x, y, z); @DomName('PannerNode.setVelocity') @DocsEditable() - void setVelocity(num x, num y, num z) => _blink.BlinkPannerNode.setVelocity_Callback_float_float_float(this, x, y, z); + void setVelocity(num x, num y, num z) => _blink.BlinkPannerNode.setVelocity_Callback_3(this, x, y, z); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1159,7 +1159,7 @@ class ScriptProcessorNode extends AudioNode { @DomName('ScriptProcessorNode.setEventListener') @DocsEditable() @Experimental() // untriaged - void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.setEventListener_Callback_EventListener(this, eventListener); + void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.setEventListener_Callback_1(this, eventListener); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1183,7 +1183,7 @@ class WaveShaperNode extends AudioNode { @DomName('WaveShaperNode.curve') @DocsEditable() - void set curve(Float32List value) => _blink.BlinkWaveShaperNode.curve_Setter_Float32Array(this, value); + void set curve(Float32List value) => _blink.BlinkWaveShaperNode.curve_Setter(this, value); @DomName('WaveShaperNode.oversample') @DocsEditable() @@ -1191,6 +1191,6 @@ class WaveShaperNode extends AudioNode { @DomName('WaveShaperNode.oversample') @DocsEditable() - void set oversample(String value) => _blink.BlinkWaveShaperNode.oversample_Setter_DOMString(this, value); + void set oversample(String value) => _blink.BlinkWaveShaperNode.oversample_Setter(this, value); } diff --git a/sdk/lib/web_gl/dartium/web_gl_dartium.dart b/sdk/lib/web_gl/dartium/web_gl_dartium.dart index 1275ae1654ab..ec946e4b8a00 100644 --- a/sdk/lib/web_gl/dartium/web_gl_dartium.dart +++ b/sdk/lib/web_gl/dartium/web_gl_dartium.dart @@ -404,17 +404,17 @@ class AngleInstancedArrays extends NativeFieldWrapperClass2 { @DomName('ANGLEInstancedArrays.drawArraysInstancedANGLE') @DocsEditable() @Experimental() // untriaged - void drawArraysInstancedAngle(int mode, int first, int count, int primcount) => _blink.BlinkANGLEInstancedArrays.drawArraysInstancedANGLE_Callback_ul_long_long_long(this, mode, first, count, primcount); + void drawArraysInstancedAngle(int mode, int first, int count, int primcount) => _blink.BlinkANGLEInstancedArrays.drawArraysInstancedANGLE_Callback_4(this, mode, first, count, primcount); @DomName('ANGLEInstancedArrays.drawElementsInstancedANGLE') @DocsEditable() @Experimental() // untriaged - void drawElementsInstancedAngle(int mode, int count, int type, int offset, int primcount) => _blink.BlinkANGLEInstancedArrays.drawElementsInstancedANGLE_Callback_ul_long_ul_ll_long(this, mode, count, type, offset, primcount); + void drawElementsInstancedAngle(int mode, int count, int type, int offset, int primcount) => _blink.BlinkANGLEInstancedArrays.drawElementsInstancedANGLE_Callback_5(this, mode, count, type, offset, primcount); @DomName('ANGLEInstancedArrays.vertexAttribDivisorANGLE') @DocsEditable() @Experimental() // untriaged - void vertexAttribDivisorAngle(int index, int divisor) => _blink.BlinkANGLEInstancedArrays.vertexAttribDivisorANGLE_Callback_ul_long(this, index, divisor); + void vertexAttribDivisorAngle(int index, int divisor) => _blink.BlinkANGLEInstancedArrays.vertexAttribDivisorANGLE_Callback_2(this, index, divisor); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -586,7 +586,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.alpha') @DocsEditable() - void set alpha(bool value) => _blink.BlinkWebGLContextAttributes.alpha_Setter_boolean(this, value); + void set alpha(bool value) => _blink.BlinkWebGLContextAttributes.alpha_Setter(this, value); @DomName('WebGLContextAttributes.antialias') @DocsEditable() @@ -594,7 +594,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.antialias') @DocsEditable() - void set antialias(bool value) => _blink.BlinkWebGLContextAttributes.antialias_Setter_boolean(this, value); + void set antialias(bool value) => _blink.BlinkWebGLContextAttributes.antialias_Setter(this, value); @DomName('WebGLContextAttributes.depth') @DocsEditable() @@ -602,7 +602,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.depth') @DocsEditable() - void set depth(bool value) => _blink.BlinkWebGLContextAttributes.depth_Setter_boolean(this, value); + void set depth(bool value) => _blink.BlinkWebGLContextAttributes.depth_Setter(this, value); @DomName('WebGLContextAttributes.failIfMajorPerformanceCaveat') @DocsEditable() @@ -612,7 +612,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.failIfMajorPerformanceCaveat') @DocsEditable() @Experimental() // untriaged - void set failIfMajorPerformanceCaveat(bool value) => _blink.BlinkWebGLContextAttributes.failIfMajorPerformanceCaveat_Setter_boolean(this, value); + void set failIfMajorPerformanceCaveat(bool value) => _blink.BlinkWebGLContextAttributes.failIfMajorPerformanceCaveat_Setter(this, value); @DomName('WebGLContextAttributes.premultipliedAlpha') @DocsEditable() @@ -620,7 +620,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.premultipliedAlpha') @DocsEditable() - void set premultipliedAlpha(bool value) => _blink.BlinkWebGLContextAttributes.premultipliedAlpha_Setter_boolean(this, value); + void set premultipliedAlpha(bool value) => _blink.BlinkWebGLContextAttributes.premultipliedAlpha_Setter(this, value); @DomName('WebGLContextAttributes.preserveDrawingBuffer') @DocsEditable() @@ -628,7 +628,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.preserveDrawingBuffer') @DocsEditable() - void set preserveDrawingBuffer(bool value) => _blink.BlinkWebGLContextAttributes.preserveDrawingBuffer_Setter_boolean(this, value); + void set preserveDrawingBuffer(bool value) => _blink.BlinkWebGLContextAttributes.preserveDrawingBuffer_Setter(this, value); @DomName('WebGLContextAttributes.stencil') @DocsEditable() @@ -636,7 +636,7 @@ class ContextAttributes extends NativeFieldWrapperClass2 { @DomName('WebGLContextAttributes.stencil') @DocsEditable() - void set stencil(bool value) => _blink.BlinkWebGLContextAttributes.stencil_Setter_boolean(this, value); + void set stencil(bool value) => _blink.BlinkWebGLContextAttributes.stencil_Setter(this, value); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -699,7 +699,7 @@ class DebugShaders extends NativeFieldWrapperClass2 { @DomName('WebGLDebugShaders.getTranslatedShaderSource') @DocsEditable() - String getTranslatedShaderSource(Shader shader) => _blink.BlinkWebGLDebugShaders.getTranslatedShaderSource_Callback_WebGLShader(this, shader); + String getTranslatedShaderSource(Shader shader) => _blink.BlinkWebGLDebugShaders.getTranslatedShaderSource_Callback_1(this, shader); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -875,7 +875,7 @@ class DrawBuffers extends NativeFieldWrapperClass2 { @DomName('WebGLDrawBuffers.drawBuffersWEBGL') @DocsEditable() - void drawBuffersWebgl(List buffers) => _blink.BlinkWebGLDrawBuffers.drawBuffersWEBGL_Callback_SEQ_ul_SEQ(this, buffers); + void drawBuffersWebgl(List buffers) => _blink.BlinkWebGLDrawBuffers.drawBuffersWEBGL_Callback_1(this, buffers); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -1122,7 +1122,7 @@ class OesVertexArrayObject extends NativeFieldWrapperClass2 { @DomName('OESVertexArrayObject.bindVertexArrayOES') @DocsEditable() - void bindVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.bindVertexArrayOES_Callback_WebGLVertexArrayObjectOES(this, arrayObject); + void bindVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.bindVertexArrayOES_Callback_1(this, arrayObject); @DomName('OESVertexArrayObject.createVertexArrayOES') @DocsEditable() @@ -1130,11 +1130,11 @@ class OesVertexArrayObject extends NativeFieldWrapperClass2 { @DomName('OESVertexArrayObject.deleteVertexArrayOES') @DocsEditable() - void deleteVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.deleteVertexArrayOES_Callback_WebGLVertexArrayObjectOES(this, arrayObject); + void deleteVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.deleteVertexArrayOES_Callback_1(this, arrayObject); @DomName('OESVertexArrayObject.isVertexArrayOES') @DocsEditable() - bool isVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.isVertexArrayOES_Callback_WebGLVertexArrayObjectOES(this, arrayObject); + bool isVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.isVertexArrayOES_Callback_1(this, arrayObject); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -2389,67 +2389,67 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.activeTexture') @DocsEditable() - void activeTexture(int texture) => _blink.BlinkWebGLRenderingContext.activeTexture_Callback_ul(this, texture); + void activeTexture(int texture) => _blink.BlinkWebGLRenderingContext.activeTexture_Callback_1(this, texture); @DomName('WebGLRenderingContext.attachShader') @DocsEditable() - void attachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.attachShader_Callback_WebGLProgram_WebGLShader(this, program, shader); + void attachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.attachShader_Callback_2(this, program, shader); @DomName('WebGLRenderingContext.bindAttribLocation') @DocsEditable() - void bindAttribLocation(Program program, int index, String name) => _blink.BlinkWebGLRenderingContext.bindAttribLocation_Callback_WebGLProgram_ul_DOMString(this, program, index, name); + void bindAttribLocation(Program program, int index, String name) => _blink.BlinkWebGLRenderingContext.bindAttribLocation_Callback_3(this, program, index, name); @DomName('WebGLRenderingContext.bindBuffer') @DocsEditable() - void bindBuffer(int target, Buffer buffer) => _blink.BlinkWebGLRenderingContext.bindBuffer_Callback_ul_WebGLBuffer(this, target, buffer); + void bindBuffer(int target, Buffer buffer) => _blink.BlinkWebGLRenderingContext.bindBuffer_Callback_2(this, target, buffer); @DomName('WebGLRenderingContext.bindFramebuffer') @DocsEditable() - void bindFramebuffer(int target, Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.bindFramebuffer_Callback_ul_WebGLFramebuffer(this, target, framebuffer); + void bindFramebuffer(int target, Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.bindFramebuffer_Callback_2(this, target, framebuffer); @DomName('WebGLRenderingContext.bindRenderbuffer') @DocsEditable() - void bindRenderbuffer(int target, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.bindRenderbuffer_Callback_ul_WebGLRenderbuffer(this, target, renderbuffer); + void bindRenderbuffer(int target, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.bindRenderbuffer_Callback_2(this, target, renderbuffer); @DomName('WebGLRenderingContext.bindTexture') @DocsEditable() - void bindTexture(int target, Texture texture) => _blink.BlinkWebGLRenderingContext.bindTexture_Callback_ul_WebGLTexture(this, target, texture); + void bindTexture(int target, Texture texture) => _blink.BlinkWebGLRenderingContext.bindTexture_Callback_2(this, target, texture); @DomName('WebGLRenderingContext.blendColor') @DocsEditable() - void blendColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.blendColor_Callback_float_float_float_float(this, red, green, blue, alpha); + void blendColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.blendColor_Callback_4(this, red, green, blue, alpha); @DomName('WebGLRenderingContext.blendEquation') @DocsEditable() - void blendEquation(int mode) => _blink.BlinkWebGLRenderingContext.blendEquation_Callback_ul(this, mode); + void blendEquation(int mode) => _blink.BlinkWebGLRenderingContext.blendEquation_Callback_1(this, mode); @DomName('WebGLRenderingContext.blendEquationSeparate') @DocsEditable() - void blendEquationSeparate(int modeRGB, int modeAlpha) => _blink.BlinkWebGLRenderingContext.blendEquationSeparate_Callback_ul_ul(this, modeRGB, modeAlpha); + void blendEquationSeparate(int modeRGB, int modeAlpha) => _blink.BlinkWebGLRenderingContext.blendEquationSeparate_Callback_2(this, modeRGB, modeAlpha); @DomName('WebGLRenderingContext.blendFunc') @DocsEditable() - void blendFunc(int sfactor, int dfactor) => _blink.BlinkWebGLRenderingContext.blendFunc_Callback_ul_ul(this, sfactor, dfactor); + void blendFunc(int sfactor, int dfactor) => _blink.BlinkWebGLRenderingContext.blendFunc_Callback_2(this, sfactor, dfactor); @DomName('WebGLRenderingContext.blendFuncSeparate') @DocsEditable() - void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) => _blink.BlinkWebGLRenderingContext.blendFuncSeparate_Callback_ul_ul_ul_ul(this, srcRGB, dstRGB, srcAlpha, dstAlpha); + void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) => _blink.BlinkWebGLRenderingContext.blendFuncSeparate_Callback_4(this, srcRGB, dstRGB, srcAlpha, dstAlpha); @DomName('WebGLRenderingContext.bufferByteData') @DocsEditable() - void bufferByteData(int target, ByteBuffer data, int usage) => _blink.BlinkWebGLRenderingContext.bufferData_Callback_ul_ArrayBuffer_ul(this, target, data, usage); + void bufferByteData(int target, ByteBuffer data, int usage) => _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data, usage); void bufferData(int target, data_OR_size, int usage) { if ((usage is int) && (data_OR_size is int) && (target is int)) { - _blink.BlinkWebGLRenderingContext.bufferData_Callback_ul_ll_ul(this, target, data_OR_size, usage); + _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data_OR_size, usage); return; } if ((usage is int) && (data_OR_size is TypedData) && (target is int)) { - _blink.BlinkWebGLRenderingContext.bufferData_Callback_ul_ArrayBufferView_ul(this, target, data_OR_size, usage); + _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data_OR_size, usage); return; } if ((usage is int) && (data_OR_size is ByteBuffer || data_OR_size == null) && (target is int)) { - _blink.BlinkWebGLRenderingContext.bufferData_Callback_ul_ArrayBuffer_ul(this, target, data_OR_size, usage); + _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data_OR_size, usage); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2457,19 +2457,19 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.bufferDataTyped') @DocsEditable() - void bufferDataTyped(int target, TypedData data, int usage) => _blink.BlinkWebGLRenderingContext.bufferData_Callback_ul_ArrayBufferView_ul(this, target, data, usage); + void bufferDataTyped(int target, TypedData data, int usage) => _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data, usage); @DomName('WebGLRenderingContext.bufferSubByteData') @DocsEditable() - void bufferSubByteData(int target, int offset, ByteBuffer data) => _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_ul_ll_ArrayBuffer(this, target, offset, data); + void bufferSubByteData(int target, int offset, ByteBuffer data) => _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data); void bufferSubData(int target, int offset, data) { if ((data is TypedData) && (offset is int) && (target is int)) { - _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_ul_ll_ArrayBufferView(this, target, offset, data); + _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data); return; } if ((data is ByteBuffer || data == null) && (offset is int) && (target is int)) { - _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_ul_ll_ArrayBuffer(this, target, offset, data); + _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2477,51 +2477,51 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.bufferSubDataTyped') @DocsEditable() - void bufferSubDataTyped(int target, int offset, TypedData data) => _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_ul_ll_ArrayBufferView(this, target, offset, data); + void bufferSubDataTyped(int target, int offset, TypedData data) => _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data); @DomName('WebGLRenderingContext.checkFramebufferStatus') @DocsEditable() - int checkFramebufferStatus(int target) => _blink.BlinkWebGLRenderingContext.checkFramebufferStatus_Callback_ul(this, target); + int checkFramebufferStatus(int target) => _blink.BlinkWebGLRenderingContext.checkFramebufferStatus_Callback_1(this, target); @DomName('WebGLRenderingContext.clear') @DocsEditable() - void clear(int mask) => _blink.BlinkWebGLRenderingContext.clear_Callback_ul(this, mask); + void clear(int mask) => _blink.BlinkWebGLRenderingContext.clear_Callback_1(this, mask); @DomName('WebGLRenderingContext.clearColor') @DocsEditable() - void clearColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.clearColor_Callback_float_float_float_float(this, red, green, blue, alpha); + void clearColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.clearColor_Callback_4(this, red, green, blue, alpha); @DomName('WebGLRenderingContext.clearDepth') @DocsEditable() - void clearDepth(num depth) => _blink.BlinkWebGLRenderingContext.clearDepth_Callback_float(this, depth); + void clearDepth(num depth) => _blink.BlinkWebGLRenderingContext.clearDepth_Callback_1(this, depth); @DomName('WebGLRenderingContext.clearStencil') @DocsEditable() - void clearStencil(int s) => _blink.BlinkWebGLRenderingContext.clearStencil_Callback_long(this, s); + void clearStencil(int s) => _blink.BlinkWebGLRenderingContext.clearStencil_Callback_1(this, s); @DomName('WebGLRenderingContext.colorMask') @DocsEditable() - void colorMask(bool red, bool green, bool blue, bool alpha) => _blink.BlinkWebGLRenderingContext.colorMask_Callback_boolean_boolean_boolean_boolean(this, red, green, blue, alpha); + void colorMask(bool red, bool green, bool blue, bool alpha) => _blink.BlinkWebGLRenderingContext.colorMask_Callback_4(this, red, green, blue, alpha); @DomName('WebGLRenderingContext.compileShader') @DocsEditable() - void compileShader(Shader shader) => _blink.BlinkWebGLRenderingContext.compileShader_Callback_WebGLShader(this, shader); + void compileShader(Shader shader) => _blink.BlinkWebGLRenderingContext.compileShader_Callback_1(this, shader); @DomName('WebGLRenderingContext.compressedTexImage2D') @DocsEditable() - void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, TypedData data) => _blink.BlinkWebGLRenderingContext.compressedTexImage2D_Callback_ul_long_ul_long_long_long_ArrayBufferView(this, target, level, internalformat, width, height, border, data); + void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, TypedData data) => _blink.BlinkWebGLRenderingContext.compressedTexImage2D_Callback_7(this, target, level, internalformat, width, height, border, data); @DomName('WebGLRenderingContext.compressedTexSubImage2D') @DocsEditable() - void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, TypedData data) => _blink.BlinkWebGLRenderingContext.compressedTexSubImage2D_Callback_ul_long_long_long_long_long_ul_ArrayBufferView(this, target, level, xoffset, yoffset, width, height, format, data); + void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, TypedData data) => _blink.BlinkWebGLRenderingContext.compressedTexSubImage2D_Callback_8(this, target, level, xoffset, yoffset, width, height, format, data); @DomName('WebGLRenderingContext.copyTexImage2D') @DocsEditable() - void copyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border) => _blink.BlinkWebGLRenderingContext.copyTexImage2D_Callback_ul_long_ul_long_long_long_long_long(this, target, level, internalformat, x, y, width, height, border); + void copyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border) => _blink.BlinkWebGLRenderingContext.copyTexImage2D_Callback_8(this, target, level, internalformat, x, y, width, height, border); @DomName('WebGLRenderingContext.copyTexSubImage2D') @DocsEditable() - void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.copyTexSubImage2D_Callback_ul_long_long_long_long_long_long_long(this, target, level, xoffset, yoffset, x, y, width, height); + void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.copyTexSubImage2D_Callback_8(this, target, level, xoffset, yoffset, x, y, width, height); @DomName('WebGLRenderingContext.createBuffer') @DocsEditable() @@ -2541,7 +2541,7 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.createShader') @DocsEditable() - Shader createShader(int type) => _blink.BlinkWebGLRenderingContext.createShader_Callback_ul(this, type); + Shader createShader(int type) => _blink.BlinkWebGLRenderingContext.createShader_Callback_1(this, type); @DomName('WebGLRenderingContext.createTexture') @DocsEditable() @@ -2549,71 +2549,71 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.cullFace') @DocsEditable() - void cullFace(int mode) => _blink.BlinkWebGLRenderingContext.cullFace_Callback_ul(this, mode); + void cullFace(int mode) => _blink.BlinkWebGLRenderingContext.cullFace_Callback_1(this, mode); @DomName('WebGLRenderingContext.deleteBuffer') @DocsEditable() - void deleteBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.deleteBuffer_Callback_WebGLBuffer(this, buffer); + void deleteBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.deleteBuffer_Callback_1(this, buffer); @DomName('WebGLRenderingContext.deleteFramebuffer') @DocsEditable() - void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.deleteFramebuffer_Callback_WebGLFramebuffer(this, framebuffer); + void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.deleteFramebuffer_Callback_1(this, framebuffer); @DomName('WebGLRenderingContext.deleteProgram') @DocsEditable() - void deleteProgram(Program program) => _blink.BlinkWebGLRenderingContext.deleteProgram_Callback_WebGLProgram(this, program); + void deleteProgram(Program program) => _blink.BlinkWebGLRenderingContext.deleteProgram_Callback_1(this, program); @DomName('WebGLRenderingContext.deleteRenderbuffer') @DocsEditable() - void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.deleteRenderbuffer_Callback_WebGLRenderbuffer(this, renderbuffer); + void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.deleteRenderbuffer_Callback_1(this, renderbuffer); @DomName('WebGLRenderingContext.deleteShader') @DocsEditable() - void deleteShader(Shader shader) => _blink.BlinkWebGLRenderingContext.deleteShader_Callback_WebGLShader(this, shader); + void deleteShader(Shader shader) => _blink.BlinkWebGLRenderingContext.deleteShader_Callback_1(this, shader); @DomName('WebGLRenderingContext.deleteTexture') @DocsEditable() - void deleteTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.deleteTexture_Callback_WebGLTexture(this, texture); + void deleteTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.deleteTexture_Callback_1(this, texture); @DomName('WebGLRenderingContext.depthFunc') @DocsEditable() - void depthFunc(int func) => _blink.BlinkWebGLRenderingContext.depthFunc_Callback_ul(this, func); + void depthFunc(int func) => _blink.BlinkWebGLRenderingContext.depthFunc_Callback_1(this, func); @DomName('WebGLRenderingContext.depthMask') @DocsEditable() - void depthMask(bool flag) => _blink.BlinkWebGLRenderingContext.depthMask_Callback_boolean(this, flag); + void depthMask(bool flag) => _blink.BlinkWebGLRenderingContext.depthMask_Callback_1(this, flag); @DomName('WebGLRenderingContext.depthRange') @DocsEditable() - void depthRange(num zNear, num zFar) => _blink.BlinkWebGLRenderingContext.depthRange_Callback_float_float(this, zNear, zFar); + void depthRange(num zNear, num zFar) => _blink.BlinkWebGLRenderingContext.depthRange_Callback_2(this, zNear, zFar); @DomName('WebGLRenderingContext.detachShader') @DocsEditable() - void detachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.detachShader_Callback_WebGLProgram_WebGLShader(this, program, shader); + void detachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.detachShader_Callback_2(this, program, shader); @DomName('WebGLRenderingContext.disable') @DocsEditable() - void disable(int cap) => _blink.BlinkWebGLRenderingContext.disable_Callback_ul(this, cap); + void disable(int cap) => _blink.BlinkWebGLRenderingContext.disable_Callback_1(this, cap); @DomName('WebGLRenderingContext.disableVertexAttribArray') @DocsEditable() - void disableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.disableVertexAttribArray_Callback_ul(this, index); + void disableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.disableVertexAttribArray_Callback_1(this, index); @DomName('WebGLRenderingContext.drawArrays') @DocsEditable() - void drawArrays(int mode, int first, int count) => _blink.BlinkWebGLRenderingContext.drawArrays_Callback_ul_long_long(this, mode, first, count); + void drawArrays(int mode, int first, int count) => _blink.BlinkWebGLRenderingContext.drawArrays_Callback_3(this, mode, first, count); @DomName('WebGLRenderingContext.drawElements') @DocsEditable() - void drawElements(int mode, int count, int type, int offset) => _blink.BlinkWebGLRenderingContext.drawElements_Callback_ul_long_ul_ll(this, mode, count, type, offset); + void drawElements(int mode, int count, int type, int offset) => _blink.BlinkWebGLRenderingContext.drawElements_Callback_4(this, mode, count, type, offset); @DomName('WebGLRenderingContext.enable') @DocsEditable() - void enable(int cap) => _blink.BlinkWebGLRenderingContext.enable_Callback_ul(this, cap); + void enable(int cap) => _blink.BlinkWebGLRenderingContext.enable_Callback_1(this, cap); @DomName('WebGLRenderingContext.enableVertexAttribArray') @DocsEditable() - void enableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.enableVertexAttribArray_Callback_ul(this, index); + void enableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.enableVertexAttribArray_Callback_1(this, index); @DomName('WebGLRenderingContext.finish') @DocsEditable() @@ -2625,39 +2625,39 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.framebufferRenderbuffer') @DocsEditable() - void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.framebufferRenderbuffer_Callback_ul_ul_ul_WebGLRenderbuffer(this, target, attachment, renderbuffertarget, renderbuffer); + void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.framebufferRenderbuffer_Callback_4(this, target, attachment, renderbuffertarget, renderbuffer); @DomName('WebGLRenderingContext.framebufferTexture2D') @DocsEditable() - void framebufferTexture2D(int target, int attachment, int textarget, Texture texture, int level) => _blink.BlinkWebGLRenderingContext.framebufferTexture2D_Callback_ul_ul_ul_WebGLTexture_long(this, target, attachment, textarget, texture, level); + void framebufferTexture2D(int target, int attachment, int textarget, Texture texture, int level) => _blink.BlinkWebGLRenderingContext.framebufferTexture2D_Callback_5(this, target, attachment, textarget, texture, level); @DomName('WebGLRenderingContext.frontFace') @DocsEditable() - void frontFace(int mode) => _blink.BlinkWebGLRenderingContext.frontFace_Callback_ul(this, mode); + void frontFace(int mode) => _blink.BlinkWebGLRenderingContext.frontFace_Callback_1(this, mode); @DomName('WebGLRenderingContext.generateMipmap') @DocsEditable() - void generateMipmap(int target) => _blink.BlinkWebGLRenderingContext.generateMipmap_Callback_ul(this, target); + void generateMipmap(int target) => _blink.BlinkWebGLRenderingContext.generateMipmap_Callback_1(this, target); @DomName('WebGLRenderingContext.getActiveAttrib') @DocsEditable() - ActiveInfo getActiveAttrib(Program program, int index) => _blink.BlinkWebGLRenderingContext.getActiveAttrib_Callback_WebGLProgram_ul(this, program, index); + ActiveInfo getActiveAttrib(Program program, int index) => _blink.BlinkWebGLRenderingContext.getActiveAttrib_Callback_2(this, program, index); @DomName('WebGLRenderingContext.getActiveUniform') @DocsEditable() - ActiveInfo getActiveUniform(Program program, int index) => _blink.BlinkWebGLRenderingContext.getActiveUniform_Callback_WebGLProgram_ul(this, program, index); + ActiveInfo getActiveUniform(Program program, int index) => _blink.BlinkWebGLRenderingContext.getActiveUniform_Callback_2(this, program, index); @DomName('WebGLRenderingContext.getAttachedShaders') @DocsEditable() - List getAttachedShaders(Program program) => _blink.BlinkWebGLRenderingContext.getAttachedShaders_Callback_WebGLProgram(this, program); + List getAttachedShaders(Program program) => _blink.BlinkWebGLRenderingContext.getAttachedShaders_Callback_1(this, program); @DomName('WebGLRenderingContext.getAttribLocation') @DocsEditable() - int getAttribLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.getAttribLocation_Callback_WebGLProgram_DOMString(this, program, name); + int getAttribLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.getAttribLocation_Callback_2(this, program, name); @DomName('WebGLRenderingContext.getBufferParameter') @DocsEditable() - Object getBufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getBufferParameter_Callback_ul_ul(this, target, pname); + Object getBufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getBufferParameter_Callback_2(this, target, pname); @DomName('WebGLRenderingContext.getContextAttributes') @DocsEditable() @@ -2669,43 +2669,43 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.getExtension') @DocsEditable() - Object getExtension(String name) => _blink.BlinkWebGLRenderingContext.getExtension_Callback_DOMString(this, name); + Object getExtension(String name) => _blink.BlinkWebGLRenderingContext.getExtension_Callback_1(this, name); @DomName('WebGLRenderingContext.getFramebufferAttachmentParameter') @DocsEditable() - Object getFramebufferAttachmentParameter(int target, int attachment, int pname) => _blink.BlinkWebGLRenderingContext.getFramebufferAttachmentParameter_Callback_ul_ul_ul(this, target, attachment, pname); + Object getFramebufferAttachmentParameter(int target, int attachment, int pname) => _blink.BlinkWebGLRenderingContext.getFramebufferAttachmentParameter_Callback_3(this, target, attachment, pname); @DomName('WebGLRenderingContext.getParameter') @DocsEditable() - Object getParameter(int pname) => _blink.BlinkWebGLRenderingContext.getParameter_Callback_ul(this, pname); + Object getParameter(int pname) => _blink.BlinkWebGLRenderingContext.getParameter_Callback_1(this, pname); @DomName('WebGLRenderingContext.getProgramInfoLog') @DocsEditable() - String getProgramInfoLog(Program program) => _blink.BlinkWebGLRenderingContext.getProgramInfoLog_Callback_WebGLProgram(this, program); + String getProgramInfoLog(Program program) => _blink.BlinkWebGLRenderingContext.getProgramInfoLog_Callback_1(this, program); @DomName('WebGLRenderingContext.getProgramParameter') @DocsEditable() - Object getProgramParameter(Program program, int pname) => _blink.BlinkWebGLRenderingContext.getProgramParameter_Callback_WebGLProgram_ul(this, program, pname); + Object getProgramParameter(Program program, int pname) => _blink.BlinkWebGLRenderingContext.getProgramParameter_Callback_2(this, program, pname); @DomName('WebGLRenderingContext.getRenderbufferParameter') @DocsEditable() - Object getRenderbufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getRenderbufferParameter_Callback_ul_ul(this, target, pname); + Object getRenderbufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getRenderbufferParameter_Callback_2(this, target, pname); @DomName('WebGLRenderingContext.getShaderInfoLog') @DocsEditable() - String getShaderInfoLog(Shader shader) => _blink.BlinkWebGLRenderingContext.getShaderInfoLog_Callback_WebGLShader(this, shader); + String getShaderInfoLog(Shader shader) => _blink.BlinkWebGLRenderingContext.getShaderInfoLog_Callback_1(this, shader); @DomName('WebGLRenderingContext.getShaderParameter') @DocsEditable() - Object getShaderParameter(Shader shader, int pname) => _blink.BlinkWebGLRenderingContext.getShaderParameter_Callback_WebGLShader_ul(this, shader, pname); + Object getShaderParameter(Shader shader, int pname) => _blink.BlinkWebGLRenderingContext.getShaderParameter_Callback_2(this, shader, pname); @DomName('WebGLRenderingContext.getShaderPrecisionFormat') @DocsEditable() - ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => _blink.BlinkWebGLRenderingContext.getShaderPrecisionFormat_Callback_ul_ul(this, shadertype, precisiontype); + ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => _blink.BlinkWebGLRenderingContext.getShaderPrecisionFormat_Callback_2(this, shadertype, precisiontype); @DomName('WebGLRenderingContext.getShaderSource') @DocsEditable() - String getShaderSource(Shader shader) => _blink.BlinkWebGLRenderingContext.getShaderSource_Callback_WebGLShader(this, shader); + String getShaderSource(Shader shader) => _blink.BlinkWebGLRenderingContext.getShaderSource_Callback_1(this, shader); @DomName('WebGLRenderingContext.getSupportedExtensions') @DocsEditable() @@ -2713,31 +2713,31 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.getTexParameter') @DocsEditable() - Object getTexParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getTexParameter_Callback_ul_ul(this, target, pname); + Object getTexParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getTexParameter_Callback_2(this, target, pname); @DomName('WebGLRenderingContext.getUniform') @DocsEditable() - Object getUniform(Program program, UniformLocation location) => _blink.BlinkWebGLRenderingContext.getUniform_Callback_WebGLProgram_WebGLUniformLocation(this, program, location); + Object getUniform(Program program, UniformLocation location) => _blink.BlinkWebGLRenderingContext.getUniform_Callback_2(this, program, location); @DomName('WebGLRenderingContext.getUniformLocation') @DocsEditable() - UniformLocation getUniformLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.getUniformLocation_Callback_WebGLProgram_DOMString(this, program, name); + UniformLocation getUniformLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.getUniformLocation_Callback_2(this, program, name); @DomName('WebGLRenderingContext.getVertexAttrib') @DocsEditable() - Object getVertexAttrib(int index, int pname) => _blink.BlinkWebGLRenderingContext.getVertexAttrib_Callback_ul_ul(this, index, pname); + Object getVertexAttrib(int index, int pname) => _blink.BlinkWebGLRenderingContext.getVertexAttrib_Callback_2(this, index, pname); @DomName('WebGLRenderingContext.getVertexAttribOffset') @DocsEditable() - int getVertexAttribOffset(int index, int pname) => _blink.BlinkWebGLRenderingContext.getVertexAttribOffset_Callback_ul_ul(this, index, pname); + int getVertexAttribOffset(int index, int pname) => _blink.BlinkWebGLRenderingContext.getVertexAttribOffset_Callback_2(this, index, pname); @DomName('WebGLRenderingContext.hint') @DocsEditable() - void hint(int target, int mode) => _blink.BlinkWebGLRenderingContext.hint_Callback_ul_ul(this, target, mode); + void hint(int target, int mode) => _blink.BlinkWebGLRenderingContext.hint_Callback_2(this, target, mode); @DomName('WebGLRenderingContext.isBuffer') @DocsEditable() - bool isBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.isBuffer_Callback_WebGLBuffer(this, buffer); + bool isBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.isBuffer_Callback_1(this, buffer); @DomName('WebGLRenderingContext.isContextLost') @DocsEditable() @@ -2745,107 +2745,107 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.isEnabled') @DocsEditable() - bool isEnabled(int cap) => _blink.BlinkWebGLRenderingContext.isEnabled_Callback_ul(this, cap); + bool isEnabled(int cap) => _blink.BlinkWebGLRenderingContext.isEnabled_Callback_1(this, cap); @DomName('WebGLRenderingContext.isFramebuffer') @DocsEditable() - bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.isFramebuffer_Callback_WebGLFramebuffer(this, framebuffer); + bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.isFramebuffer_Callback_1(this, framebuffer); @DomName('WebGLRenderingContext.isProgram') @DocsEditable() - bool isProgram(Program program) => _blink.BlinkWebGLRenderingContext.isProgram_Callback_WebGLProgram(this, program); + bool isProgram(Program program) => _blink.BlinkWebGLRenderingContext.isProgram_Callback_1(this, program); @DomName('WebGLRenderingContext.isRenderbuffer') @DocsEditable() - bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.isRenderbuffer_Callback_WebGLRenderbuffer(this, renderbuffer); + bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.isRenderbuffer_Callback_1(this, renderbuffer); @DomName('WebGLRenderingContext.isShader') @DocsEditable() - bool isShader(Shader shader) => _blink.BlinkWebGLRenderingContext.isShader_Callback_WebGLShader(this, shader); + bool isShader(Shader shader) => _blink.BlinkWebGLRenderingContext.isShader_Callback_1(this, shader); @DomName('WebGLRenderingContext.isTexture') @DocsEditable() - bool isTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.isTexture_Callback_WebGLTexture(this, texture); + bool isTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.isTexture_Callback_1(this, texture); @DomName('WebGLRenderingContext.lineWidth') @DocsEditable() - void lineWidth(num width) => _blink.BlinkWebGLRenderingContext.lineWidth_Callback_float(this, width); + void lineWidth(num width) => _blink.BlinkWebGLRenderingContext.lineWidth_Callback_1(this, width); @DomName('WebGLRenderingContext.linkProgram') @DocsEditable() - void linkProgram(Program program) => _blink.BlinkWebGLRenderingContext.linkProgram_Callback_WebGLProgram(this, program); + void linkProgram(Program program) => _blink.BlinkWebGLRenderingContext.linkProgram_Callback_1(this, program); @DomName('WebGLRenderingContext.pixelStorei') @DocsEditable() - void pixelStorei(int pname, int param) => _blink.BlinkWebGLRenderingContext.pixelStorei_Callback_ul_long(this, pname, param); + void pixelStorei(int pname, int param) => _blink.BlinkWebGLRenderingContext.pixelStorei_Callback_2(this, pname, param); @DomName('WebGLRenderingContext.polygonOffset') @DocsEditable() - void polygonOffset(num factor, num units) => _blink.BlinkWebGLRenderingContext.polygonOffset_Callback_float_float(this, factor, units); + void polygonOffset(num factor, num units) => _blink.BlinkWebGLRenderingContext.polygonOffset_Callback_2(this, factor, units); @DomName('WebGLRenderingContext.readPixels') @DocsEditable() - void readPixels(int x, int y, int width, int height, int format, int type, TypedData pixels) => _blink.BlinkWebGLRenderingContext.readPixels_Callback_long_long_long_long_ul_ul_ArrayBufferView(this, x, y, width, height, format, type, pixels); + void readPixels(int x, int y, int width, int height, int format, int type, TypedData pixels) => _blink.BlinkWebGLRenderingContext.readPixels_Callback_7(this, x, y, width, height, format, type, pixels); @DomName('WebGLRenderingContext.renderbufferStorage') @DocsEditable() - void renderbufferStorage(int target, int internalformat, int width, int height) => _blink.BlinkWebGLRenderingContext.renderbufferStorage_Callback_ul_ul_long_long(this, target, internalformat, width, height); + void renderbufferStorage(int target, int internalformat, int width, int height) => _blink.BlinkWebGLRenderingContext.renderbufferStorage_Callback_4(this, target, internalformat, width, height); @DomName('WebGLRenderingContext.sampleCoverage') @DocsEditable() - void sampleCoverage(num value, bool invert) => _blink.BlinkWebGLRenderingContext.sampleCoverage_Callback_float_boolean(this, value, invert); + void sampleCoverage(num value, bool invert) => _blink.BlinkWebGLRenderingContext.sampleCoverage_Callback_2(this, value, invert); @DomName('WebGLRenderingContext.scissor') @DocsEditable() - void scissor(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.scissor_Callback_long_long_long_long(this, x, y, width, height); + void scissor(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.scissor_Callback_4(this, x, y, width, height); @DomName('WebGLRenderingContext.shaderSource') @DocsEditable() - void shaderSource(Shader shader, String string) => _blink.BlinkWebGLRenderingContext.shaderSource_Callback_WebGLShader_DOMString(this, shader, string); + void shaderSource(Shader shader, String string) => _blink.BlinkWebGLRenderingContext.shaderSource_Callback_2(this, shader, string); @DomName('WebGLRenderingContext.stencilFunc') @DocsEditable() - void stencilFunc(int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.stencilFunc_Callback_ul_long_ul(this, func, ref, mask); + void stencilFunc(int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.stencilFunc_Callback_3(this, func, ref, mask); @DomName('WebGLRenderingContext.stencilFuncSeparate') @DocsEditable() - void stencilFuncSeparate(int face, int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.stencilFuncSeparate_Callback_ul_ul_long_ul(this, face, func, ref, mask); + void stencilFuncSeparate(int face, int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.stencilFuncSeparate_Callback_4(this, face, func, ref, mask); @DomName('WebGLRenderingContext.stencilMask') @DocsEditable() - void stencilMask(int mask) => _blink.BlinkWebGLRenderingContext.stencilMask_Callback_ul(this, mask); + void stencilMask(int mask) => _blink.BlinkWebGLRenderingContext.stencilMask_Callback_1(this, mask); @DomName('WebGLRenderingContext.stencilMaskSeparate') @DocsEditable() - void stencilMaskSeparate(int face, int mask) => _blink.BlinkWebGLRenderingContext.stencilMaskSeparate_Callback_ul_ul(this, face, mask); + void stencilMaskSeparate(int face, int mask) => _blink.BlinkWebGLRenderingContext.stencilMaskSeparate_Callback_2(this, face, mask); @DomName('WebGLRenderingContext.stencilOp') @DocsEditable() - void stencilOp(int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.stencilOp_Callback_ul_ul_ul(this, fail, zfail, zpass); + void stencilOp(int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.stencilOp_Callback_3(this, fail, zfail, zpass); @DomName('WebGLRenderingContext.stencilOpSeparate') @DocsEditable() - void stencilOpSeparate(int face, int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.stencilOpSeparate_Callback_ul_ul_ul_ul(this, face, fail, zfail, zpass); + void stencilOpSeparate(int face, int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.stencilOpSeparate_Callback_4(this, face, fail, zfail, zpass); void texImage2D(int target, int level, int internalformat, int format_OR_width, int height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, [int format, int type, TypedData pixels]) { if ((pixels is TypedData || pixels == null) && (type is int) && (format is int) && (border_OR_canvas_OR_image_OR_pixels_OR_video is int) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int)) { - _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_long_long_long_ul_ul_ArrayBufferView(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels); + _blink.BlinkWebGLRenderingContext.texImage2D_Callback_9(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels); return; } if ((border_OR_canvas_OR_image_OR_pixels_OR_video is ImageData || border_OR_canvas_OR_image_OR_pixels_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_ImageData(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); return; } if ((border_OR_canvas_OR_image_OR_pixels_OR_video is ImageElement) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_HTMLImageElement(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); return; } if ((border_OR_canvas_OR_image_OR_pixels_OR_video is CanvasElement) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_HTMLCanvasElement(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); return; } if ((border_OR_canvas_OR_image_OR_pixels_OR_video is VideoElement) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_HTMLVideoElement(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2853,47 +2853,47 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.texImage2DCanvas') @DocsEditable() - void texImage2DCanvas(int target, int level, int internalformat, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_HTMLCanvasElement(this, target, level, internalformat, format, type, canvas); + void texImage2DCanvas(int target, int level, int internalformat, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, canvas); @DomName('WebGLRenderingContext.texImage2DImage') @DocsEditable() - void texImage2DImage(int target, int level, int internalformat, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_HTMLImageElement(this, target, level, internalformat, format, type, image); + void texImage2DImage(int target, int level, int internalformat, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, image); @DomName('WebGLRenderingContext.texImage2DImageData') @DocsEditable() - void texImage2DImageData(int target, int level, int internalformat, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_ImageData(this, target, level, internalformat, format, type, pixels); + void texImage2DImageData(int target, int level, int internalformat, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, pixels); @DomName('WebGLRenderingContext.texImage2DVideo') @DocsEditable() - void texImage2DVideo(int target, int level, int internalformat, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_ul_long_ul_ul_ul_HTMLVideoElement(this, target, level, internalformat, format, type, video); + void texImage2DVideo(int target, int level, int internalformat, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, video); @DomName('WebGLRenderingContext.texParameterf') @DocsEditable() - void texParameterf(int target, int pname, num param) => _blink.BlinkWebGLRenderingContext.texParameterf_Callback_ul_ul_float(this, target, pname, param); + void texParameterf(int target, int pname, num param) => _blink.BlinkWebGLRenderingContext.texParameterf_Callback_3(this, target, pname, param); @DomName('WebGLRenderingContext.texParameteri') @DocsEditable() - void texParameteri(int target, int pname, int param) => _blink.BlinkWebGLRenderingContext.texParameteri_Callback_ul_ul_long(this, target, pname, param); + void texParameteri(int target, int pname, int param) => _blink.BlinkWebGLRenderingContext.texParameteri_Callback_3(this, target, pname, param); void texSubImage2D(int target, int level, int xoffset, int yoffset, int format_OR_width, int height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, [int type, TypedData pixels]) { if ((pixels is TypedData || pixels == null) && (type is int) && (canvas_OR_format_OR_image_OR_pixels_OR_video is int) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int)) { - _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_long_long_ul_ul_ArrayBufferView(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels); + _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_9(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels); return; } if ((canvas_OR_format_OR_image_OR_pixels_OR_video is ImageData || canvas_OR_format_OR_image_OR_pixels_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_ImageData(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); return; } if ((canvas_OR_format_OR_image_OR_pixels_OR_video is ImageElement) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLImageElement(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); return; } if ((canvas_OR_format_OR_image_OR_pixels_OR_video is CanvasElement) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLCanvasElement(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); return; } if ((canvas_OR_format_OR_image_OR_pixels_OR_video is VideoElement) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) { - _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLVideoElement(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); + _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video); return; } throw new ArgumentError("Incorrect number or type of arguments"); @@ -2901,143 +2901,143 @@ class RenderingContext extends NativeFieldWrapperClass2 implements CanvasRenderi @DomName('WebGLRenderingContext.texSubImage2DCanvas') @DocsEditable() - void texSubImage2DCanvas(int target, int level, int xoffset, int yoffset, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLCanvasElement(this, target, level, xoffset, yoffset, format, type, canvas); + void texSubImage2DCanvas(int target, int level, int xoffset, int yoffset, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, canvas); @DomName('WebGLRenderingContext.texSubImage2DImage') @DocsEditable() - void texSubImage2DImage(int target, int level, int xoffset, int yoffset, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLImageElement(this, target, level, xoffset, yoffset, format, type, image); + void texSubImage2DImage(int target, int level, int xoffset, int yoffset, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, image); @DomName('WebGLRenderingContext.texSubImage2DImageData') @DocsEditable() - void texSubImage2DImageData(int target, int level, int xoffset, int yoffset, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_ImageData(this, target, level, xoffset, yoffset, format, type, pixels); + void texSubImage2DImageData(int target, int level, int xoffset, int yoffset, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, pixels); @DomName('WebGLRenderingContext.texSubImage2DVideo') @DocsEditable() - void texSubImage2DVideo(int target, int level, int xoffset, int yoffset, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_ul_long_long_long_ul_ul_HTMLVideoElement(this, target, level, xoffset, yoffset, format, type, video); + void texSubImage2DVideo(int target, int level, int xoffset, int yoffset, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, video); @DomName('WebGLRenderingContext.uniform1f') @DocsEditable() - void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGLRenderingContext.uniform1f_Callback_WebGLUniformLocation_float(this, location, x); + void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGLRenderingContext.uniform1f_Callback_2(this, location, x); @DomName('WebGLRenderingContext.uniform1fv') @DocsEditable() - void uniform1fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform1fv_Callback_WebGLUniformLocation_Float32Array(this, location, v); + void uniform1fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform1fv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform1i') @DocsEditable() - void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGLRenderingContext.uniform1i_Callback_WebGLUniformLocation_long(this, location, x); + void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGLRenderingContext.uniform1i_Callback_2(this, location, x); @DomName('WebGLRenderingContext.uniform1iv') @DocsEditable() - void uniform1iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform1iv_Callback_WebGLUniformLocation_Int32Array(this, location, v); + void uniform1iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform1iv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform2f') @DocsEditable() - void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGLRenderingContext.uniform2f_Callback_WebGLUniformLocation_float_float(this, location, x, y); + void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGLRenderingContext.uniform2f_Callback_3(this, location, x, y); @DomName('WebGLRenderingContext.uniform2fv') @DocsEditable() - void uniform2fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform2fv_Callback_WebGLUniformLocation_Float32Array(this, location, v); + void uniform2fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform2fv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform2i') @DocsEditable() - void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGLRenderingContext.uniform2i_Callback_WebGLUniformLocation_long_long(this, location, x, y); + void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGLRenderingContext.uniform2i_Callback_3(this, location, x, y); @DomName('WebGLRenderingContext.uniform2iv') @DocsEditable() - void uniform2iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform2iv_Callback_WebGLUniformLocation_Int32Array(this, location, v); + void uniform2iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform2iv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform3f') @DocsEditable() - void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.uniform3f_Callback_WebGLUniformLocation_float_float_float(this, location, x, y, z); + void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.uniform3f_Callback_4(this, location, x, y, z); @DomName('WebGLRenderingContext.uniform3fv') @DocsEditable() - void uniform3fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform3fv_Callback_WebGLUniformLocation_Float32Array(this, location, v); + void uniform3fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform3fv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform3i') @DocsEditable() - void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGLRenderingContext.uniform3i_Callback_WebGLUniformLocation_long_long_long(this, location, x, y, z); + void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGLRenderingContext.uniform3i_Callback_4(this, location, x, y, z); @DomName('WebGLRenderingContext.uniform3iv') @DocsEditable() - void uniform3iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform3iv_Callback_WebGLUniformLocation_Int32Array(this, location, v); + void uniform3iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform3iv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform4f') @DocsEditable() - void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.uniform4f_Callback_WebGLUniformLocation_float_float_float_float(this, location, x, y, z, w); + void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.uniform4f_Callback_5(this, location, x, y, z, w); @DomName('WebGLRenderingContext.uniform4fv') @DocsEditable() - void uniform4fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform4fv_Callback_WebGLUniformLocation_Float32Array(this, location, v); + void uniform4fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform4fv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniform4i') @DocsEditable() - void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGLRenderingContext.uniform4i_Callback_WebGLUniformLocation_long_long_long_long(this, location, x, y, z, w); + void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGLRenderingContext.uniform4i_Callback_5(this, location, x, y, z, w); @DomName('WebGLRenderingContext.uniform4iv') @DocsEditable() - void uniform4iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform4iv_Callback_WebGLUniformLocation_Int32Array(this, location, v); + void uniform4iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform4iv_Callback_2(this, location, v); @DomName('WebGLRenderingContext.uniformMatrix2fv') @DocsEditable() - void uniformMatrix2fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix2fv_Callback_WebGLUniformLocation_boolean_Float32Array(this, location, transpose, array); + void uniformMatrix2fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix2fv_Callback_3(this, location, transpose, array); @DomName('WebGLRenderingContext.uniformMatrix3fv') @DocsEditable() - void uniformMatrix3fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix3fv_Callback_WebGLUniformLocation_boolean_Float32Array(this, location, transpose, array); + void uniformMatrix3fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix3fv_Callback_3(this, location, transpose, array); @DomName('WebGLRenderingContext.uniformMatrix4fv') @DocsEditable() - void uniformMatrix4fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix4fv_Callback_WebGLUniformLocation_boolean_Float32Array(this, location, transpose, array); + void uniformMatrix4fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix4fv_Callback_3(this, location, transpose, array); @DomName('WebGLRenderingContext.useProgram') @DocsEditable() - void useProgram(Program program) => _blink.BlinkWebGLRenderingContext.useProgram_Callback_WebGLProgram(this, program); + void useProgram(Program program) => _blink.BlinkWebGLRenderingContext.useProgram_Callback_1(this, program); @DomName('WebGLRenderingContext.validateProgram') @DocsEditable() - void validateProgram(Program program) => _blink.BlinkWebGLRenderingContext.validateProgram_Callback_WebGLProgram(this, program); + void validateProgram(Program program) => _blink.BlinkWebGLRenderingContext.validateProgram_Callback_1(this, program); @DomName('WebGLRenderingContext.vertexAttrib1f') @DocsEditable() - void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGLRenderingContext.vertexAttrib1f_Callback_ul_float(this, indx, x); + void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGLRenderingContext.vertexAttrib1f_Callback_2(this, indx, x); @DomName('WebGLRenderingContext.vertexAttrib1fv') @DocsEditable() - void vertexAttrib1fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib1fv_Callback_ul_Float32Array(this, indx, values); + void vertexAttrib1fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib1fv_Callback_2(this, indx, values); @DomName('WebGLRenderingContext.vertexAttrib2f') @DocsEditable() - void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGLRenderingContext.vertexAttrib2f_Callback_ul_float_float(this, indx, x, y); + void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGLRenderingContext.vertexAttrib2f_Callback_3(this, indx, x, y); @DomName('WebGLRenderingContext.vertexAttrib2fv') @DocsEditable() - void vertexAttrib2fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib2fv_Callback_ul_Float32Array(this, indx, values); + void vertexAttrib2fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib2fv_Callback_2(this, indx, values); @DomName('WebGLRenderingContext.vertexAttrib3f') @DocsEditable() - void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.vertexAttrib3f_Callback_ul_float_float_float(this, indx, x, y, z); + void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.vertexAttrib3f_Callback_4(this, indx, x, y, z); @DomName('WebGLRenderingContext.vertexAttrib3fv') @DocsEditable() - void vertexAttrib3fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib3fv_Callback_ul_Float32Array(this, indx, values); + void vertexAttrib3fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib3fv_Callback_2(this, indx, values); @DomName('WebGLRenderingContext.vertexAttrib4f') @DocsEditable() - void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.vertexAttrib4f_Callback_ul_float_float_float_float(this, indx, x, y, z, w); + void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.vertexAttrib4f_Callback_5(this, indx, x, y, z, w); @DomName('WebGLRenderingContext.vertexAttrib4fv') @DocsEditable() - void vertexAttrib4fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib4fv_Callback_ul_Float32Array(this, indx, values); + void vertexAttrib4fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib4fv_Callback_2(this, indx, values); @DomName('WebGLRenderingContext.vertexAttribPointer') @DocsEditable() - void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGLRenderingContext.vertexAttribPointer_Callback_ul_long_ul_boolean_long_ll(this, indx, size, type, normalized, stride, offset); + void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGLRenderingContext.vertexAttribPointer_Callback_6(this, indx, size, type, normalized, stride, offset); @DomName('WebGLRenderingContext.viewport') @DocsEditable() - void viewport(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.viewport_Callback_long_long_long_long(this, x, y, width, height); + void viewport(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.viewport_Callback_4(this, x, y, width, height); /** diff --git a/sdk/lib/web_sql/dartium/web_sql_dartium.dart b/sdk/lib/web_sql/dartium/web_sql_dartium.dart index 4b57aed595a8..2494889d51a4 100644 --- a/sdk/lib/web_sql/dartium/web_sql_dartium.dart +++ b/sdk/lib/web_sql/dartium/web_sql_dartium.dart @@ -103,29 +103,48 @@ class SqlDatabase extends NativeFieldWrapperClass2 { @DocsEditable() String get version => _blink.BlinkDatabase.version_Getter(this); - /** - * Atomically update the database version to [newVersion], asynchronously - * running [callback] on the [SqlTransaction] representing this - * [changeVersion] transaction. - * - * If [callback] runs successfully, then [successCallback] is called. - * Otherwise, [errorCallback] is called. - * - * [oldVersion] should match the database's current [version] exactly. - * - * * [Database.changeVersion](http://www.w3.org/TR/webdatabase/#dom-database-changeversion) from W3C. - */ - @DomName('Database.changeVersion') - @DocsEditable() - void changeVersion(String oldVersion, String newVersion, [SqlTransactionCallback callback, SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) => _blink.BlinkDatabase.changeVersion_Callback_DOMString_DOMString_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback(this, oldVersion, newVersion, callback, errorCallback, successCallback); + void changeVersion(String oldVersion, String newVersion, [SqlTransactionCallback callback, SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) { + if (successCallback != null) { + _blink.BlinkDatabase.changeVersion_Callback_5(this, oldVersion, newVersion, callback, errorCallback, successCallback); + return; + } + if (errorCallback != null) { + _blink.BlinkDatabase.changeVersion_Callback_4(this, oldVersion, newVersion, callback, errorCallback); + return; + } + if (callback != null) { + _blink.BlinkDatabase.changeVersion_Callback_3(this, oldVersion, newVersion, callback); + return; + } + _blink.BlinkDatabase.changeVersion_Callback_2(this, oldVersion, newVersion); + return; + } - @DomName('Database.readTransaction') - @DocsEditable() - void readTransaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) => _blink.BlinkDatabase.readTransaction_Callback_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback(this, callback, errorCallback, successCallback); + void readTransaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) { + if (successCallback != null) { + _blink.BlinkDatabase.readTransaction_Callback_3(this, callback, errorCallback, successCallback); + return; + } + if (errorCallback != null) { + _blink.BlinkDatabase.readTransaction_Callback_2(this, callback, errorCallback); + return; + } + _blink.BlinkDatabase.readTransaction_Callback_1(this, callback); + return; + } - @DomName('Database.transaction') - @DocsEditable() - void transaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) => _blink.BlinkDatabase.transaction_Callback_SQLTransactionCallback_SQLTransactionErrorCallback_VoidCallback(this, callback, errorCallback, successCallback); + void transaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) { + if (successCallback != null) { + _blink.BlinkDatabase.transaction_Callback_3(this, callback, errorCallback, successCallback); + return; + } + if (errorCallback != null) { + _blink.BlinkDatabase.transaction_Callback_2(this, callback, errorCallback); + return; + } + _blink.BlinkDatabase.transaction_Callback_1(this, callback); + return; + } } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -234,10 +253,10 @@ class SqlResultSetRowList extends NativeFieldWrapperClass2 with ListMixin, Map operator[](int index) { if (index < 0 || index >= length) throw new RangeError.range(index, 0, length); - return _blink.BlinkSQLResultSetRowList.item_Callback_ul(this, index); + return _blink.BlinkSQLResultSetRowList.item_Callback_1(this, index); } - Map _nativeIndexedGetter(int index) => _blink.BlinkSQLResultSetRowList.item_Callback_ul(this, index); + Map _nativeIndexedGetter(int index) => _blink.BlinkSQLResultSetRowList.item_Callback_1(this, index); void operator[]=(int index, Map value) { throw new UnsupportedError("Cannot assign element of immutable List."); @@ -279,7 +298,7 @@ class SqlResultSetRowList extends NativeFieldWrapperClass2 with ListMixin, @DomName('SQLResultSetRowList.item') @DocsEditable() - Map item(int index) => _blink.BlinkSQLResultSetRowList.item_Callback_ul(this, index); + Map item(int index) => _blink.BlinkSQLResultSetRowList.item_Callback_1(this, index); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file @@ -302,7 +321,7 @@ class SqlTransaction extends NativeFieldWrapperClass2 { @DomName('SQLTransaction.executeSql') @DocsEditable() - void executeSql(String sqlStatement, List arguments, [SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) => _blink.BlinkSQLTransaction.executeSql_Callback_DOMString_A_object_A_SQLStatementCallback_SQLStatementErrorCallback(this, sqlStatement, arguments, callback, errorCallback); + void executeSql(String sqlStatement, List arguments, [SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) => _blink.BlinkSQLTransaction.executeSql_Callback_4(this, sqlStatement, arguments, callback, errorCallback); } // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file diff --git a/tools/dom/scripts/css_code_generator.py b/tools/dom/scripts/css_code_generator.py index 1e588defa401..a290c5fc83d1 100644 --- a/tools/dom/scripts/css_code_generator.py +++ b/tools/dom/scripts/css_code_generator.py @@ -112,7 +112,7 @@ def GenerateCssTemplateFile(): $if DARTIUM bool _hasProperty(String propertyName) => - _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_DOMString(this, propertyName); + _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, propertyName); $endif @DomName('CSSStyleDeclaration.setProperty') diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py index 9cc4124d0783..6699fd3ca366 100644 --- a/tools/dom/scripts/htmldartgenerator.py +++ b/tools/dom/scripts/htmldartgenerator.py @@ -475,7 +475,7 @@ def GenerateCall( version, operations[signature_index], argument_count) def IsOptional(signature_index, argument): - return is_optional(operations[signature_index], argument) + return is_optional(argument) emitter = self._members_emitter @@ -589,8 +589,7 @@ def GenerateCall( if self._dart_use_blink: type_ids = [p.type.id for p in arguments] base_name, rs = \ - self.DeriveNativeEntry("constructorCallback", None, type_ids, - False) + self.DeriveNativeEntry("constructorCallback", 'Constructor', argument_count) qualified_name = \ self.DeriveQualifiedBlinkName(self._interface.id, base_name) diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py index 30749cc4c009..b8409e99efa8 100644 --- a/tools/dom/scripts/systemhtml.py +++ b/tools/dom/scripts/systemhtml.py @@ -1085,7 +1085,7 @@ def GenerateCall( operations, declaration, GenerateCall, - lambda _, argument: IsOptional(argument), + IsOptional, can_omit_type_check=lambda type, pos: type == parameter_types[pos]) def _AddInterfaceOperation(self, info, html_name): diff --git a/tools/dom/scripts/systemnative.py b/tools/dom/scripts/systemnative.py index 458c26b61d09..84bfa7528043 100644 --- a/tools/dom/scripts/systemnative.py +++ b/tools/dom/scripts/systemnative.py @@ -584,30 +584,40 @@ def ImplementationTemplate(self): def RootClassName(self): return 'NativeFieldWrapperClass2' - def DeriveNativeEntry(self, operation_id, native_suffix, type_ids, skip_types): + # This code matches up with the _generate_native_entry code in + # dart_utilities.py in the dartium repository. Any changes to this + # should have matching changes on that end. + def DeriveNativeEntry(self, name, kind, count): interface_id = self._interface.id database = self._database - type_ids = map(lambda type_id : TypeIdToBlinkName(type_id, database), - type_ids) - encoded_type_ids = map(EncodeType, type_ids) - if native_suffix: - operation_id = "%s_%s" % (operation_id, native_suffix) - interface_id = TypeIdToBlinkName(interface_id, database) - - def DeriveString(components, types, use_types): - if use_types: - components.extend(types) - full_name = "_".join(components) - return full_name + tag = "" + if kind == 'Getter': + tag = "%s_Getter" % name + blink_entry = tag + elif kind == 'Setter': + tag = "%s_Setter" % name + blink_entry = tag + elif kind == 'Constructor': + tag = "constructorCallback" + blink_entry = tag + elif kind == 'Method': + tag = "%s_Callback" % name + blink_entry = tag + + interface_id = TypeIdToBlinkName(interface_id, database) def mkPublic(s): if s.startswith("_") or s.startswith("$"): return "$" + s return s - dart_name = mkPublic(DeriveString([operation_id], encoded_type_ids, True)) - resolver_string = DeriveString([interface_id, operation_id], type_ids, - not skip_types) + if count: + arity = str(count) + dart_name = mkPublic("_".join([tag, arity])) + else: + dart_name = mkPublic(tag) + resolver_string = "_".join([interface_id, tag]) + return (dart_name, resolver_string) @@ -703,9 +713,8 @@ def _EmitConstructorInfrastructure(self, parameters = constructor_info.ParametersAsStringOfVariables(argument_count) interface_name = self._interface_type_info.interface_name() - type_ids = [p.type.id for p in arguments[:argument_count]] dart_native_name, constructor_callback_id = \ - self.DeriveNativeEntry(cpp_suffix, None, type_ids, is_custom) + self.DeriveNativeEntry(cpp_suffix, 'Constructor', argument_count) if constructor_callback_id in _cpp_resolver_string_map: constructor_callback_id = \ _cpp_resolver_string_map[constructor_callback_id] @@ -1005,7 +1014,7 @@ def _AddGetter(self, attr, html_name, read_only): native_suffix = 'Getter' auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix) native_entry = \ - self.DeriveNativeEntry(attr.id, native_suffix, [], True) + self.DeriveNativeEntry(attr.id, 'Getter', None) cpp_callback_name = self._GenerateNativeBinding(attr.id, 1, dart_declaration, False, return_type, parameters, native_suffix, is_custom, auto_scope_setup, native_entry=native_entry) @@ -1060,7 +1069,7 @@ def _AddSetter(self, attr, html_name): native_suffix = 'Setter' auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix) native_entry = \ - self.DeriveNativeEntry(attr.id, native_suffix, [attr.type.id], True) + self.DeriveNativeEntry(attr.id, 'Setter', None) cpp_callback_name = self._GenerateNativeBinding(attr.id, 2, dart_declaration, False, return_type, parameters, native_suffix, is_custom, auto_scope_setup, native_entry=native_entry) @@ -1123,8 +1132,7 @@ def AddIndexer(self, element_type): # First emit a toplevel function to do the native call # Calls to this are emitted elsewhere, dart_native_name, resolver_string = \ - self.DeriveNativeEntry("item", "Callback", ["unsigned long"], - is_custom) + self.DeriveNativeEntry("item", 'Method', 1) if resolver_string in _cpp_resolver_string_map: resolver_string = \ _cpp_resolver_string_map[resolver_string] @@ -1230,7 +1238,7 @@ def EmitOperation(self, info, html_name): operation = info.operations[0] is_custom = _IsCustom(operation) - has_optional_arguments = any(self._IsArgumentOptionalInWebCore(operation, argument) for argument in operation.arguments) + has_optional_arguments = any(IsOptional(argument) for argument in operation.arguments) needs_dispatcher = not is_custom and (len(info.operations) > 1 or has_optional_arguments) if info.callback_args: @@ -1240,11 +1248,8 @@ def EmitOperation(self, info, html_name): argument_count = (0 if info.IsStatic() else 1) + len(info.param_infos) native_suffix = 'Callback' auto_scope_setup = self._GenerateAutoSetupScope(info.name, native_suffix) - type_ids = [argument.type.id - for argument in operation.arguments[:len(info.param_infos)]] native_entry = \ - self.DeriveNativeEntry(operation.id, native_suffix, type_ids, - is_custom) + self.DeriveNativeEntry(operation.id, 'Method', len(info.param_infos)) cpp_callback_name = self._GenerateNativeBinding( info.name, argument_count, dart_declaration, info.IsStatic(), return_type, parameters, @@ -1275,11 +1280,8 @@ def GenerateCall( formals_s = ", ".join(formals) dart_declaration = '%s(%s)' % ( base_name, formals_s) - type_ids = [argument.type.id - for argument in operation.arguments[:argument_count]] native_entry = \ - self.DeriveNativeEntry(operation.id, native_suffix, type_ids, - is_custom) + self.DeriveNativeEntry(operation.id, 'Method', argument_count) overload_base_name = native_entry[0] overload_name = \ self.DeriveQualifiedBlinkName(self._interface.id, @@ -1303,7 +1305,7 @@ def GenerateCall( operations, dart_declaration, GenerateCall, - self._IsArgumentOptionalInWebCore) + IsOptional) def SecondaryContext(self, interface): pass diff --git a/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate b/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate index f1a123a80872..1b47c7dc69dd 100644 --- a/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate +++ b/tools/dom/templates/html/impl/impl_CSSStyleDeclaration.darttemplate @@ -62,7 +62,7 @@ $endif $if DARTIUM bool _hasProperty(String propertyName) => - _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_DOMString(this, propertyName); + _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, propertyName); $endif @DomName('CSSStyleDeclaration.setProperty') diff --git a/tools/dom/templates/html/impl/impl_Element.darttemplate b/tools/dom/templates/html/impl/impl_Element.darttemplate index 622af6d75ac8..04f51e1e03ab 100644 --- a/tools/dom/templates/html/impl/impl_Element.darttemplate +++ b/tools/dom/templates/html/impl/impl_Element.darttemplate @@ -1429,7 +1429,7 @@ $else @DomName('Element.scrollLeft') @DocsEditable() - void set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter_long(this, value.round()); + void set scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value.round()); @DomName('Element.scrollTop') @DocsEditable() @@ -1437,7 +1437,7 @@ $else @DomName('Element.scrollTop') @DocsEditable() - void set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter_long(this, value.round()); + void set scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value.round()); @DomName('Element.scrollWidth') @DocsEditable() From 16d58cb0b6d7a4889e77b534bb02d435ed4bb033 Mon Sep 17 00:00:00 2001 From: "brianwilkerson@google.com" Date: Tue, 21 Oct 2014 21:17:28 +0000 Subject: [PATCH 76/91] Better recovery for getters in functions R=scheglov@google.com Review URL: https://codereview.chromium.org//668083002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41238 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/lib/src/generated/parser.dart | 26 +++++++++++------ pkg/analyzer/lib/src/generated/resolver.dart | 2 +- pkg/analyzer/test/generated/parser_test.dart | 12 ++++++-- .../test/generated/resolver_test.dart | 28 +++++++++++++++++++ 4 files changed, 56 insertions(+), 12 deletions(-) diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart index beeb4a2f42bc..c776fb38af28 100644 --- a/pkg/analyzer/lib/src/generated/parser.dart +++ b/pkg/analyzer/lib/src/generated/parser.dart @@ -3190,9 +3190,8 @@ class Parser { } /** - * Return `true` if the current token appears to be the beginning of a function declaration. - * - * @return `true` if the current token appears to be the beginning of a function declaration + * Return `true` if the current token appears to be the beginning of a + * function declaration. */ bool _isFunctionDeclaration() { if (_matchesKeyword(Keyword.VOID)) { @@ -3200,13 +3199,14 @@ class Parser { } Token afterReturnType = _skipTypeName(_currentToken); if (afterReturnType == null) { - // There was no return type, but it is optional, so go back to where we started. + // There was no return type, but it is optional, so go back to where we + // started. afterReturnType = _currentToken; } Token afterIdentifier = _skipSimpleIdentifier(afterReturnType); if (afterIdentifier == null) { - // It's possible that we parsed the function name as if it were a type name, so see whether - // it makes sense if we assume that there is no type. + // It's possible that we parsed the function name as if it were a type + // name, so see whether it makes sense if we assume that there is no type. afterIdentifier = _skipSimpleIdentifier(_currentToken); } if (afterIdentifier == null) { @@ -3215,14 +3215,22 @@ class Parser { if (_isFunctionExpression(afterIdentifier)) { return true; } - // It's possible that we have found a getter. While this isn't valid at this point we test for - // it in order to recover better. + // It's possible that we have found a getter. While this isn't valid at this + // point we test for it in order to recover better. if (_matchesKeyword(Keyword.GET)) { Token afterName = _skipSimpleIdentifier(_currentToken.next); if (afterName == null) { return false; } - return _tokenMatches(afterName, TokenType.FUNCTION) || _tokenMatches(afterName, TokenType.OPEN_CURLY_BRACKET); + return _tokenMatches(afterName, TokenType.FUNCTION) + || _tokenMatches(afterName, TokenType.OPEN_CURLY_BRACKET); + } else if (_tokenMatchesKeyword(afterReturnType, Keyword.GET)) { + Token afterName = _skipSimpleIdentifier(afterReturnType.next); + if (afterName == null) { + return false; + } + return _tokenMatches(afterName, TokenType.FUNCTION) + || _tokenMatches(afterName, TokenType.OPEN_CURLY_BRACKET); } return false; } diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 7c697cadac26..32d659cd1c31 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -3720,7 +3720,7 @@ class ElementBuilder extends RecursiveAstVisitor { } FunctionBody body = expression.body; sc.Token property = node.propertyKeyword; - if (property == null) { + if (property == null || _inFunction) { SimpleIdentifier functionName = node.name; FunctionElementImpl element = new FunctionElementImpl.forNode(functionName); element.functions = holder.functions; diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart index d3d0117dd31b..78bee700a007 100644 --- a/pkg/analyzer/test/generated/parser_test.dart +++ b/pkg/analyzer/test/generated/parser_test.dart @@ -922,14 +922,22 @@ class ErrorParserTest extends ParserTestCase { ParserTestCase.parseCompilationUnit("void f(var x()) {}", [ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR]); } - void test_getterInFunction_block() { + void test_getterInFunction_block_noReturnType() { ParserTestCase.parseStatement("get x { return _x; }", [ParserErrorCode.GETTER_IN_FUNCTION]); } - void test_getterInFunction_expression() { + void test_getterInFunction_block_returnType() { + ParserTestCase.parseStatement("int get x { return _x; }", [ParserErrorCode.GETTER_IN_FUNCTION]); + } + + void test_getterInFunction_expression_noReturnType() { ParserTestCase.parseStatement("get x => _x;", [ParserErrorCode.GETTER_IN_FUNCTION]); } + void test_getterInFunction_expression_returnType() { + ParserTestCase.parseStatement("int get x => _x;", [ParserErrorCode.GETTER_IN_FUNCTION]); + } + void test_getterWithParameters() { ParserTestCase.parse3("parseClassMember", ["C"], "int get x() {}", [ParserErrorCode.GETTER_WITH_PARAMETERS]); } diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart index eea44007305b..9f802883de9f 100644 --- a/pkg/analyzer/test/generated/resolver_test.dart +++ b/pkg/analyzer/test/generated/resolver_test.dart @@ -1918,6 +1918,34 @@ class ErrorResolverTest extends ResolverTestCase { assertErrors(source, [ResolverErrorCode.CONTINUE_LABEL_ON_SWITCH]); verify([source]); } + + void test_enclosingElement_invalidLocalFunction() { + Source source = addSource(EngineTestCase.createSource([ + "class C {", + " C() {", + " int get x => 0;", + " }", + "}"])); + LibraryElement library = resolve(source); + JUnitTestCase.assertNotNull(library); + var unit = library.definingCompilationUnit; + JUnitTestCase.assertNotNull(unit); + var types = unit.types; + JUnitTestCase.assertNotNull(types); + EngineTestCase.assertSizeOfList(1, types); + var type = types[0]; + JUnitTestCase.assertNotNull(type); + var constructors = type.constructors; + JUnitTestCase.assertNotNull(constructors); + EngineTestCase.assertSizeOfList(1, constructors); + ConstructorElement constructor = constructors[0]; + JUnitTestCase.assertNotNull(constructor); + List functions = constructor.functions; + JUnitTestCase.assertNotNull(functions); + EngineTestCase.assertSizeOfList(1, functions); + JUnitTestCase.assertEquals(constructor, functions[0].enclosingElement); + assertErrors(source, [ParserErrorCode.GETTER_IN_FUNCTION]); + } } class HintCodeTest extends ResolverTestCase { From 302af90f0fd8fc27a54911ee7894abe6ff9ea481 Mon Sep 17 00:00:00 2001 From: "leafp@google.com" Date: Tue, 21 Oct 2014 21:25:12 +0000 Subject: [PATCH 77/91] Fix History Cross Frame resolver string TBR=vsm@google.com BUG= Review URL: https://codereview.chromium.org//665413002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41239 260f80e4-7a28-3924-810f-c04153c831b5 --- sdk/lib/_blink/dartium/_blink_dartium.dart | 2 +- tools/dom/src/blink_native_DOMImplementation.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart index 98fae38794b5..6f6f0a5f2c33 100644 --- a/sdk/lib/_blink/dartium/_blink_dartium.dart +++ b/sdk/lib/_blink/dartium/_blink_dartium.dart @@ -9154,7 +9154,7 @@ class Blink_HistoryCrossFrame { static forward(_HistoryCrossFrame) native "History_forward_Callback"; - static go(_HistoryCrossFrame, distance) native "History_go_Callback_long"; + static go(_HistoryCrossFrame, distance) native "History_go_Callback"; } class Blink_LocationCrossFrame { diff --git a/tools/dom/src/blink_native_DOMImplementation.dart b/tools/dom/src/blink_native_DOMImplementation.dart index 7d3e6e58833c..bc274e4fe111 100644 --- a/tools/dom/src/blink_native_DOMImplementation.dart +++ b/tools/dom/src/blink_native_DOMImplementation.dart @@ -46,7 +46,7 @@ class Blink_HistoryCrossFrame { static forward(_HistoryCrossFrame) native "History_forward_Callback"; - static go(_HistoryCrossFrame, distance) native "History_go_Callback_long"; + static go(_HistoryCrossFrame, distance) native "History_go_Callback"; } class Blink_LocationCrossFrame { From f71ac3843c686bb8ca7993610e708a5c4cbc3f3c Mon Sep 17 00:00:00 2001 From: "johnmccutchan@google.com" Date: Tue, 21 Oct 2014 21:43:14 +0000 Subject: [PATCH 78/91] Ignore GC events in websocket_client_test BUG= R=turnidge@google.com Review URL: https://codereview.chromium.org//671603006 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41240 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/standalone/vmservice/websocket_client_test.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/standalone/vmservice/websocket_client_test.dart b/tests/standalone/vmservice/websocket_client_test.dart index e6d978232dcc..25b94aee08cf 100644 --- a/tests/standalone/vmservice/websocket_client_test.dart +++ b/tests/standalone/vmservice/websocket_client_test.dart @@ -12,6 +12,10 @@ class ClientsRequestTest extends ServiceWebSocketRequestHelper { int _count = 0; onResponse(var seq, Map response) { + if (seq == null) { + // Ignore push events. + return; + } if (seq == 'cli') { // Verify response is correct for 'cli' sequence id. Expect.equals('ClientList', response['type']); From 7e26df4bbc9108d989fd7995fbf331a33ed9ace9 Mon Sep 17 00:00:00 2001 From: "ricow@google.com" Date: Wed, 22 Oct 2014 05:48:39 +0000 Subject: [PATCH 79/91] Mark standalone/vmservice/websocket_client_test as flaky on the vm Filed issue 21387 to track this R=iposva@google.com Review URL: https://codereview.chromium.org//667383002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41241 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/standalone/standalone.status | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status index 6e16f0dc90c6..787cb8732377 100644 --- a/tests/standalone/standalone.status +++ b/tests/standalone/standalone.status @@ -15,6 +15,7 @@ javascript_compatibility_errors_test/none: Fail, OK # Not possible to exclude o [ $runtime == vm ] package/package_isolate_test: Fail # Issue 12474 +vmservice/websocket_client_test: Pass, Fail # Issue 21387 [ $runtime == vm && $checked ] # These tests have type errors on purpose. From b1ecf1649c8066abb7201884c144f54a37c3a88e Mon Sep 17 00:00:00 2001 From: "ricow@google.com" Date: Wed, 22 Oct 2014 05:56:53 +0000 Subject: [PATCH 80/91] Revert revision 41241 Issue 21387 seems to have already been fixed in 41240 Review URL: https://codereview.chromium.org//636283008 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41242 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/standalone/standalone.status | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status index 787cb8732377..6e16f0dc90c6 100644 --- a/tests/standalone/standalone.status +++ b/tests/standalone/standalone.status @@ -15,7 +15,6 @@ javascript_compatibility_errors_test/none: Fail, OK # Not possible to exclude o [ $runtime == vm ] package/package_isolate_test: Fail # Issue 12474 -vmservice/websocket_client_test: Pass, Fail # Issue 21387 [ $runtime == vm && $checked ] # These tests have type errors on purpose. From 68a75de97d552ad3997dd92d23f27da66cbe1ab1 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Wed, 22 Oct 2014 07:48:16 +0000 Subject: [PATCH 81/91] dart2js: Support eagerly initialized classes in new emitter. Supersedes https://codereview.chromium.org/647023005/ R=kasperl@google.com Review URL: https://codereview.chromium.org//650953003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41243 260f80e4-7a28-3924-810f-c04153c831b5 --- .../implementation/js_emitter/model.dart | 7 ++++++- .../js_emitter/new_emitter/model_emitter.dart | 18 ++++++++++++++++ .../js_emitter/program_builder.dart | 21 +++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart index 1c5cc414e5f7..f70be0505674 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/model.dart @@ -112,6 +112,7 @@ class Library { final String uri; final List statics; final List classes; + Library(this.uri, this.statics, this.classes); } @@ -135,7 +136,11 @@ class Class { final List methods; final List fields; - Class(this.name, this.holder, this.methods, this.fields); + /// Whether the class must be evaluated eagerly. + bool isEager = false; + + Class(this.name, this.holder, this.methods, this.fields, + { this.isEager: false }); void setSuperclass(Class superclass) { this.superclass = superclass; diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart index 88f4c0655521..d3d6c1d69a48 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/new_emitter/model_emitter.dart @@ -85,6 +85,7 @@ class ModelEmitter { emitEmbeddedGlobals(program.loadMap), emitConstants(unit.constants), emitStaticNonFinalFields(unit.staticNonFinalFields), + emitEagerClassInitializations(unit.libraries), unit.main, code]); } @@ -190,6 +191,7 @@ class ModelEmitter { } js.Expression emitDeferredUnit(DeferredOutput unit, List holders) { + // TODO(floitsch): initialize eager classes. // TODO(floitsch): the hash must depend on the output. int hash = this.hashCode; if (unit.constants.isNotEmpty) { @@ -227,6 +229,19 @@ class ModelEmitter { return new js.ArrayInitializer.from(fieldDescriptors); } + js.Block emitEagerClassInitializations(List libraries) { + js.Statement createInstantiation(Class cls) { + return js.js.statement('new #.#()', [cls.holder.name, cls.name]); + } + + List instantiations = + libraries.expand((Library library) => library.classes) + .where((Class cls) => cls.isEager) + .map(createInstantiation) + .toList(growable: false); + return new js.Block(instantiations); + } + js.Expression emitLibrary(Library library) { Iterable staticDescriptors = library.statics.expand((e) => [ js.string(e.name), js.number(e.holder.index), emitStaticMethod(e) ]); @@ -471,6 +486,9 @@ final String boilerplate = r""" // Initialize static non-final fields. #; + // Initialize eager classes. + #; + var end = Date.now(); print('Setup: ' + (end - start) + ' ms.'); diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart index 88f16026545b..3738340a2d96 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/program_builder.dart @@ -79,9 +79,16 @@ class ProgramBuilder { c.setSuperclass(_classes[element.superclass]); } }); + + _markEagerClasses(); + return result; } + void _markEagerClasses() { + _markEagerInterceptorClasses(); + } + /// Builds a map from loadId to outputs-to-load. Map> _buildLoadMap() { List convertHunks(List hunks) { @@ -267,6 +274,20 @@ class ProgramBuilder { return new Method(name, code); } + // The getInterceptor methods directly access the prototype of classes. + // We must evaluate these classes eagerly so that the prototype is + // accessible. + void _markEagerInterceptorClasses() { + Map> specializedGetInterceptors = + backend.specializedGetInterceptors; + for (Set classes in specializedGetInterceptors.values) { + for (ClassElement element in classes) { + Class cls = _classes[element]; + if (cls != null) cls.isEager = true; + } + } + } + Iterable _generateGetInterceptorMethods() { emitterTask.InterceptorStubGenerator stubGenerator = new emitterTask.InterceptorStubGenerator(_compiler, namer, backend); From c5702b17847b79fb631a986154f620fe272ff995 Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Wed, 22 Oct 2014 09:05:26 +0000 Subject: [PATCH 82/91] dart2js: add --preserve-uris flag. R=blois@google.com, johnniwinther@google.com, nweiz@google.com Committed: https://code.google.com/p/dart/source/detail?r=41205 Reverted: https://code.google.com/p/dart/source/detail?r=41206 Review URL: https://codereview.chromium.org//582753002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41244 260f80e4-7a28-3924-810f-c04153c831b5 --- .../compiler/implementation/apiimpl.dart | 1 + .../compiler/implementation/compiler.dart | 5 ++ .../compiler/implementation/dart2js.dart | 5 ++ .../implementation/js_backend/backend.dart | 7 ++- .../js_emitter/old_emitter/emitter.dart | 2 +- .../_internal/compiler/js_lib/js_mirrors.dart | 12 +++- .../lib/src/barback/dart2js_transformer.dart | 5 +- sdk/lib/_internal/pub/lib/src/dart.dart | 2 + .../lib/src/barback/dart2js_transformer.dart | 2 + .../_internal/pub_generated/lib/src/dart.dart | 8 ++- .../compiler/dart2js/preserve_uris_test.dart | 62 +++++++++++++++++++ .../compiler/dart2js/uri_retention_test.dart | 17 +++-- tests/lib/mirrors/libraries_test.dart | 11 +++- .../lib/mirrors/library_uri_package_test.dart | 7 ++- tests/lib/mirrors/mirrors_test.dart | 7 ++- tests/lib/mirrors/null_test.dart | 14 ++++- 16 files changed, 148 insertions(+), 19 deletions(-) create mode 100644 tests/compiler/dart2js/preserve_uris_test.dart diff --git a/sdk/lib/_internal/compiler/implementation/apiimpl.dart b/sdk/lib/_internal/compiler/implementation/apiimpl.dart index 27672ab2bf90..5670d49a41a7 100644 --- a/sdk/lib/_internal/compiler/implementation/apiimpl.dart +++ b/sdk/lib/_internal/compiler/implementation/apiimpl.dart @@ -45,6 +45,7 @@ class Compiler extends leg.Compiler { trustTypeAnnotations: hasOption(options, '--trust-type-annotations'), enableMinification: hasOption(options, '--minify'), + preserveUris: hasOption(options, '--preserve-uris'), enableNativeLiveTypeAnalysis: !hasOption(options, '--disable-native-live-type-analysis'), emitJavaScript: !(hasOption(options, '--output-type=dart') || diff --git a/sdk/lib/_internal/compiler/implementation/compiler.dart b/sdk/lib/_internal/compiler/implementation/compiler.dart index 41fd4a50590f..589baba80f7c 100644 --- a/sdk/lib/_internal/compiler/implementation/compiler.dart +++ b/sdk/lib/_internal/compiler/implementation/compiler.dart @@ -645,6 +645,10 @@ abstract class Compiler implements DiagnosticListener { new ResolutionRegistry.internal(null, new TreeElementMapping(null)); final bool enableMinification; + + /// When `true` emits URIs in the reflection metadata. + final bool preserveUris; + final bool enableTypeAssertions; final bool enableUserAssertions; final bool trustTypeAnnotations; @@ -934,6 +938,7 @@ abstract class Compiler implements DiagnosticListener { bool disableTypeInferenceFlag: false, this.maxConcreteTypeSize: 5, this.enableMinification: false, + this.preserveUris: false, this.enableNativeLiveTypeAnalysis: false, bool emitJavaScript: true, bool dart2dartMultiFile: false, diff --git a/sdk/lib/_internal/compiler/implementation/dart2js.dart b/sdk/lib/_internal/compiler/implementation/dart2js.dart index ef6e8faa2bdf..99c6754ae0ce 100644 --- a/sdk/lib/_internal/compiler/implementation/dart2js.dart +++ b/sdk/lib/_internal/compiler/implementation/dart2js.dart @@ -288,6 +288,7 @@ Future compile(List argv) { new OptionHandler('--out=.+|-o.*', setOutput, multipleArguments: true), new OptionHandler('--allow-mock-compilation', passThrough), new OptionHandler('--minify|-m', implyCompilation), + new OptionHandler('--preserve-uris', passThrough), new OptionHandler('--force-strip=.*', setStrip), new OptionHandler('--disable-diagnostic-colors', (_) => diagnosticHandler.enableColors = false), @@ -524,6 +525,10 @@ Supported options: --show-package-warnings Show warnings and hints generated from packages. + --preserve-uris + Preserve the source URIs in the reflection data. Without this flag the + `uri` getter for `LibraryMirror`s is mangled in minified mode. + --csp Disables dynamic generation of code in the generated output. This is necessary to satisfy CSP restrictions (see http://www.w3.org/TR/CSP/). diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart index 6e567f577e8a..0375ea8d3696 100644 --- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart +++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart @@ -362,8 +362,9 @@ class JavaScriptBackend extends Backend { /// program, this variable will stil be false. bool hasRetainedMetadata = false; - /// True if a call to preserveUris has been seen. - bool mustRetainUris = false; + /// True if a call to preserveUris has been seen and the preserve-uris flag + /// is set. + bool mustPreserveUris = false; /// True if a call to preserveLibraryNames has been seen. bool mustRetainLibraryNames = false; @@ -1568,7 +1569,7 @@ class JavaScriptBackend extends Backend { } else if (element == preserveMetadataMarker) { mustRetainMetadata = true; } else if (element == preserveUrisMarker) { - mustRetainUris = true; + if (compiler.preserveUris) mustPreserveUris = true; } else if (element == preserveLibraryNamesMarker) { mustRetainLibraryNames = true; } else if (element == getIsolateAffinityTagMarker) { diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart index 0a0fc1ab103d..6c2661535021 100644 --- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/emitter.dart @@ -1211,7 +1211,7 @@ class OldEmitter implements Emitter { void writeLibraryDescriptors(CodeBuffer buffer, LibraryElement library) { var uri = ""; - if (!compiler.enableMinification || backend.mustRetainUris) { + if (!compiler.enableMinification || backend.mustPreserveUris) { uri = library.canonicalUri; if (uri.scheme == 'file' && compiler.outputUri != null) { uri = relativize(compiler.outputUri, library.canonicalUri, false); diff --git a/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart b/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart index af3226e93918..5f613d37079a 100644 --- a/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart +++ b/sdk/lib/_internal/compiler/js_lib/js_mirrors.dart @@ -141,7 +141,17 @@ class JsMirrorSystem implements MirrorSystem { if (jsLibraries == null) return result; for (List data in jsLibraries) { String name = data[0]; - Uri uri = Uri.parse(data[1]); + String uriString = data[1]; + Uri uri; + // The Uri has been compiled out. Create a URI from the simple name. + if (uriString != "") { + uri = Uri.parse(uriString); + } else { + uri = new Uri(scheme: 'https', + host: 'dartlang.org', + path: 'dart2js-stripped-uri', + queryParameters: { 'lib': name }); + } List classes = data[2]; List functions = data[3]; var metadataFunction = data[4]; diff --git a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart index ec49eff615d1..1f392a8533bb 100644 --- a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart +++ b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart @@ -24,8 +24,8 @@ import 'asset_environment.dart'; /// The set of all valid configuration options for this transformer. final _validOptions = new Set.from([ 'commandLineOptions', 'checked', 'csp', 'minify', 'verbose', 'environment', - 'analyzeAll', 'suppressWarnings', 'suppressHints', 'suppressPackageWarnings', - 'terse' + 'analyzeAll', 'preserveUris', 'suppressWarnings', 'suppressHints', + 'suppressPackageWarnings', 'terse' ]); /// A [Transformer] that uses dart2js's library API to transform Dart @@ -141,6 +141,7 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer { environment: _configEnvironment, packageRoot: _environment.rootPackage.path("packages"), analyzeAll: _configBool('analyzeAll'), + preserveUris: _configBool('preserveUris'), suppressWarnings: _configBool('suppressWarnings'), suppressHints: _configBool('suppressHints'), suppressPackageWarnings: _configBool( diff --git a/sdk/lib/_internal/pub/lib/src/dart.dart b/sdk/lib/_internal/pub/lib/src/dart.dart index 0b5ab8cd7b92..a020d9bcf577 100644 --- a/sdk/lib/_internal/pub/lib/src/dart.dart +++ b/sdk/lib/_internal/pub/lib/src/dart.dart @@ -65,6 +65,7 @@ Future compile(String entrypoint, CompilerProvider provider, { Map environment, String packageRoot, bool analyzeAll: false, + bool preserveUris: false, bool suppressWarnings: false, bool suppressHints: false, bool suppressPackageWarnings: true, @@ -78,6 +79,7 @@ Future compile(String entrypoint, CompilerProvider provider, { if (minify) options.add('--minify'); if (verbose) options.add('--verbose'); if (analyzeAll) options.add('--analyze-all'); + if (preserveUris) options.add('--preserve-uris'); if (suppressWarnings) options.add('--suppress-warnings'); if (suppressHints) options.add('--suppress-hints'); if (!suppressPackageWarnings) options.add('--show-package-warnings'); diff --git a/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart index 7878c4590b51..0d25cb8a18c4 100644 --- a/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart +++ b/sdk/lib/_internal/pub_generated/lib/src/barback/dart2js_transformer.dart @@ -30,6 +30,7 @@ final _validOptions = new Set.from( 'verbose', 'environment', 'analyzeAll', + 'preserveUris', 'suppressWarnings', 'suppressHints', 'suppressPackageWarnings', @@ -152,6 +153,7 @@ class Dart2JSTransformer extends Transformer implements LazyTransformer { environment: _configEnvironment, packageRoot: _environment.rootPackage.path("packages"), analyzeAll: _configBool('analyzeAll'), + preserveUris: _configBool('preserveUris'), suppressWarnings: _configBool('suppressWarnings'), suppressHints: _configBool('suppressHints'), suppressPackageWarnings: _configBool( diff --git a/sdk/lib/_internal/pub_generated/lib/src/dart.dart b/sdk/lib/_internal/pub_generated/lib/src/dart.dart index 35ff526defae..b6399990178b 100644 --- a/sdk/lib/_internal/pub_generated/lib/src/dart.dart +++ b/sdk/lib/_internal/pub_generated/lib/src/dart.dart @@ -58,9 +58,10 @@ abstract class CompilerProvider { Future compile(String entrypoint, CompilerProvider provider, {Iterable commandLineOptions, bool checked: false, bool csp: false, bool minify: true, bool verbose: false, Map environment, - String packageRoot, bool analyzeAll: false, bool suppressWarnings: false, - bool suppressHints: false, bool suppressPackageWarnings: true, bool terse: - false, bool includeSourceMapUrls: false, bool toDart: false}) { + String packageRoot, bool analyzeAll: false, bool preserveUris: false, + bool suppressWarnings: false, bool suppressHints: false, + bool suppressPackageWarnings: true, bool terse: false, + bool includeSourceMapUrls: false, bool toDart: false}) { return new Future.sync(() { var options = ['--categories=Client,Server']; if (checked) options.add('--enable-checked-mode'); @@ -68,6 +69,7 @@ Future compile(String entrypoint, CompilerProvider provider, if (minify) options.add('--minify'); if (verbose) options.add('--verbose'); if (analyzeAll) options.add('--analyze-all'); + if (preserveUris) options.add('--preserve-uris'); if (suppressWarnings) options.add('--suppress-warnings'); if (suppressHints) options.add('--suppress-hints'); if (!suppressPackageWarnings) options.add('--show-package-warnings'); diff --git a/tests/compiler/dart2js/preserve_uris_test.dart b/tests/compiler/dart2js/preserve_uris_test.dart new file mode 100644 index 000000000000..e0b8f1f02ce0 --- /dev/null +++ b/tests/compiler/dart2js/preserve_uris_test.dart @@ -0,0 +1,62 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:async'; + +import 'package:expect/expect.dart'; +import 'package:async_helper/async_helper.dart'; +import 'memory_compiler.dart' show compilerFor, OutputCollector; + +const MEMORY_SOURCE_FILES = const { + 'main.dart': """ +library main; + +@MirrorsUsed(targets: const ['main', 'lib']) +import 'dart:mirrors'; +import 'lib.dart'; + + +class Subclass extends Super { + int _private; + + int magic() => _private++; +} + +main() { + var objects = [new Super(), new Subclass()]; + print(currentMirrorSystem().findLibrary(#main).uri); +} +""", + 'lib.dart': """ +library lib; + +class Super { + int _private; + + int magic() => _private++; +} +""" +}; + +runTest(bool preserveUris) { + OutputCollector collector = new OutputCollector(); + var options = ["--minify"]; + if (preserveUris) options.add("--preserve-uris"); + var compiler = compilerFor(MEMORY_SOURCE_FILES, + outputProvider: collector, + options: options); + return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) { + String jsOutput = collector.getOutput('', 'js'); + Expect.equals(preserveUris, jsOutput.contains("main.dart")); + Expect.equals(preserveUris, jsOutput.contains("lib.dart")); + }); +} + +void main() { + asyncStart(); + new Future.value() + .then((_) => runTest(true)) + .then((_) => runTest(false)) + .whenComplete(asyncEnd); +} diff --git a/tests/compiler/dart2js/uri_retention_test.dart b/tests/compiler/dart2js/uri_retention_test.dart index fcdcdcc0409a..d79aa320e3ec 100644 --- a/tests/compiler/dart2js/uri_retention_test.dart +++ b/tests/compiler/dart2js/uri_retention_test.dart @@ -12,21 +12,30 @@ import "package:async_helper/async_helper.dart"; import 'memory_compiler.dart' show compilerFor; -Future compileSources(sources, {bool minify}) { - var compiler = compilerFor(sources, options: minify ? ['--minify'] : []); +Future compileSources(sources, {bool minify, bool preserveUri}) { + var options = []; + if (minify) options.add("--minify"); + if (preserveUri) options.add("--preserve-uris"); + var compiler = compilerFor(sources, options: options); return compiler.runCompiler(Uri.parse('memory:main.dart')).then((_) { return compiler.assembledCode; }); } Future test(sources, { bool libName, bool fileName }) { - return compileSources(sources, minify: false).then((output) { + return + compileSources(sources, minify: false, preserveUri: false).then((output) { // Unminified the sources should always contain the library name and the // file name. Expect.isTrue(output.contains("main_lib")); Expect.isTrue(output.contains("main.dart")); }).then((_) { - compileSources(sources, minify: true).then((output) { + compileSources(sources, minify: true, preserveUri: false).then((output) { + Expect.equals(libName, output.contains("main_lib")); + Expect.isFalse(output.contains("main.dart")); + }); + }).then((_) { + compileSources(sources, minify: true, preserveUri: true).then((output) { Expect.equals(libName, output.contains("main_lib")); Expect.equals(fileName, output.contains("main.dart")); }); diff --git a/tests/lib/mirrors/libraries_test.dart b/tests/lib/mirrors/libraries_test.dart index 1fd5d33bc1c4..f754c193ac0d 100644 --- a/tests/lib/mirrors/libraries_test.dart +++ b/tests/lib/mirrors/libraries_test.dart @@ -15,8 +15,17 @@ main() { Map libraries = mirrors.libraries; Expect.isNotNull(libraries, 'libraries is null'); + Expect.isTrue(libraries.isNotEmpty); LibraryMirror mirrorsLibrary = libraries[Uri.parse('dart:mirrors')]; - Expect.isNotNull(mirrorsLibrary, 'mirrorsLibrary is null'); + if (mirrorsLibrary == null) { + // In minified mode we don't preserve the URIs. + mirrorsLibrary = libraries.values + .firstWhere((LibraryMirror lm) => lm.simpleName == #dart.mirrors); + Uri uri = mirrorsLibrary.uri; + Expect.equals("https", uri.scheme); + Expect.equals("dartlang.org", uri.host); + Expect.equals("/dart2js-stripped-uri", uri.path); + } ClassMirror cls = mirrorsLibrary.declarations[#LibraryMirror]; Expect.isNotNull(cls, 'cls is null'); diff --git a/tests/lib/mirrors/library_uri_package_test.dart b/tests/lib/mirrors/library_uri_package_test.dart index 6c8effc44855..bc3021eae2e9 100644 --- a/tests/lib/mirrors/library_uri_package_test.dart +++ b/tests/lib/mirrors/library_uri_package_test.dart @@ -14,7 +14,12 @@ testLibraryUri(var value, Uri expectedUri) { var valueMirror = reflect(value); ClassMirror valueClass = valueMirror.type; LibraryMirror valueLibrary = valueClass.owner; - expect(valueLibrary.uri, equals(expectedUri)); + Uri uri = valueLibrary.uri; + if (uri.scheme != "https" || + uri.host != "dartlang.org" || + uri.path != "/dart2js-stripped-uri") { + expect(uri, equals(expectedUri)); + } } main() { diff --git a/tests/lib/mirrors/mirrors_test.dart b/tests/lib/mirrors/mirrors_test.dart index a08362274c50..a821c9913026 100644 --- a/tests/lib/mirrors/mirrors_test.dart +++ b/tests/lib/mirrors/mirrors_test.dart @@ -206,7 +206,12 @@ testLibraryUri(var value, bool check(Uri)) { var valueMirror = reflect(value); ClassMirror valueClass = valueMirror.type; LibraryMirror valueLibrary = valueClass.owner; - expect(check(valueLibrary.uri), isTrue); + Uri uri = valueLibrary.uri; + if (uri.scheme != "https" || + uri.host != "dartlang.org" || + uri.path != "/dart2js-stripped-uri") { + expect(check(uri), isTrue); + } } main() { diff --git a/tests/lib/mirrors/null_test.dart b/tests/lib/mirrors/null_test.dart index 72f5e23c7fbe..2b6407b2a20f 100644 --- a/tests/lib/mirrors/null_test.dart +++ b/tests/lib/mirrors/null_test.dart @@ -31,6 +31,16 @@ main() { Expect.equals(#Object, NullMirror.superclass.simpleName); Expect.equals(null, NullMirror.superclass.superclass); Expect.listEquals([], NullMirror.superinterfaces); - Expect.equals(currentMirrorSystem().libraries[Uri.parse('dart:core')], - NullMirror.owner); + Map libraries = currentMirrorSystem().libraries; + LibraryMirror coreLibrary = libraries[Uri.parse('dart:core')]; + if (coreLibrary == null) { + // In minified mode we don't preserve the URIs. + coreLibrary = libraries.values + .firstWhere((LibraryMirror lm) => lm.simpleName == #dart.core); + Uri uri = coreLibrary.uri; + Expect.equals("https", uri.scheme); + Expect.equals("dartlang.org", uri.host); + Expect.equals("/dart2js-stripped-uri", uri.path); + } + Expect.equals(coreLibrary, NullMirror.owner); } From 25fc2f9e2b6ba76843c3c452e601ebf71e3ea169 Mon Sep 17 00:00:00 2001 From: "jakemac@google.com" Date: Wed, 22 Oct 2014 15:33:27 +0000 Subject: [PATCH 83/91] fix duplicate script issue BUG= http://dartbug.com/21332 R=sigmund@google.com Review URL: https://codereview.chromium.org//662013004 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41245 260f80e4-7a28-3924-810f-c04153c831b5 --- .../lib/src/build/generated/messages.html | 33 +++++++++++++++++-- pkg/polymer/lib/src/build/import_inliner.dart | 12 +++++-- pkg/polymer/lib/src/build/messages.dart | 23 +++++++++++++ pkg/polymer/lib/src/mirror_loader.dart | 19 +++++++---- .../test/build/import_inliner_test.dart | 22 +++++++++++++ 5 files changed, 99 insertions(+), 10 deletions(-) diff --git a/pkg/polymer/lib/src/build/generated/messages.html b/pkg/polymer/lib/src/build/generated/messages.html index 7f324935fb32..04c43b0825ce 100644 --- a/pkg/polymer/lib/src/build/generated/messages.html +++ b/pkg/polymer/lib/src/build/generated/messages.html @@ -491,10 +491,39 @@

Messages from package code_transformers

To do this, use the following pattern to update your pubspec.yaml:

transformers:
 - polymer:
-  inline_stylesheets:
-    web/my_file.css: false
+    inline_stylesheets:
+      web/my_file.css: false
 

If you would like to hide this warning and keep it inlined, do the same thing but assign the value to true.

+
+ +

"dart_support.js" not necessary #43

+

The script packages/web_components/dart_support.js is still used, but you no +longer need to put it in your application's entrypoint.

+

In the past this file served two purposes:

  • to make dart2js work well with the platform polyfills, and
  • to support registering Dart APIs for JavaScript custom elements.
+

Now, the code from dart_support.js is split in two halves. The half for +dart2js is now injected by the polymer transformers automatically during pub +build. The web_components package provides an HTML file containing the other +half. Developers of packages that wrap JavaScript custom elements (like +core_elements and paper_elements) will import that file directly, so +application developers don't have to worry about it anymore.

+

+ +

A dart script file was included more than once. #44

+

Duplicate dart scripts often happen if you have multiple html imports that +include the same script. The simplest workaround for this is to move your dart +script to its own html file, and import that instead of the script (html imports +are automatically deduped).

+

For example:

+
<script type="application/dart" src="foo.dart"></script>
+
+

Should turn into:

+
<link rel="import" href="foo.html">
+
+

And foo.html should look like:

+
<!DOCTYPE html>
+<script type="application/dart" src="foo.dart"></script>
+

diff --git a/pkg/polymer/lib/src/build/import_inliner.dart b/pkg/polymer/lib/src/build/import_inliner.dart index cf3b7d931e3c..ed7929b2d8ad 100644 --- a/pkg/polymer/lib/src/build/import_inliner.dart +++ b/pkg/polymer/lib/src/build/import_inliner.dart @@ -7,6 +7,7 @@ library polymer.src.build.import_inliner; import 'dart:async'; import 'dart:convert'; +import 'dart:collection' show LinkedHashSet; import 'package:analyzer/analyzer.dart'; import 'package:analyzer/src/generated/ast.dart'; @@ -30,7 +31,7 @@ class _HtmlInliner extends PolymerTransformer { final BuildLogger logger; final AssetId docId; final seen = new Set(); - final scriptIds = []; + final scriptIds = new LinkedHashSet(); final inlinedStylesheetIds = new Set(); final extractedFiles = new Set(); bool experimentalBootstrap = false; @@ -94,7 +95,7 @@ class _HtmlInliner extends PolymerTransformer { docId.addExtension('._data'), JSON.encode({ 'experimental_bootstrap': experimentalBootstrap, - 'script_ids': scriptIds, + 'script_ids': scriptIds.toList(), }, toEncodable: (id) => id.serialize()))); // Write out the logs collected by our [BuildLogger]. @@ -241,6 +242,13 @@ class _HtmlInliner extends PolymerTransformer { var src = script.attributes['src']; var srcId = uriToAssetId(docId, src, logger, script.sourceSpan); + // No duplicates allowed! + if (scriptIds.contains(srcId)) { + logger.warning(SCRIPT_INCLUDED_MORE_THAN_ONCE.create({'url': src}), + span: script.sourceSpan); + return true; + } + // We check for extractedFiles because 'hasInput' below is only true for // assets that existed before this transformer runs (hasInput is false // for files created by [_extractScripts]). diff --git a/pkg/polymer/lib/src/build/messages.dart b/pkg/polymer/lib/src/build/messages.dart index 24b88b649ace..86335fdcafd8 100644 --- a/pkg/polymer/lib/src/build/messages.dart +++ b/pkg/polymer/lib/src/build/messages.dart @@ -580,3 +580,26 @@ half. Developers of packages that wrap JavaScript custom elements (like application developers don't have to worry about it anymore. ''' ); + +const SCRIPT_INCLUDED_MORE_THAN_ONCE = const MessageTemplate( + const MessageId('polymer', 44), + 'The `%-url-%` script was included more than once.', + 'Dart script file included more than once.', + ''' +Duplicate dart scripts often happen if you have multiple html imports that +include the same script. The simplest workaround for this is to move your dart +script to its own html file, and import that instead of the script (html imports +are automatically deduped). + +For example: + + + +Should turn into: + + + +And `foo.html` should look like: + + +'''); diff --git a/pkg/polymer/lib/src/mirror_loader.dart b/pkg/polymer/lib/src/mirror_loader.dart index c0cea5c46aa1..cd5bc8ffcb4b 100644 --- a/pkg/polymer/lib/src/mirror_loader.dart +++ b/pkg/polymer/lib/src/mirror_loader.dart @@ -65,22 +65,29 @@ List discoverInitializers(Iterable librariesToLoad) { /// called after all HTML imports are resolved. Polymer ensures this by asking /// users to put their Dart script tags after all HTML imports (this is checked /// by the linter, and Dartium will otherwise show an error message). -List<_ScriptInfo> _discoverScripts(Document doc, String baseUri, [_State state]) { +Iterable<_ScriptInfo> _discoverScripts( + Document doc, String baseUri, [_State state]) { if (state == null) state = new _State(); if (doc == null) { print('warning: $baseUri not found.'); - return state.scripts; + return state.scripts.values; } - if (!state.seen.add(doc)) return state.scripts; + if (!state.seen.add(doc)) return state.scripts.values; for (var node in doc.querySelectorAll('script,link[rel="import"]')) { if (node is LinkElement) { _discoverScripts(node.import, node.href, state); } else if (node is ScriptElement && node.type == 'application/dart') { - state.scripts.add(_scriptInfoFor(node, baseUri)); + var info = _scriptInfoFor(node, baseUri); + if (state.scripts.containsKey(info.resolvedUrl)) { + print('warning: Script `${info.resolvedUrl}` included more than once. ' + 'See http://goo.gl/5HPeuP#polymer_44 for more details.'); + } else { + state.scripts[info.resolvedUrl] = info; + } } } - return state.scripts; + return state.scripts.values; } /// Internal state used in [_discoverScripts]. @@ -89,7 +96,7 @@ class _State { final Set seen = new Set(); /// Scripts that have been discovered, in tree order. - final List<_ScriptInfo> scripts = []; + final LinkedHashMap scripts = {}; } /// Holds information about a Dart script tag. diff --git a/pkg/polymer/test/build/import_inliner_test.dart b/pkg/polymer/test/build/import_inliner_test.dart index a891a123a35a..578e2090e947 100644 --- a/pkg/polymer/test/build/import_inliner_test.dart +++ b/pkg/polymer/test/build/import_inliner_test.dart @@ -169,6 +169,28 @@ void importTests() { 'a|web/second.js': '/*second*/' }); + testLogOutput( + (options) => new ImportInliner(options), + 'removes duplicate scripts', { + 'a|web/test.html': + '' + '' + '' + '', + 'a|lib/x_a.html': + '', + 'a|lib/x_b.html': + '', + 'a|lib/bar.dart': 'var i = 0;' + }, { + 'a|web/test.html': + '', + 'a|web/test.html._data': expectedData(['lib/bar.dart']), + }, [ + 'warning: ${SCRIPT_INCLUDED_MORE_THAN_ONCE.create( + {'url': 'packages/a/bar.dart'}).snippet} (lib/x_b.html 0 0)' + ]); + final cspPhases = [[new ImportInliner( new TransformOptions(contentSecurityPolicy: true))]]; testPhases('extract Js scripts in CSP mode', cspPhases, From 7611c5415adea72826c207cc2de939e620562a25 Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Wed, 22 Oct 2014 15:48:06 +0000 Subject: [PATCH 84/91] Add an integration test to verify that server I/O is asynchronous. Currently disabled, since server I/O is currently synchronous. BUG=dartbug.com/21252 R=danrubel@google.com Review URL: https://codereview.chromium.org//668953002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41246 260f80e4-7a28-3924-810f-c04153c831b5 --- .../test/integration/asynchrony_test.dart | 70 +++++++++ .../test/integration/integration_tests.dart | 134 +++++++++--------- .../test/integration/test_all.dart | 8 ++ .../test/timing/timing_framework.dart | 3 +- pkg/pkg.status | 1 + 5 files changed, 151 insertions(+), 65 deletions(-) create mode 100644 pkg/analysis_server/test/integration/asynchrony_test.dart diff --git a/pkg/analysis_server/test/integration/asynchrony_test.dart b/pkg/analysis_server/test/integration/asynchrony_test.dart new file mode 100644 index 000000000000..4ae0e19ce289 --- /dev/null +++ b/pkg/analysis_server/test/integration/asynchrony_test.dart @@ -0,0 +1,70 @@ +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +library test.integration.analysis.error; + +import 'dart:async'; + +import 'package:unittest/unittest.dart'; + +import '../reflective_tests.dart'; +import 'integration_tests.dart'; + +/** + * Verify that the server's input and output streams are asynchronous by + * attempting to flood its input buffer with commands without listening to + * its output buffer for responses. The server should continue to train its + * input buffer even though its output buffer is full. + * + * Once enough commands have been sent, we begin reading from the server's + * output buffer, and verify that it responds to the last command. + */ +@ReflectiveTestCase() +class AsynchronyIntegrationTest { + /** + * Connection to the analysis server. + */ + final Server server = new Server(); + + /** + * Number of messages to queue up before listening for responses. + */ + static const MESSAGE_COUNT = 10000; + + Future setUp() { + return server.start(); + } + + test_asynchrony() { + // Send MESSAGE_COUNT messages to the server without listening for + // responses. + Future lastMessageResult; + for (int i = 0; i < MESSAGE_COUNT; i++) { + lastMessageResult = server.send('server.getVersion', null); + } + + // Flush the server's standard input stream to verify that it has really + // received them all. If the server is blocked waiting for us to read + // its responses, the flush will never complete. + return server.flushCommands().then((_) { + + // Begin processing responses from the server. + server.listenToOutput((String event, params) { + // No notifications are expected. + fail('Unexpected notification: $event'); + }); + + // Terminate the test when the response to the last message is received. + lastMessageResult.then((_) { + server.send("server.shutdown", null).then((_) { + return server.exitCode; + }); + }); + }); + } +} + +main() { + runReflectiveTests(AsynchronyIntegrationTest); +} diff --git a/pkg/analysis_server/test/integration/integration_tests.dart b/pkg/analysis_server/test/integration/integration_tests.dart index 189b70112df8..372293d5fb5d 100644 --- a/pkg/analysis_server/test/integration/integration_tests.dart +++ b/pkg/analysis_server/test/integration/integration_tests.dart @@ -51,12 +51,6 @@ abstract class AbstractAnalysisServerIntegrationTest extends */ bool skipShutdown = false; - /** - * Data associated with the "server.connected" notification that was received - * when the server started up. - */ - var serverConnectedParams; - /** * True if we are currently subscribed to [SERVER_STATUS] updates. */ @@ -156,8 +150,8 @@ abstract class AbstractAnalysisServerIntegrationTest extends expect(serverConnected.isCompleted, isFalse); serverConnected.complete(); }); - return server.start(dispatchNotification).then((params) { - serverConnectedParams = params; + return server.start().then((_) { + server.listenToOutput(dispatchNotification); server.exitCode.then((_) { skipShutdown = true; }); @@ -688,14 +682,11 @@ class Server { * Start the server. If [debugServer] is true, the server will be started * with "--debug", allowing a debugger to be attached. */ - Future start(NotificationProcessor notificationProcessor, {bool debugServer: - false}) { + Future start({bool debugServer: false}) { if (_process != null) { throw new Exception('Process already started'); } _time.start(); - // TODO(paulberry): move the logic for finding the script, the dart - // executable, and the package root into a shell script. String dartBinary = Platform.executable; String rootDir = findRoot(Platform.script.toFilePath(windows: Platform.isWindows)); @@ -711,58 +702,6 @@ class Server { arguments.add(serverPath); return Process.start(dartBinary, arguments).then((Process process) { _process = process; - process.stdout.transform( - (new Utf8Codec()).decoder).transform(new LineSplitter()).listen((String line) { - String trimmedLine = line.trim(); - _recordStdio('RECV: $trimmedLine'); - var message; - try { - message = JSON.decoder.convert(trimmedLine); - } catch (exception) { - _badDataFromServer(); - return; - } - expect(message, isMap); - Map messageAsMap = message; - if (messageAsMap.containsKey('id')) { - expect(messageAsMap['id'], isString); - String id = message['id']; - Completer completer = _pendingCommands[id]; - if (completer == null) { - fail('Unexpected response from server: id=$id'); - } else { - _pendingCommands.remove(id); - } - if (messageAsMap.containsKey('error')) { - // TODO(paulberry): propagate the error info to the completer. - completer.completeError( - new UnimplementedError( - 'Server responded with an error: ${JSON.encode(message)}')); - } else { - completer.complete(messageAsMap['result']); - } - // Check that the message is well-formed. We do this after calling - // completer.complete() or completer.completeError() so that we don't - // stall the test in the event of an error. - expect(message, isResponse); - } else { - // Message is a notification. It should have an event and possibly - // params. - expect(messageAsMap, contains('event')); - expect(messageAsMap['event'], isString); - notificationProcessor(messageAsMap['event'], messageAsMap['params']); - // Check that the message is well-formed. We do this after calling - // notificationController.add() so that we don't stall the test in the - // event of an error. - expect(message, isNotification); - } - }); - process.stderr.transform( - (new Utf8Codec()).decoder).transform(new LineSplitter()).listen((String line) { - String trimmedLine = line.trim(); - _recordStdio('ERR: $trimmedLine'); - _badDataFromServer(); - }); process.exitCode.then((int code) { _recordStdio('TERMINATED WITH EXIT CODE $code'); if (code != 0) { @@ -772,6 +711,65 @@ class Server { }); } + /** + * Start listening to output from the server, and deliver notifications to + * [notificationProcessor]. + */ + void listenToOutput(NotificationProcessor notificationProcessor) { + _process.stdout.transform( + (new Utf8Codec()).decoder).transform(new LineSplitter()).listen((String line) { + String trimmedLine = line.trim(); + _recordStdio('RECV: $trimmedLine'); + var message; + try { + message = JSON.decoder.convert(trimmedLine); + } catch (exception) { + _badDataFromServer(); + return; + } + expect(message, isMap); + Map messageAsMap = message; + if (messageAsMap.containsKey('id')) { + expect(messageAsMap['id'], isString); + String id = message['id']; + Completer completer = _pendingCommands[id]; + if (completer == null) { + fail('Unexpected response from server: id=$id'); + } else { + _pendingCommands.remove(id); + } + if (messageAsMap.containsKey('error')) { + // TODO(paulberry): propagate the error info to the completer. + completer.completeError( + new UnimplementedError( + 'Server responded with an error: ${JSON.encode(message)}')); + } else { + completer.complete(messageAsMap['result']); + } + // Check that the message is well-formed. We do this after calling + // completer.complete() or completer.completeError() so that we don't + // stall the test in the event of an error. + expect(message, isResponse); + } else { + // Message is a notification. It should have an event and possibly + // params. + expect(messageAsMap, contains('event')); + expect(messageAsMap['event'], isString); + notificationProcessor(messageAsMap['event'], messageAsMap['params']); + // Check that the message is well-formed. We do this after calling + // notificationController.add() so that we don't stall the test in the + // event of an error. + expect(message, isNotification); + } + }); + _process.stderr.transform( + (new Utf8Codec()).decoder).transform(new LineSplitter()).listen((String line) { + String trimmedLine = line.trim(); + _recordStdio('ERR: $trimmedLine'); + _badDataFromServer(); + }); + } + /** * Future that completes when the server process exits. */ @@ -826,6 +824,14 @@ class Server { } } + /** + * Return a future that will complete when all commands that have been sent + * to the server so far have been flushed to the OS buffer. + */ + Future flushCommands() { + return _process.stdin.flush(); + } + /** * Deal with bad data received from the server. */ diff --git a/pkg/analysis_server/test/integration/test_all.dart b/pkg/analysis_server/test/integration/test_all.dart index d9251f0ec460..be609ceb6076 100644 --- a/pkg/analysis_server/test/integration/test_all.dart +++ b/pkg/analysis_server/test/integration/test_all.dart @@ -7,10 +7,15 @@ library test.integration.all; import 'package:unittest/unittest.dart'; import 'analysis/test_all.dart' as analysis_test_all; +import 'asynchrony_test.dart' as asynchrony_test; import 'completion/test_all.dart' as completion_test_all; import 'search/test_all.dart' as search_test_all; import 'server/test_all.dart' as server_test_all; +// Disable asynchrony test for now. +// TODO(paulberry): re-enable when issue 21252 is fixed. +const bool _ENABLE_ASYNCHRONY_TEST = false; + /** * Utility for manually running all integration tests. */ @@ -18,6 +23,9 @@ main() { groupSep = ' | '; group('analysis_server_integration', () { analysis_test_all.main(); + if (_ENABLE_ASYNCHRONY_TEST) { + asynchrony_test.main(); + } completion_test_all.main(); search_test_all.main(); server_test_all.main(); diff --git a/pkg/analysis_server/test/timing/timing_framework.dart b/pkg/analysis_server/test/timing/timing_framework.dart index cbaf1e61c1ff..cf10ee4e006f 100644 --- a/pkg/analysis_server/test/timing/timing_framework.dart +++ b/pkg/analysis_server/test/timing/timing_framework.dart @@ -89,7 +89,8 @@ abstract class TimingTest extends IntegrationTestMixin { onServerConnected.listen((_) { serverConnected.complete(); }); - return server.start(dispatchNotification).then((params) { + return server.start().then((params) { + server.listenToOutput(dispatchNotification); server.exitCode.then((_) { skipShutdown = true; }); diff --git a/pkg/pkg.status b/pkg/pkg.status index fb720591bdfd..94131408ad39 100644 --- a/pkg/pkg.status +++ b/pkg/pkg.status @@ -19,6 +19,7 @@ scheduled_test/test/scheduled_server_test: Pass, Fail # 13524 scheduled_test/test/scheduled_process_test: Pass, Slow # Issue 9231 scheduled_test/test/scheduled_stream/stream_matcher_test: Pass, Slow polymer/test/build/script_compactor_test: Pass, Slow +analysis_server/test/integration/asynchrony_test: Skip # Issue 21252 [ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ] third_party/angular_tests/browser_test/*: Skip # github perf_api.dart issue 5 From 3db67767db7d7811a19b1990ad0e995d42220801 Mon Sep 17 00:00:00 2001 From: "jakemac@google.com" Date: Wed, 22 Oct 2014 16:44:04 +0000 Subject: [PATCH 85/91] update pubspec/changelog R=sigmund@google.com Review URL: https://codereview.chromium.org//675503002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41247 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/polymer/CHANGELOG.md | 4 ++++ pkg/polymer/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/polymer/CHANGELOG.md b/pkg/polymer/CHANGELOG.md index cbe1eb4cc33d..747d3196ff55 100644 --- a/pkg/polymer/CHANGELOG.md +++ b/pkg/polymer/CHANGELOG.md @@ -1,3 +1,7 @@ +#### 0.15.1+2 + * Handle and warn about cases where a script file is included twice from the + same entrypoint [21332](http://dartbug.com/21332). + #### 0.15.1+1 * Fix typo in error message polymer#42 diff --git a/pkg/polymer/pubspec.yaml b/pkg/polymer/pubspec.yaml index 57301bdef6d0..7f1513fbf7d3 100644 --- a/pkg/polymer/pubspec.yaml +++ b/pkg/polymer/pubspec.yaml @@ -1,5 +1,5 @@ name: polymer -version: 0.15.1+1 +version: 0.15.1+2 author: Polymer.dart Authors description: > Polymer.dart is a new type of library for the web, built on top of Web From a0d1438963ae9659a976e201c96baee9fb6a18b7 Mon Sep 17 00:00:00 2001 From: "sra@google.com" Date: Wed, 22 Oct 2014 19:46:37 +0000 Subject: [PATCH 86/91] Clean up dart2js DateTime class for better codegen Two changes lead to better date code: - Ensure that the fields of DataTime are inferred as non-null. - Defer lazyAsJsDate. Example generated code: before: t1 = Date.now(); new P.DateTime(t1, false).DateTime$_now$0(); if (typeof t1 !== "number") return t1.$add(); minTime = t1 + 16; after: minTime = Date.now() + 16; BUG= R=lrn@google.com Review URL: https://codereview.chromium.org//667333002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41249 260f80e4-7a28-3924-810f-c04153c831b5 --- .../_internal/compiler/js_lib/core_patch.dart | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/sdk/lib/_internal/compiler/js_lib/core_patch.dart b/sdk/lib/_internal/compiler/js_lib/core_patch.dart index 49cc6cbd6203..77098e1dadfa 100644 --- a/sdk/lib/_internal/compiler/js_lib/core_patch.dart +++ b/sdk/lib/_internal/compiler/js_lib/core_patch.dart @@ -6,7 +6,7 @@ import "dart:_internal" as _symbol_dev; import 'dart:_interceptors'; import 'dart:_js_helper' show patch, - checkNull, + checkInt, getRuntimeType, JSSyntaxRegExp, Primitives, @@ -156,19 +156,16 @@ class DateTime { int second, int millisecond, bool isUtc) - : this.isUtc = checkNull(isUtc), - millisecondsSinceEpoch = Primitives.valueFromDecomposedDate( - year, month, day, hour, minute, second, millisecond, isUtc) { - if (millisecondsSinceEpoch == null) throw new ArgumentError(); - Primitives.lazyAsJsDate(this); - } + // checkBool is manually inlined here because dart2js doesn't inline it + // and [isUtc] is usually a constant. + : this.isUtc = isUtc is bool ? isUtc : throw new ArgumentError(isUtc), + millisecondsSinceEpoch = checkInt(Primitives.valueFromDecomposedDate( + year, month, day, hour, minute, second, millisecond, isUtc)); @patch DateTime._now() : isUtc = false, - millisecondsSinceEpoch = Primitives.dateNow() { - Primitives.lazyAsJsDate(this); - } + millisecondsSinceEpoch = Primitives.dateNow(); @patch static int _brokenDownDateToMillisecondsSinceEpoch( From 3b2a8b556009357b3473dfd947706e33f3763f68 Mon Sep 17 00:00:00 2001 From: "leafp@google.com" Date: Wed, 22 Oct 2014 20:36:01 +0000 Subject: [PATCH 87/91] Skip broken-ideographic-font_t01 co19 test on mac (timing out) Should bring dartium mac full bot back to green. TBR=vsm@google.com BUG= Review URL: https://codereview.chromium.org//640063006 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41250 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/co19/co19-dartium.status | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/co19/co19-dartium.status b/tests/co19/co19-dartium.status index 51126a806171..f0b2ae26ec28 100644 --- a/tests/co19/co19-dartium.status +++ b/tests/co19/co19-dartium.status @@ -21,6 +21,9 @@ LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: Skip # co19 is [ $compiler == none && $runtime == drt ] *: Skip # running co19 tests on content_shell would make our dartium cycle-times very long +[ $compiler == none && $runtime == dartium && $system == macos ] +LayoutTests/fast/writing-mode/broken-ideographic-font_t01: Skip # Timing out on the bots + [ $compiler == none && $mode == debug && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ] LayoutTests/fast/canvas/canvas-lineDash-input-sequence_t01: Skip # Issue 20867 LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: Skip # Issue 20540 From 516a33a0cc9b292234dbe5031a10bc4fce434ff5 Mon Sep 17 00:00:00 2001 From: "koda@google.com" Date: Wed, 22 Oct 2014 20:41:44 +0000 Subject: [PATCH 88/91] Avoid races in capacity accounting. Use pages_lock_ to sync access to usage_.capacity_in_words. Also remove ASSERT no longer valid with concurrent sweep. This does not resolve the more general issue of the growth policy not being perpared for concurrent sweeping. BUG=21363 R=iposva@google.com Review URL: https://codereview.chromium.org//670973002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41251 260f80e4-7a28-3924-810f-c04153c831b5 --- runtime/vm/pages.cc | 31 ++++++++++++++++--------------- runtime/vm/pages.h | 21 +++++++++++++++++++-- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc index 4954f8de3f83..1f5666d8c3e6 100644 --- a/runtime/vm/pages.cc +++ b/runtime/vm/pages.cc @@ -200,7 +200,7 @@ HeapPage* PageSpace::AllocatePage(HeapPage::PageType type) { } exec_pages_tail_ = page; } - usage_.capacity_in_words += kPageSizeInWords; + IncreaseCapacityInWordsLocked(kPageSizeInWords); page->set_object_end(page->memory_->end()); return page; } @@ -211,7 +211,7 @@ HeapPage* PageSpace::AllocateLargePage(intptr_t size, HeapPage::PageType type) { HeapPage* page = HeapPage::Allocate(page_size_in_words, type); page->set_next(large_pages_); large_pages_ = page; - usage_.capacity_in_words += page_size_in_words; + IncreaseCapacityInWords(page_size_in_words); // Only one object in this page (at least until String::MakeExternal or // Array::MakeArray is called). page->set_object_end(page->object_start() + size); @@ -230,8 +230,7 @@ void PageSpace::TruncateLargePage(HeapPage* page, const intptr_t old_page_size_in_words = (memory->size() >> kWordSizeLog2); if (new_page_size_in_words < old_page_size_in_words) { memory->Truncate(new_page_size_in_words << kWordSizeLog2); - usage_.capacity_in_words -= old_page_size_in_words; - usage_.capacity_in_words += new_page_size_in_words; + IncreaseCapacityInWords(new_page_size_in_words - old_page_size_in_words); page->set_object_end(page->object_start() + new_object_size_in_bytes); } } @@ -241,7 +240,7 @@ void PageSpace::FreePage(HeapPage* page, HeapPage* previous_page) { bool is_exec = (page->type() == HeapPage::kExecutable); { MutexLocker ml(pages_lock_); - usage_.capacity_in_words -= (page->memory_->size() >> kWordSizeLog2); + IncreaseCapacityInWordsLocked(-(page->memory_->size() >> kWordSizeLog2)); if (!is_exec) { // Remove the page from the list of data pages. if (previous_page != NULL) { @@ -270,7 +269,7 @@ void PageSpace::FreePage(HeapPage* page, HeapPage* previous_page) { void PageSpace::FreeLargePage(HeapPage* page, HeapPage* previous_page) { - usage_.capacity_in_words -= (page->memory_->size() >> kWordSizeLog2); + IncreaseCapacityInWords(-(page->memory_->size() >> kWordSizeLog2)); // Remove the page from the list. if (previous_page != NULL) { previous_page->set_next(page->next()); @@ -297,7 +296,7 @@ uword PageSpace::TryAllocateInFreshPage(intptr_t size, bool is_locked) { ASSERT(size < kAllocatablePageSize); uword result = 0; - SpaceUsage after_allocation = usage_; + SpaceUsage after_allocation = GetCurrentUsage(); after_allocation.used_in_words += size >> kWordSizeLog2; // Can we grow by one page? after_allocation.capacity_in_words += kPageSizeInWords; @@ -308,7 +307,8 @@ uword PageSpace::TryAllocateInFreshPage(intptr_t size, ASSERT(page != NULL); // Start of the newly allocated page is the allocated object. result = page->object_start(); - usage_ = after_allocation; + // Note: usage_.capacity_in_words is increased by AllocatePage. + usage_.used_in_words += size >> kWordSizeLog2; // Enqueue the remainder in the free list. uword free_start = result + size; intptr_t free_size = page->object_end() - free_start; @@ -332,7 +332,7 @@ uword PageSpace::TryAllocateInternal(intptr_t size, ASSERT(size >= kObjectAlignment); ASSERT(Utils::IsAligned(size, kObjectAlignment)); #ifdef DEBUG - SpaceUsage usage_before = usage_; + SpaceUsage usage_before = GetCurrentUsage(); #endif uword result = 0; if (size < kAllocatablePageSize) { @@ -354,7 +354,7 @@ uword PageSpace::TryAllocateInternal(intptr_t size, // On overflow we fail to allocate. return 0; } - SpaceUsage after_allocation = usage_; + SpaceUsage after_allocation = GetCurrentUsage(); after_allocation.used_in_words += size >> kWordSizeLog2; after_allocation.capacity_in_words += page_size_in_words; if ((growth_policy == kForceGrowth || @@ -363,7 +363,8 @@ uword PageSpace::TryAllocateInternal(intptr_t size, HeapPage* page = AllocateLargePage(size, type); if (page != NULL) { result = page->object_start(); - usage_ = after_allocation; + // Note: usage_.capacity_in_words is increased by AllocateLargePage. + usage_.used_in_words += size >> kWordSizeLog2; } } } @@ -377,9 +378,8 @@ uword PageSpace::TryAllocateInternal(intptr_t size, } } else { #ifdef DEBUG - // A failed allocation should not change usage_. + // A failed allocation should not change used_in_words. ASSERT(usage_before.used_in_words == usage_.used_in_words); - ASSERT(usage_before.capacity_in_words == usage_.capacity_in_words); #endif } ASSERT((result & kObjectAlignmentMask) == kOldObjectAlignmentOffset); @@ -669,7 +669,7 @@ void PageSpace::MarkSweep(bool invoke_api_callbacks) { WriteProtectCode(false); // Save old value before GCMarker visits the weak persistent handles. - SpaceUsage usage_before = usage_; + SpaceUsage usage_before = GetCurrentUsage(); // Mark all reachable old-gen objects. bool collect_code = FLAG_collect_code && ShouldCollectCode(); @@ -770,7 +770,8 @@ void PageSpace::MarkSweep(bool invoke_api_callbacks) { int64_t end = OS::GetCurrentTimeMicros(); // Record signals for growth control. Include size of external allocations. - page_space_controller_.EvaluateGarbageCollection(usage_before, usage_, + page_space_controller_.EvaluateGarbageCollection(usage_before, + GetCurrentUsage(), start, end); heap_->RecordTime(kMarkObjects, mid1 - start); diff --git a/runtime/vm/pages.h b/runtime/vm/pages.h index 2a9d78ce124f..d2c75419c2b0 100644 --- a/runtime/vm/pages.h +++ b/runtime/vm/pages.h @@ -7,6 +7,7 @@ #include "vm/freelist.h" #include "vm/globals.h" +#include "vm/lockers.h" #include "vm/ring_buffer.h" #include "vm/spaces.h" #include "vm/virtual_memory.h" @@ -214,11 +215,25 @@ class PageSpace { } intptr_t UsedInWords() const { return usage_.used_in_words; } - intptr_t CapacityInWords() const { return usage_.capacity_in_words; } + intptr_t CapacityInWords() const { + MutexLocker ml(pages_lock_); + return usage_.capacity_in_words; + } + void IncreaseCapacityInWords(intptr_t increase_in_words) { + MutexLocker ml(pages_lock_); + IncreaseCapacityInWordsLocked(increase_in_words); + } + void IncreaseCapacityInWordsLocked(intptr_t increase_in_words) { + DEBUG_ASSERT(pages_lock_->Owner() == Isolate::Current()); + usage_.capacity_in_words += increase_in_words; + } intptr_t ExternalInWords() const { return usage_.external_in_words; } - SpaceUsage GetCurrentUsage() const { return usage_; } + SpaceUsage GetCurrentUsage() const { + MutexLocker ml(pages_lock_); + return usage_; + } bool Contains(uword addr) const; bool Contains(uword addr, HeapPage::PageType type) const; @@ -385,6 +400,8 @@ class PageSpace { // Various sizes being tracked for this generation. intptr_t max_capacity_in_words_; + // NOTE: The capacity component of usage_ is updated by the concurrent + // sweeper. Use (Increase)CapacityInWords(Locked) for thread-safe access. SpaceUsage usage_; // Keep track of running MarkSweep tasks. From d070599c9dbfff5298fb699f75b4c47c0d8edda9 Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Wed, 22 Oct 2014 21:52:26 +0000 Subject: [PATCH 89/91] Record types of invoked variables. R=brianwilkerson@google.com BUG= Review URL: https://codereview.chromium.org//673673002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41252 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analyzer/lib/src/generated/element.dart | 11 ++- pkg/analyzer/lib/src/generated/resolver.dart | 10 +-- pkg/analyzer/pubspec.yaml | 2 +- .../test/generated/resolver_test.dart | 82 ++++++++++++++++++- 4 files changed, 96 insertions(+), 9 deletions(-) diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart index 5cbdc89e037d..51fb4d1f4040 100644 --- a/pkg/analyzer/lib/src/generated/element.dart +++ b/pkg/analyzer/lib/src/generated/element.dart @@ -5131,12 +5131,21 @@ class FunctionTypeAliasElementImpl extends ElementImpl implements FunctionTypeAl */ static List EMPTY_ARRAY = new List(0); + /** + * Initialize a newly created type alias element to have the given name. + * + * [name] the name of this element + * [nameOffset] the offset of the name of this element in the file that + * contains the declaration of this element + */ + FunctionTypeAliasElementImpl(String name, int nameOffset) : super(name, nameOffset); + /** * Initialize a newly created type alias element to have the given name. * * @param name the name of this element */ - FunctionTypeAliasElementImpl(Identifier name) : super.forNode(name); + FunctionTypeAliasElementImpl.forNode(Identifier name) : super.forNode(name); @override accept(ElementVisitor visitor) => visitor.visitFunctionTypeAliasElement(this); diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 32d659cd1c31..1717d76b54f8 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -3851,7 +3851,7 @@ class ElementBuilder extends RecursiveAstVisitor { SimpleIdentifier aliasName = node.name; List parameters = holder.parameters; List typeParameters = holder.typeParameters; - FunctionTypeAliasElementImpl element = new FunctionTypeAliasElementImpl(aliasName); + FunctionTypeAliasElementImpl element = new FunctionTypeAliasElementImpl.forNode(aliasName); element.parameters = parameters; element.typeParameters = typeParameters; FunctionTypeImpl type = new FunctionTypeImpl.con2(element); @@ -21740,9 +21740,9 @@ class StaticTypeAnalyzer extends SimpleAstVisitor { Object visitMethodInvocation(MethodInvocation node) { SimpleIdentifier methodNameNode = node.methodName; Element staticMethodElement = methodNameNode.staticElement; - // Record types of the local variable invoked as a function. - if (staticMethodElement is LocalVariableElement) { - LocalVariableElement variable = staticMethodElement; + // Record types of the variable invoked as a function. + if (staticMethodElement is VariableElement) { + VariableElement variable = staticMethodElement; DartType staticType = variable.type; _recordStaticType(methodNameNode, staticType); DartType propagatedType = _overrideManager.getType(variable); @@ -24801,7 +24801,7 @@ class TypeResolverVisitor extends ScopedVisitor { */ void _setFunctionTypedParameterType(ParameterElementImpl element, TypeName returnType, FormalParameterList parameterList) { List parameters = _getElements(parameterList); - FunctionTypeAliasElementImpl aliasElement = new FunctionTypeAliasElementImpl(null); + FunctionTypeAliasElementImpl aliasElement = new FunctionTypeAliasElementImpl.forNode(null); aliasElement.synthetic = true; aliasElement.shareParameters(parameters); aliasElement.returnType = _computeReturnType(returnType); diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml index 61d046d9281b..54c3359c2152 100644 --- a/pkg/analyzer/pubspec.yaml +++ b/pkg/analyzer/pubspec.yaml @@ -1,5 +1,5 @@ name: analyzer -version: 0.23.0-dev.12 +version: 0.23.0-dev.13 author: Dart Team description: Static analyzer for Dart. homepage: http://www.dartlang.org diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart index 9f802883de9f..a11bf5237407 100644 --- a/pkg/analyzer/test/generated/resolver_test.dart +++ b/pkg/analyzer/test/generated/resolver_test.dart @@ -132,7 +132,7 @@ class AnalysisContextFactory { futureElement.constructors = [futureConstructor]; // Future then(onValue(T value), { Function onError }); List parameters = [ElementFactory.requiredParameter2("value", futureElement.typeParameters[0].type)]; - FunctionTypeAliasElementImpl aliasElement = new FunctionTypeAliasElementImpl(null); + FunctionTypeAliasElementImpl aliasElement = new FunctionTypeAliasElementImpl.forNode(null); aliasElement.synthetic = true; aliasElement.shareParameters(parameters); aliasElement.returnType = provider.dynamicType; @@ -6414,7 +6414,7 @@ class ScopeBuilderTest extends EngineTestCase { FunctionTypeAlias aliasNode = AstFactory.typeAlias(AstFactory.typeName4("A", []), "F", AstFactory.typeParameterList([]), AstFactory.formalParameterList([])); unit.declarations.add(aliasNode); SimpleIdentifier aliasName = aliasNode.name; - FunctionTypeAliasElement aliasElement = new FunctionTypeAliasElementImpl(aliasName); + FunctionTypeAliasElement aliasElement = new FunctionTypeAliasElementImpl.forNode(aliasName); aliasName.staticElement = aliasElement; (unit.element as CompilationUnitElementImpl).typeAliases = [aliasElement]; return aliasNode; @@ -8446,6 +8446,82 @@ class StaticTypeAnalyzerTest extends EngineTestCase { } } + +/** + * Like [StaticTypeAnalyzerTest], but as end-to-end tests. + */ +class StaticTypeAnalyzer2Test extends ResolverTestCase { + String testCode; + Source testSource; + CompilationUnit testUnit; + + void test_MethodInvocation_nameType_localVariable() { + String code = r""" +typedef Foo(); +main() { + Foo foo; + foo(); +} +"""; + _resolveTestUnit(code); + // "foo" should be resolved to the "Foo" type + SimpleIdentifier identifier = _findIdentifier("foo();"); + DartType type = identifier.staticType; + _ut.expect(type, new _ut.isInstanceOf()); + } + + void test_MethodInvocation_nameType_parameter_FunctionTypeAlias() { + String code = r""" +typedef Foo(); +main(Foo foo) { + foo(); +} +"""; + _resolveTestUnit(code); + // "foo" should be resolved to the "Foo" type + SimpleIdentifier identifier = _findIdentifier("foo();"); + DartType type = identifier.staticType; + _ut.expect(type, new _ut.isInstanceOf()); + } + + void test_MethodInvocation_nameType_parameter_propagatedType() { + String code = r""" +typedef Foo(); +main(p) { + if (p is Foo) { + p(); + } +} +"""; + _resolveTestUnit(code); + SimpleIdentifier identifier = _findIdentifier("p()"); + _ut.expect(identifier.staticType, DynamicTypeImpl.instance); + { + FunctionType type = identifier.propagatedType; + _ut.expect(type, _ut.isNotNull); + _ut.expect(type.name, 'Foo'); + } + } + + SimpleIdentifier _findIdentifier(String search) { + SimpleIdentifier identifier = EngineTestCase.findNode( + testUnit, + testCode, + search, + (node) => node is SimpleIdentifier); + return identifier; + } + + void _resolveTestUnit(String code) { + testCode = code; + testSource = addSource(testCode); + LibraryElement library = resolve(testSource); + assertNoErrors(testSource); + verify([testSource]); + testUnit = resolveCompilationUnit(testSource, library); + } +} + /** * Instances of the class `StaticTypeVerifier` verify that all of the nodes in an AST * structure that should have a static type associated with them do have a static type. @@ -9398,6 +9474,7 @@ class TypeOverrideManagerTest extends EngineTestCase { } } + class TypePropagationTest extends ResolverTestCase { void fail_mergePropagatedTypesAtJoinPoint_1() { // https://code.google.com/p/dart/issues/detail?id=19929 @@ -11073,6 +11150,7 @@ main() { runReflectiveTests(LibraryResolverTest); runReflectiveTests(LibraryTest); runReflectiveTests(StaticTypeAnalyzerTest); + runReflectiveTests(StaticTypeAnalyzer2Test); runReflectiveTests(SubtypeManagerTest); runReflectiveTests(TypeOverrideManagerTest); runReflectiveTests(TypeProviderImplTest); From 751e087262f4f42d83c8eebc8b721a8e58b36cf2 Mon Sep 17 00:00:00 2001 From: "paulberry@google.com" Date: Thu, 23 Oct 2014 00:11:36 +0000 Subject: [PATCH 90/91] Add package root setting to analysis server API. The command does not have any effect yet. R=brianwilkerson@google.com Review URL: https://codereview.chromium.org//672003002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41253 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/analysis_server/doc/api.html | 21 +++++ .../lib/src/analysis_server.dart | 12 +-- .../lib/src/context_manager.dart | 12 ++- .../lib/src/domain_analysis.dart | 20 +++-- .../lib/src/generated_protocol.dart | 32 ++++++- pkg/analysis_server/lib/src/protocol.dart | 6 ++ .../test/context_manager_test.dart | 88 ++++++++++--------- .../integration/integration_test_methods.dart | 19 +++- .../test/integration/protocol_matchers.dart | 3 + pkg/analysis_server/tool/spec/spec_input.html | 24 +++++ 10 files changed, 174 insertions(+), 63 deletions(-) diff --git a/pkg/analysis_server/doc/api.html b/pkg/analysis_server/doc/api.html index 598a9e6aa29a..12552c57f4bb 100644 --- a/pkg/analysis_server/doc/api.html +++ b/pkg/analysis_server/doc/api.html @@ -451,6 +451,7 @@

Parameters

file ( F "params": { "included": List<FilePath> "excluded": List<FilePath> + "packageRoots": optional Map<FilePath, FilePath> } }
response: {
   "id": String
@@ -498,6 +499,26 @@ 

Parameters

included ( List<packageRoots ( optional Map<FilePath, FilePath> )
+ +

+ A mapping from source directories to target directories + that should override the normal package: URI resolution + mechanism. The analyzer will behave as though each + source directory in the map contains a special + pubspec.yaml file which resolves any package: URI to the + corresponding path within the target directory. The + effect is the same as specifying the target directory as + a "--package_root" parameter to the Dart VM when + executing any Dart file inside the source directory. +

+

+ Files in any directories that are not overridden by this + mapping have their package: URI's resolved using the + normal pubspec.yaml mechanism. If this field is absent, + or the empty map is specified, that indicates that the + normal pubspec.yaml mechanism should always be used. +

analysis.setPriorityFiles
request: {
   "id": String
   "method": "analysis.setPriorityFiles"
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index b63a9c0346f9..6daf3e19b7b1 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -436,9 +436,8 @@ class AnalysisServer {
           channel.sendResponse(exception.response);
           return;
         } catch (exception, stackTrace) {
-          RequestError error = new RequestError(
-              RequestErrorCode.SERVER_ERROR,
-              exception);
+          RequestError error =
+              new RequestError(RequestErrorCode.SERVER_ERROR, exception);
           if (stackTrace != null) {
             error.stackTrace = stackTrace.toString();
           }
@@ -563,9 +562,12 @@ class AnalysisServer {
    * projects/contexts support.
    */
   void setAnalysisRoots(String requestId, List includedPaths,
-      List excludedPaths) {
+      List excludedPaths, Map packageRoots) {
     try {
-      contextDirectoryManager.setRoots(includedPaths, excludedPaths);
+      contextDirectoryManager.setRoots(
+          includedPaths,
+          excludedPaths,
+          packageRoots);
     } on UnimplementedError catch (e) {
       throw new RequestFailure(
           new Response.unsupportedFeature(requestId, e.message));
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index c46d214b4453..7b9b4e15179e 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -60,6 +60,11 @@ abstract class ContextManager {
    */
   List includedPaths = [];
 
+  /**
+   * The map of package roots most recently passed to [setRoots].
+   */
+  Map packageRoots = {};
+
   /**
    * Provider which is used to determine the mapping from package name to
    * package folder.
@@ -116,14 +121,17 @@ abstract class ContextManager {
     contextFolders.forEach(_destroyContext);
 
     // Rebuild contexts based on the data last sent to setRoots().
-    setRoots(includedPaths, excludedPaths);
+    setRoots(includedPaths, excludedPaths, packageRoots);
   }
 
   /**
    * Change the set of paths which should be used as starting points to
    * determine the context directories.
    */
-  void setRoots(List includedPaths, List excludedPaths) {
+  void setRoots(List includedPaths, List excludedPaths,
+      Map packageRoots) {
+    // TODO(paulberry): process package roots.
+    this.packageRoots = packageRoots;
     List contextFolders = _contexts.keys.toList();
     // included
     Set includedFolders = new HashSet();
diff --git a/pkg/analysis_server/lib/src/domain_analysis.dart b/pkg/analysis_server/lib/src/domain_analysis.dart
index 4ea12bf37dd4..3d3deb520eae 100644
--- a/pkg/analysis_server/lib/src/domain_analysis.dart
+++ b/pkg/analysis_server/lib/src/domain_analysis.dart
@@ -47,10 +47,10 @@ class AnalysisDomainHandler implements RequestHandler {
           if (errorInfo == null) {
             server.sendResponse(new Response.getErrorsInvalidFile(request));
           } else {
-            errors = doAnalysisError_listFromEngine(errorInfo.lineInfo,
-                errorInfo.errors);
-            server.sendResponse(new AnalysisGetErrorsResult(errors).toResponse(
-                request.id));
+            errors =
+                doAnalysisError_listFromEngine(errorInfo.lineInfo, errorInfo.errors);
+            server.sendResponse(
+                new AnalysisGetErrorsResult(errors).toResponse(request.id));
           }
           break;
         case AnalysisDoneReason.CONTEXT_REMOVED:
@@ -128,7 +128,11 @@ class AnalysisDomainHandler implements RequestHandler {
   Response setAnalysisRoots(Request request) {
     var params = new AnalysisSetAnalysisRootsParams.fromRequest(request);
     // continue in server
-    server.setAnalysisRoots(request.id, params.included, params.excluded);
+    server.setAnalysisRoots(
+        request.id,
+        params.included,
+        params.excluded,
+        params.packageRoots == null ? {} : params.packageRoots);
     return new AnalysisSetAnalysisRootsResult().toResponse(request.id);
   }
 
@@ -147,9 +151,9 @@ class AnalysisDomainHandler implements RequestHandler {
   Response setSubscriptions(Request request) {
     var params = new AnalysisSetSubscriptionsParams.fromRequest(request);
     // parse subscriptions
-    Map> subMap =
-        mapMap(params.subscriptions, valueCallback:
-          (List subscriptions) => subscriptions.toSet());
+    Map> subMap = mapMap(
+        params.subscriptions,
+        valueCallback: (List subscriptions) => subscriptions.toSet());
     server.setAnalysisSubscriptions(subMap);
     return new AnalysisSetSubscriptionsResult().toResponse(request.id);
   }
diff --git a/pkg/analysis_server/lib/src/generated_protocol.dart b/pkg/analysis_server/lib/src/generated_protocol.dart
index c1a12ff49354..11aaca3c3b57 100644
--- a/pkg/analysis_server/lib/src/generated_protocol.dart
+++ b/pkg/analysis_server/lib/src/generated_protocol.dart
@@ -741,6 +741,7 @@ class AnalysisReanalyzeResult {
  * {
  *   "included": List
  *   "excluded": List
+ *   "packageRoots": optional Map
  * }
  */
 class AnalysisSetAnalysisRootsParams implements HasToJson {
@@ -755,7 +756,23 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
    */
   List excluded;
 
-  AnalysisSetAnalysisRootsParams(this.included, this.excluded);
+  /**
+   * A mapping from source directories to target directories that should
+   * override the normal package: URI resolution mechanism. The analyzer will
+   * behave as though each source directory in the map contains a special
+   * pubspec.yaml file which resolves any package: URI to the corresponding
+   * path within the target directory. The effect is the same as specifying the
+   * target directory as a "--package_root" parameter to the Dart VM when
+   * executing any Dart file inside the source directory.
+   *
+   * Files in any directories that are not overridden by this mapping have
+   * their package: URI's resolved using the normal pubspec.yaml mechanism. If
+   * this field is absent, or the empty map is specified, that indicates that
+   * the normal pubspec.yaml mechanism should always be used.
+   */
+  Map packageRoots;
+
+  AnalysisSetAnalysisRootsParams(this.included, this.excluded, {this.packageRoots});
 
   factory AnalysisSetAnalysisRootsParams.fromJson(JsonDecoder jsonDecoder, String jsonPath, Object json) {
     if (json == null) {
@@ -774,7 +791,11 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
       } else {
         throw jsonDecoder.missingKey(jsonPath, "excluded");
       }
-      return new AnalysisSetAnalysisRootsParams(included, excluded);
+      Map packageRoots;
+      if (json.containsKey("packageRoots")) {
+        packageRoots = jsonDecoder._decodeMap(jsonPath + ".packageRoots", json["packageRoots"], valueDecoder: jsonDecoder._decodeString);
+      }
+      return new AnalysisSetAnalysisRootsParams(included, excluded, packageRoots: packageRoots);
     } else {
       throw jsonDecoder.mismatch(jsonPath, "analysis.setAnalysisRoots params");
     }
@@ -789,6 +810,9 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
     Map result = {};
     result["included"] = included;
     result["excluded"] = excluded;
+    if (packageRoots != null) {
+      result["packageRoots"] = packageRoots;
+    }
     return result;
   }
 
@@ -803,7 +827,8 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
   bool operator==(other) {
     if (other is AnalysisSetAnalysisRootsParams) {
       return _listEqual(included, other.included, (String a, String b) => a == b) &&
-          _listEqual(excluded, other.excluded, (String a, String b) => a == b);
+          _listEqual(excluded, other.excluded, (String a, String b) => a == b) &&
+          _mapEqual(packageRoots, other.packageRoots, (String a, String b) => a == b);
     }
     return false;
   }
@@ -813,6 +838,7 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
     int hash = 0;
     hash = _JenkinsSmiHash.combine(hash, included.hashCode);
     hash = _JenkinsSmiHash.combine(hash, excluded.hashCode);
+    hash = _JenkinsSmiHash.combine(hash, packageRoots.hashCode);
     return _JenkinsSmiHash.finish(hash);
   }
 }
diff --git a/pkg/analysis_server/lib/src/protocol.dart b/pkg/analysis_server/lib/src/protocol.dart
index 94da4eaf01f1..d2afd1752047 100644
--- a/pkg/analysis_server/lib/src/protocol.dart
+++ b/pkg/analysis_server/lib/src/protocol.dart
@@ -129,6 +129,12 @@ bool _listEqual(List listA, List listB, bool itemEqual(a, b)) {
  * values.
  */
 bool _mapEqual(Map mapA, Map mapB, bool valueEqual(a, b)) {
+  if (mapA == null) {
+    return mapB == null;
+  }
+  if (mapB == null) {
+    return false;
+  }
   if (mapA.length != mapB.length) {
     return false;
   }
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index 9086618a373b..e2ba17cb777e 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -46,7 +46,7 @@ class ContextManagerTest {
     String filePath1 = posix.join(projPath, 'packages', 'file1.dart');
     resourceProvider.newFile(filePath1, 'contents');
     // "packages" files are ignored initially
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.currentContextFilePaths[projPath], isEmpty);
     // "packages" files are ignored during watch
     String filePath2 = posix.join(projPath, 'packages', 'file2.dart');
@@ -63,18 +63,19 @@ class ContextManagerTest {
     // set roots
     resourceProvider.newFolder(project);
     resourceProvider.newFolder(excludedFolder);
-    manager.setRoots([project], [excludedFolder]);
+    manager.setRoots([project], [excludedFolder],
+        {});
     // verify
     expect(manager.isInAnalysisRoot('$excludedFolder/test.dart'), isFalse);
   }
 
   void test_isInAnalysisRoot_inRoot() {
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.isInAnalysisRoot('$projPath/test.dart'), isTrue);
   }
 
   void test_isInAnalysisRoot_notInRoot() {
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.isInAnalysisRoot('/test.dart'), isFalse);
   }
 
@@ -82,7 +83,7 @@ class ContextManagerTest {
     // create a context with a pubspec.yaml file
     String pubspecPath = posix.join(projPath, 'pubspec.yaml');
     resourceProvider.newFile(pubspecPath, 'pubspec');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     return pumpEventQueue().then((_) {
       expect(manager.currentContextPaths.toList(), [projPath]);
       manager.now++;
@@ -103,7 +104,7 @@ class ContextManagerTest {
     String pubspec2Path = posix.join(subdir2Path, 'pubspec.yaml');
     resourceProvider.newFile(pubspec1Path, 'pubspec');
     resourceProvider.newFile(pubspec2Path, 'pubspec');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     return pumpEventQueue().then((_) {
       expect(manager.currentContextPaths.toSet(),
           [subdir1Path, subdir2Path, projPath].toSet());
@@ -122,7 +123,7 @@ class ContextManagerTest {
   void test_setRoots_addFolderWithDartFile() {
     String filePath = posix.join(projPath, 'foo.dart');
     resourceProvider.newFile(filePath, 'contents');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // verify
     var filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, hasLength(1));
@@ -132,7 +133,7 @@ class ContextManagerTest {
   void test_setRoots_addFolderWithDartFileInSubfolder() {
     String filePath = posix.join(projPath, 'foo', 'bar.dart');
     resourceProvider.newFile(filePath, 'contents');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // verify
     var filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, hasLength(1));
@@ -142,7 +143,7 @@ class ContextManagerTest {
   void test_setRoots_addFolderWithDummyLink() {
     String filePath = posix.join(projPath, 'foo.dart');
     resourceProvider.newDummyLink(filePath);
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // verify
     var filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, isEmpty);
@@ -151,7 +152,7 @@ class ContextManagerTest {
   void test_setRoots_addFolderWithPubspec() {
     String pubspecPath = posix.join(projPath, 'pubspec.yaml');
     resourceProvider.newFile(pubspecPath, 'pubspec');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // verify
     expect(manager.currentContextPaths, hasLength(1));
     expect(manager.currentContextPaths, contains(projPath));
@@ -182,7 +183,7 @@ class ContextManagerTest {
       },
     };
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root, subProjectA, subProjectB]);
     // verify files
     manager.assertContextFiles(root, [rootFile]);
@@ -202,7 +203,7 @@ class ContextManagerTest {
 
   void test_setRoots_addFolderWithoutPubspec() {
     packageMapProvider.packageMap = null;
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // verify
     expect(manager.currentContextPaths, hasLength(1));
     expect(manager.currentContextPaths, contains(projPath));
@@ -218,7 +219,7 @@ class ContextManagerTest {
     resourceProvider.newFile(file1, '// 1');
     resourceProvider.newFile(file2, '// 2');
     // set roots
-    manager.setRoots([project], [file1]);
+    manager.setRoots([project], [file1], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [file2]);
   }
@@ -234,7 +235,7 @@ class ContextManagerTest {
     resourceProvider.newFile(fileA, 'library a;');
     resourceProvider.newFile(fileB, 'library b;');
     // set roots
-    manager.setRoots([project], [folderB]);
+    manager.setRoots([project], [folderB], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [fileA]);
   }
@@ -248,11 +249,11 @@ class ContextManagerTest {
     resourceProvider.newFile(file1, '// 1');
     resourceProvider.newFile(file2, '// 2');
     // set roots
-    manager.setRoots([project], []);
+    manager.setRoots([project], [], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [file1, file2]);
     // exclude "2"
-    manager.setRoots([project], [file2]);
+    manager.setRoots([project], [file2], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [file1]);
   }
@@ -268,11 +269,11 @@ class ContextManagerTest {
     resourceProvider.newFile(fileA, 'library a;');
     resourceProvider.newFile(fileB, 'library b;');
     // initially both "aaa/a" and "bbb/b" are included
-    manager.setRoots([project], []);
+    manager.setRoots([project], [], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [fileA, fileB]);
     // exclude "bbb/"
-    manager.setRoots([project], [folderB]);
+    manager.setRoots([project], [folderB], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [fileA]);
   }
@@ -286,11 +287,11 @@ class ContextManagerTest {
     resourceProvider.newFile(file1, '// 1');
     resourceProvider.newFile(file2, '// 2');
     // set roots
-    manager.setRoots([project], [file2]);
+    manager.setRoots([project], [file2], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [file1]);
     // stop excluding "2"
-    manager.setRoots([project], []);
+    manager.setRoots([project], [], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [file1, file2]);
   }
@@ -306,11 +307,11 @@ class ContextManagerTest {
     resourceProvider.newFile(fileA, 'library a;');
     resourceProvider.newFile(fileB, 'library b;');
     // exclude "bbb/"
-    manager.setRoots([project], [folderB]);
+    manager.setRoots([project], [folderB], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [fileA]);
     // stop excluding "bbb/"
-    manager.setRoots([project], []);
+    manager.setRoots([project], [], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [fileA, fileB]);
   }
@@ -329,7 +330,7 @@ class ContextManagerTest {
     resourceProvider.newFile(subFile, 'library sub;');
     resourceProvider.newFile(subSubPubspec, 'pubspec');
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root, subProject]);
     manager.assertContextFiles(root, [rootFile]);
     manager.assertContextFiles(subProject, [subFile]);
@@ -341,7 +342,7 @@ class ContextManagerTest {
     packageMapProvider.packageMap = {
       'foo': [packageFolder]
     };
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(
         manager.currentContextPackageMaps[projPath],
         equals(packageMapProvider.packageMap));
@@ -352,10 +353,10 @@ class ContextManagerTest {
     String pubspecPath = posix.join(projPath, 'pubspec.yaml');
     resourceProvider.newFile(pubspecPath, 'pubspec');
     // add one root - there is a context
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.currentContextPaths, hasLength(1));
     // set empty roots - no contexts
-    manager.setRoots([], []);
+    manager.setRoots([], [], {});
     expect(manager.currentContextPaths, hasLength(0));
     expect(manager.currentContextFilePaths, hasLength(0));
   }
@@ -380,14 +381,15 @@ class ContextManagerTest {
     resourceProvider.newFile(subProjectA_file, '// sub-a');
     resourceProvider.newFile(subProjectB_file, '// sub-b');
     // set roots
-    manager.setRoots([projectA, projectB], []);
+    manager.setRoots([projectA, projectB], [],
+        {});
     manager.assertContextPaths([projectA, subProjectA, projectB, subProjectB]);
     manager.assertContextFiles(projectA, [projectA_file]);
     manager.assertContextFiles(projectB, [projectB_file]);
     manager.assertContextFiles(subProjectA, [subProjectA_file]);
     manager.assertContextFiles(subProjectB, [subProjectB_file]);
     // remove "projectB"
-    manager.setRoots([projectA], []);
+    manager.setRoots([projectA], [], {});
     manager.assertContextPaths([projectA, subProjectA]);
     manager.assertContextFiles(projectA, [projectA_file]);
     manager.assertContextFiles(subProjectA, [subProjectA_file]);
@@ -396,16 +398,16 @@ class ContextManagerTest {
   void test_setRoots_removeFolderWithoutPubspec() {
     packageMapProvider.packageMap = null;
     // add one root - there is a context
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.currentContextPaths, hasLength(1));
     // set empty roots - no contexts
-    manager.setRoots([], []);
+    manager.setRoots([], [], {});
     expect(manager.currentContextPaths, hasLength(0));
     expect(manager.currentContextFilePaths, hasLength(0));
   }
 
   test_watch_addDummyLink() {
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // empty folder initially
     Map filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, isEmpty);
@@ -419,7 +421,7 @@ class ContextManagerTest {
   }
 
   test_watch_addFile() {
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // empty folder initially
     Map filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, hasLength(0));
@@ -434,7 +436,7 @@ class ContextManagerTest {
   }
 
   test_watch_addFileInSubfolder() {
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // empty folder initially
     Map filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, hasLength(0));
@@ -458,7 +460,7 @@ class ContextManagerTest {
     // create files
     resourceProvider.newFile(fileA, 'library a;');
     // set roots
-    manager.setRoots([project], [folderB]);
+    manager.setRoots([project], [folderB], {});
     manager.assertContextPaths([project]);
     manager.assertContextFiles(project, [fileA]);
     // add a file, ignored as excluded
@@ -477,7 +479,7 @@ class ContextManagerTest {
     // create files
     resourceProvider.newFile(rootFile, 'library root;');
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root]);
     // verify files
     manager.assertContextFiles(root, [rootFile]);
@@ -500,7 +502,7 @@ class ContextManagerTest {
     resourceProvider.newFile(rootFile, 'library root;');
     resourceProvider.newFile(subFile, 'library a;');
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root]);
     // verify files
     manager.assertContextFiles(root, [rootFile, subFile]);
@@ -526,7 +528,7 @@ class ContextManagerTest {
     resourceProvider.newFile(subPubspec, 'pubspec');
     resourceProvider.newFile(subFile, 'library sub;');
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root, subProject]);
     manager.assertContextFiles(root, [rootFile]);
     manager.assertContextFiles(subProject, [subFile]);
@@ -543,7 +545,7 @@ class ContextManagerTest {
     String filePath = posix.join(projPath, 'foo.dart');
     // add root with a file
     resourceProvider.newFile(filePath, 'contents');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // the file was added
     Map filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, hasLength(1));
@@ -564,7 +566,7 @@ class ContextManagerTest {
     resourceProvider.newFile(rootPubspec, 'pubspec');
     resourceProvider.newFile(rootFile, 'library root;');
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root]);
     manager.assertContextFiles(root, [rootFile]);
     // delete the pubspec
@@ -587,7 +589,7 @@ class ContextManagerTest {
     resourceProvider.newFile(rootFile, 'library root;');
     resourceProvider.newFile(subFile, 'library a;');
     // set roots
-    manager.setRoots([root], []);
+    manager.setRoots([root], [], {});
     manager.assertContextPaths([root, subProject]);
     // verify files
     manager.assertContextFiles(root, [rootFile]);
@@ -604,7 +606,7 @@ class ContextManagerTest {
     String filePath = posix.join(projPath, 'foo.dart');
     // add root with a file
     resourceProvider.newFile(filePath, 'contents');
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     // the file was added
     Map filePaths = manager.currentContextFilePaths[projPath];
     expect(filePaths, hasLength(1));
@@ -627,7 +629,7 @@ class ContextManagerTest {
     String dartFilePath = posix.join(projPath, 'main.dart');
     resourceProvider.newFile(dartFilePath, 'contents');
     // the created context has the expected empty package map
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.currentContextPackageMaps[projPath], isEmpty);
     // configure package map
     String packagePath = '/package/foo';
@@ -659,7 +661,7 @@ class ContextManagerTest {
     String dartFilePath = posix.join(projPath, 'main.dart');
     resourceProvider.newFile(dartFilePath, 'contents');
     // the created context has the expected empty package map
-    manager.setRoots([projPath], []);
+    manager.setRoots([projPath], [], {});
     expect(manager.currentContextPackageMaps[projPath], isEmpty);
     // Change the package map dependency so that the packageMapProvider is
     // re-run, and arrange for it to return null from computePackageMap().
diff --git a/pkg/analysis_server/test/integration/integration_test_methods.dart b/pkg/analysis_server/test/integration/integration_test_methods.dart
index 743bf3da8c0f..8bc1a982f7af 100644
--- a/pkg/analysis_server/test/integration/integration_test_methods.dart
+++ b/pkg/analysis_server/test/integration/integration_test_methods.dart
@@ -269,9 +269,24 @@ abstract class IntegrationTestMixin {
    *
    *   A list of the files and directories within the included directories that
    *   should not be analyzed.
+   *
+   * packageRoots ( optional Map )
+   *
+   *   A mapping from source directories to target directories that should
+   *   override the normal package: URI resolution mechanism. The analyzer will
+   *   behave as though each source directory in the map contains a special
+   *   pubspec.yaml file which resolves any package: URI to the corresponding
+   *   path within the target directory. The effect is the same as specifying
+   *   the target directory as a "--package_root" parameter to the Dart VM when
+   *   executing any Dart file inside the source directory.
+   *
+   *   Files in any directories that are not overridden by this mapping have
+   *   their package: URI's resolved using the normal pubspec.yaml mechanism.
+   *   If this field is absent, or the empty map is specified, that indicates
+   *   that the normal pubspec.yaml mechanism should always be used.
    */
-  Future sendAnalysisSetAnalysisRoots(List included, List excluded) {
-    var params = new AnalysisSetAnalysisRootsParams(included, excluded).toJson();
+  Future sendAnalysisSetAnalysisRoots(List included, List excluded, {Map packageRoots}) {
+    var params = new AnalysisSetAnalysisRootsParams(included, excluded, packageRoots: packageRoots).toJson();
     return server.send("analysis.setAnalysisRoots", params)
         .then((result) {
       expect(result, isNull);
diff --git a/pkg/analysis_server/test/integration/protocol_matchers.dart b/pkg/analysis_server/test/integration/protocol_matchers.dart
index d3af4738fd6f..adeb2af46f6e 100644
--- a/pkg/analysis_server/test/integration/protocol_matchers.dart
+++ b/pkg/analysis_server/test/integration/protocol_matchers.dart
@@ -159,12 +159,15 @@ final Matcher isAnalysisReanalyzeResult = isNull;
  * {
  *   "included": List
  *   "excluded": List
+ *   "packageRoots": optional Map
  * }
  */
 final Matcher isAnalysisSetAnalysisRootsParams = new LazyMatcher(() => new MatchesJsonObject(
   "analysis.setAnalysisRoots params", {
     "included": isListOf(isFilePath),
     "excluded": isListOf(isFilePath)
+  }, optionalFields: {
+    "packageRoots": isMapOf(isFilePath, isFilePath)
   }));
 
 /**
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index b55d4fe71f5b..16bd4633a00d 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -389,6 +389,30 @@ 

Options

included directories that should not be analyzed.

+ + + FilePath + FilePath + +

+ A mapping from source directories to target directories + that should override the normal package: URI resolution + mechanism. The analyzer will behave as though each + source directory in the map contains a special + pubspec.yaml file which resolves any package: URI to the + corresponding path within the target directory. The + effect is the same as specifying the target directory as + a "--package_root" parameter to the Dart VM when + executing any Dart file inside the source directory. +

+

+ Files in any directories that are not overridden by this + mapping have their package: URI's resolved using the + normal pubspec.yaml mechanism. If this field is absent, + or the empty map is specified, that indicates that the + normal pubspec.yaml mechanism should always be used. +

+
From 227c5524d86fcc50b9570117dae1631dd9ace09b Mon Sep 17 00:00:00 2001 From: "scheglov@google.com" Date: Thu, 23 Oct 2014 04:24:59 +0000 Subject: [PATCH 91/91] Issue 21375. Fix for FunctionTypeAliasElement-based FunctionType source. R=brianwilkerson@google.com BUG= https://code.google.com/p/dart/issues/detail?id=21375 Review URL: https://codereview.chromium.org//672013002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41254 260f80e4-7a28-3924-810f-c04153c831b5 --- .../lib/src/services/correction/util.dart | 9 ++++---- pkg/analysis_server/pubspec.yaml | 2 +- .../refactoring/extract_method_test.dart | 21 ++++++++++++++++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart index d0078aefdf4e..3bf24eb4ac59 100644 --- a/pkg/analysis_server/lib/src/services/correction/util.dart +++ b/pkg/analysis_server/lib/src/services/correction/util.dart @@ -888,8 +888,8 @@ class CorrectionUtils { */ String getTypeSource(DartType type) { StringBuffer sb = new StringBuffer(); - // just some Function, maybe find Function Type Alias later - if (type is FunctionType) { + // just a Function, not FunctionTypeAliasElement + if (type is FunctionType && type.element is! FunctionTypeAliasElement) { return "Function"; } // prepare element @@ -912,9 +912,8 @@ class CorrectionUtils { String name = element.displayName; sb.write(name); // may be type arguments - if (type is InterfaceType) { - InterfaceType interfaceType = type; - List arguments = interfaceType.typeArguments; + if (type is ParameterizedType) { + List arguments = type.typeArguments; // check if has arguments bool hasArguments = false; for (DartType argument in arguments) { diff --git a/pkg/analysis_server/pubspec.yaml b/pkg/analysis_server/pubspec.yaml index c35ce2564513..1fd1a09e4522 100644 --- a/pkg/analysis_server/pubspec.yaml +++ b/pkg/analysis_server/pubspec.yaml @@ -6,7 +6,7 @@ homepage: http://www.dartlang.org environment: sdk: '>=1.0.0 <2.0.0' dependencies: - analyzer: 0.23.0-dev.12 + analyzer: 0.23.0-dev.13 args: any logging: any path: any diff --git a/pkg/analysis_server/test/services/refactoring/extract_method_test.dart b/pkg/analysis_server/test/services/refactoring/extract_method_test.dart index 8001fc0f8663..67e46cc94632 100644 --- a/pkg/analysis_server/test/services/refactoring/extract_method_test.dart +++ b/pkg/analysis_server/test/services/refactoring/extract_method_test.dart @@ -9,9 +9,9 @@ import 'dart:async'; import 'package:analysis_server/src/protocol.dart'; import 'package:analysis_server/src/services/refactoring/extract_method.dart'; import 'package:analysis_server/src/services/refactoring/refactoring.dart'; -import '../../reflective_tests.dart'; import 'package:unittest/unittest.dart'; +import '../../reflective_tests.dart'; import 'abstract_refactoring.dart'; @@ -1323,6 +1323,25 @@ class A { '''); } + test_singleExpression_parameter_functionTypeAlias() { + indexTestUnit(''' +typedef R Foo(S s); +void main(Foo foo, String s) { + int a = foo(s); +} +'''); + _createRefactoringForString('foo(s)'); + // apply refactoring + return _assertSuccessfulRefactoring(''' +typedef R Foo(S s); +void main(Foo foo, String s) { + int a = res(foo, s); +} + +int res(Foo foo, String s) => foo(s); +'''); + } + test_singleExpression_returnTypeGeneric() { indexTestUnit(''' main() {