Skip to content

Commit 98aa412

Browse files
authored
Readonly AST: Use $ReadOnlyArray (#1122)
This is the second step of #1121 to ensure AST are readonly, marking all arrays as $ReadOnlyArray.
1 parent 0244af4 commit 98aa412

File tree

8 files changed

+72
-67
lines changed

8 files changed

+72
-67
lines changed

src/language/ast.js

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export type NameNode = {
172172
export type DocumentNode = {
173173
+kind: 'Document',
174174
+loc?: Location,
175-
+definitions: Array<DefinitionNode>,
175+
+definitions: $ReadOnlyArray<DefinitionNode>,
176176
};
177177

178178
export type DefinitionNode =
@@ -185,8 +185,8 @@ export type OperationDefinitionNode = {
185185
+loc?: Location,
186186
+operation: OperationTypeNode,
187187
+name?: NameNode,
188-
+variableDefinitions?: Array<VariableDefinitionNode>,
189-
+directives?: Array<DirectiveNode>,
188+
+variableDefinitions?: $ReadOnlyArray<VariableDefinitionNode>,
189+
+directives?: $ReadOnlyArray<DirectiveNode>,
190190
+selectionSet: SelectionSetNode,
191191
};
192192

@@ -209,7 +209,7 @@ export type VariableNode = {
209209
export type SelectionSetNode = {
210210
kind: 'SelectionSet',
211211
loc?: Location,
212-
selections: Array<SelectionNode>,
212+
selections: $ReadOnlyArray<SelectionNode>,
213213
};
214214

215215
export type SelectionNode = FieldNode | FragmentSpreadNode | InlineFragmentNode;
@@ -219,8 +219,8 @@ export type FieldNode = {
219219
+loc?: Location,
220220
+alias?: NameNode,
221221
+name: NameNode,
222-
+arguments?: Array<ArgumentNode>,
223-
+directives?: Array<DirectiveNode>,
222+
+arguments?: $ReadOnlyArray<ArgumentNode>,
223+
+directives?: $ReadOnlyArray<DirectiveNode>,
224224
+selectionSet?: SelectionSetNode,
225225
};
226226

@@ -237,14 +237,14 @@ export type FragmentSpreadNode = {
237237
+kind: 'FragmentSpread',
238238
+loc?: Location,
239239
+name: NameNode,
240-
+directives?: Array<DirectiveNode>,
240+
+directives?: $ReadOnlyArray<DirectiveNode>,
241241
};
242242

243243
export type InlineFragmentNode = {
244244
+kind: 'InlineFragment',
245245
+loc?: Location,
246246
+typeCondition?: NamedTypeNode,
247-
+directives?: Array<DirectiveNode>,
247+
+directives?: $ReadOnlyArray<DirectiveNode>,
248248
+selectionSet: SelectionSetNode,
249249
};
250250

@@ -253,7 +253,7 @@ export type FragmentDefinitionNode = {
253253
+loc?: Location,
254254
+name: NameNode,
255255
+typeCondition: NamedTypeNode,
256-
+directives?: Array<DirectiveNode>,
256+
+directives?: $ReadOnlyArray<DirectiveNode>,
257257
+selectionSet: SelectionSetNode,
258258
};
259259

@@ -309,13 +309,13 @@ export type EnumValueNode = {
309309
export type ListValueNode = {
310310
+kind: 'ListValue',
311311
+loc?: Location,
312-
+values: Array<ValueNode>,
312+
+values: $ReadOnlyArray<ValueNode>,
313313
};
314314

315315
export type ObjectValueNode = {
316316
+kind: 'ObjectValue',
317317
+loc?: Location,
318-
+fields: Array<ObjectFieldNode>,
318+
+fields: $ReadOnlyArray<ObjectFieldNode>,
319319
};
320320

321321
export type ObjectFieldNode = {
@@ -331,7 +331,7 @@ export type DirectiveNode = {
331331
+kind: 'Directive',
332332
+loc?: Location,
333333
+name: NameNode,
334-
+arguments?: Array<ArgumentNode>,
334+
+arguments?: $ReadOnlyArray<ArgumentNode>,
335335
};
336336

337337
// Type Reference
@@ -367,8 +367,8 @@ export type TypeSystemDefinitionNode =
367367
export type SchemaDefinitionNode = {
368368
+kind: 'SchemaDefinition',
369369
+loc?: Location,
370-
+directives: Array<DirectiveNode>,
371-
+operationTypes: Array<OperationTypeDefinitionNode>,
370+
+directives: $ReadOnlyArray<DirectiveNode>,
371+
+operationTypes: $ReadOnlyArray<OperationTypeDefinitionNode>,
372372
};
373373

374374
export type OperationTypeDefinitionNode = {
@@ -393,27 +393,27 @@ export type ScalarTypeDefinitionNode = {
393393
+loc?: Location,
394394
+description?: StringValueNode,
395395
+name: NameNode,
396-
+directives?: Array<DirectiveNode>,
396+
+directives?: $ReadOnlyArray<DirectiveNode>,
397397
};
398398

399399
export type ObjectTypeDefinitionNode = {
400400
+kind: 'ObjectTypeDefinition',
401401
+loc?: Location,
402402
+description?: StringValueNode,
403403
+name: NameNode,
404-
+interfaces?: Array<NamedTypeNode>,
405-
+directives?: Array<DirectiveNode>,
406-
+fields?: Array<FieldDefinitionNode>,
404+
+interfaces?: $ReadOnlyArray<NamedTypeNode>,
405+
+directives?: $ReadOnlyArray<DirectiveNode>,
406+
+fields?: $ReadOnlyArray<FieldDefinitionNode>,
407407
};
408408

409409
export type FieldDefinitionNode = {
410410
+kind: 'FieldDefinition',
411411
+loc?: Location,
412412
+description?: StringValueNode,
413413
+name: NameNode,
414-
+arguments?: Array<InputValueDefinitionNode>,
414+
+arguments?: $ReadOnlyArray<InputValueDefinitionNode>,
415415
+type: TypeNode,
416-
+directives?: Array<DirectiveNode>,
416+
+directives?: $ReadOnlyArray<DirectiveNode>,
417417
};
418418

419419
export type InputValueDefinitionNode = {
@@ -423,51 +423,51 @@ export type InputValueDefinitionNode = {
423423
+name: NameNode,
424424
+type: TypeNode,
425425
+defaultValue?: ValueNode,
426-
+directives?: Array<DirectiveNode>,
426+
+directives?: $ReadOnlyArray<DirectiveNode>,
427427
};
428428

429429
export type InterfaceTypeDefinitionNode = {
430430
+kind: 'InterfaceTypeDefinition',
431431
+loc?: Location,
432432
+description?: StringValueNode,
433433
+name: NameNode,
434-
+directives?: Array<DirectiveNode>,
435-
+fields?: Array<FieldDefinitionNode>,
434+
+directives?: $ReadOnlyArray<DirectiveNode>,
435+
+fields?: $ReadOnlyArray<FieldDefinitionNode>,
436436
};
437437

438438
export type UnionTypeDefinitionNode = {
439439
+kind: 'UnionTypeDefinition',
440440
+loc?: Location,
441441
+description?: StringValueNode,
442442
+name: NameNode,
443-
+directives?: Array<DirectiveNode>,
444-
+types?: Array<NamedTypeNode>,
443+
+directives?: $ReadOnlyArray<DirectiveNode>,
444+
+types?: $ReadOnlyArray<NamedTypeNode>,
445445
};
446446

447447
export type EnumTypeDefinitionNode = {
448448
+kind: 'EnumTypeDefinition',
449449
+loc?: Location,
450450
+description?: StringValueNode,
451451
+name: NameNode,
452-
+directives?: Array<DirectiveNode>,
453-
+values?: Array<EnumValueDefinitionNode>,
452+
+directives?: $ReadOnlyArray<DirectiveNode>,
453+
+values?: $ReadOnlyArray<EnumValueDefinitionNode>,
454454
};
455455

456456
export type EnumValueDefinitionNode = {
457457
+kind: 'EnumValueDefinition',
458458
+loc?: Location,
459459
+description?: StringValueNode,
460460
+name: NameNode,
461-
+directives?: Array<DirectiveNode>,
461+
+directives?: $ReadOnlyArray<DirectiveNode>,
462462
};
463463

464464
export type InputObjectTypeDefinitionNode = {
465465
+kind: 'InputObjectTypeDefinition',
466466
+loc?: Location,
467467
+description?: StringValueNode,
468468
+name: NameNode,
469-
+directives?: Array<DirectiveNode>,
470-
+fields?: Array<InputValueDefinitionNode>,
469+
+directives?: $ReadOnlyArray<DirectiveNode>,
470+
+fields?: $ReadOnlyArray<InputValueDefinitionNode>,
471471
};
472472

473473
// Type Extensions
@@ -484,48 +484,48 @@ export type ScalarTypeExtensionNode = {
484484
kind: 'ScalarTypeExtension',
485485
loc?: Location,
486486
name: NameNode,
487-
directives?: Array<DirectiveNode>,
487+
directives?: $ReadOnlyArray<DirectiveNode>,
488488
};
489489

490490
export type ObjectTypeExtensionNode = {
491491
+kind: 'ObjectTypeExtension',
492492
+loc?: Location,
493493
+name: NameNode,
494-
+interfaces?: Array<NamedTypeNode>,
495-
+directives?: Array<DirectiveNode>,
496-
+fields?: Array<FieldDefinitionNode>,
494+
+interfaces?: $ReadOnlyArray<NamedTypeNode>,
495+
+directives?: $ReadOnlyArray<DirectiveNode>,
496+
+fields?: $ReadOnlyArray<FieldDefinitionNode>,
497497
};
498498

499499
export type InterfaceTypeExtensionNode = {
500500
kind: 'InterfaceTypeExtension',
501501
loc?: Location,
502502
name: NameNode,
503-
directives?: Array<DirectiveNode>,
504-
fields?: Array<FieldDefinitionNode>,
503+
directives?: $ReadOnlyArray<DirectiveNode>,
504+
fields?: $ReadOnlyArray<FieldDefinitionNode>,
505505
};
506506

507507
export type UnionTypeExtensionNode = {
508508
kind: 'UnionTypeExtension',
509509
loc?: Location,
510510
name: NameNode,
511-
directives?: Array<DirectiveNode>,
512-
types?: Array<NamedTypeNode>,
511+
directives?: $ReadOnlyArray<DirectiveNode>,
512+
types?: $ReadOnlyArray<NamedTypeNode>,
513513
};
514514

515515
export type EnumTypeExtensionNode = {
516516
kind: 'EnumTypeExtension',
517517
loc?: Location,
518518
name: NameNode,
519-
directives?: Array<DirectiveNode>,
520-
values?: Array<EnumValueDefinitionNode>,
519+
directives?: $ReadOnlyArray<DirectiveNode>,
520+
values?: $ReadOnlyArray<EnumValueDefinitionNode>,
521521
};
522522

523523
export type InputObjectTypeExtensionNode = {
524524
kind: 'InputObjectTypeExtension',
525525
loc?: Location,
526526
name: NameNode,
527-
directives?: Array<DirectiveNode>,
528-
fields?: Array<InputValueDefinitionNode>,
527+
directives?: $ReadOnlyArray<DirectiveNode>,
528+
fields?: $ReadOnlyArray<InputValueDefinitionNode>,
529529
};
530530

531531
// Directive Definitions
@@ -535,6 +535,6 @@ export type DirectiveDefinitionNode = {
535535
+loc?: Location,
536536
+description?: StringValueNode,
537537
+name: NameNode,
538-
+arguments?: Array<InputValueDefinitionNode>,
539-
+locations: Array<NameNode>,
538+
+arguments?: $ReadOnlyArray<InputValueDefinitionNode>,
539+
+locations: $ReadOnlyArray<NameNode>,
540540
};

src/type/directives.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ export const GraphQLDeprecatedDirective = new GraphQLDirective({
149149
/**
150150
* The full list of specified directives.
151151
*/
152-
export const specifiedDirectives: Array<GraphQLDirective> = [
152+
export const specifiedDirectives: $ReadOnlyArray<*> = [
153153
GraphQLIncludeDirective,
154154
GraphQLSkipDirective,
155155
GraphQLDeprecatedDirective,

src/type/introspection.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
} from './definition';
2525
import { GraphQLString, GraphQLBoolean } from './scalars';
2626
import { DirectiveLocation } from '../language/directiveLocation';
27-
import type { GraphQLField, GraphQLNamedType, GraphQLType } from './definition';
27+
import type { GraphQLField, GraphQLType } from './definition';
2828

2929
export const __Schema = new GraphQLObjectType({
3030
name: '__Schema',
@@ -462,7 +462,7 @@ export const TypeNameMetaFieldDef: GraphQLField<*, *> = {
462462
resolve: (source, args, context, { parentType }) => parentType.name,
463463
};
464464

465-
export const introspectionTypes: Array<GraphQLNamedType> = [
465+
export const introspectionTypes: $ReadOnlyArray<*> = [
466466
__Schema,
467467
__Directive,
468468
__DirectiveLocation,

src/type/scalars.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export const GraphQLID = new GraphQLScalarType({
137137
},
138138
});
139139

140-
export const specifiedScalarTypes: Array<GraphQLScalarType> = [
140+
export const specifiedScalarTypes: $ReadOnlyArray<*> = [
141141
GraphQLString,
142142
GraphQLInt,
143143
GraphQLFloat,

src/type/schema.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class GraphQLSchema {
5959
_queryType: GraphQLObjectType;
6060
_mutationType: ?GraphQLObjectType;
6161
_subscriptionType: ?GraphQLObjectType;
62-
_directives: Array<GraphQLDirective>;
62+
_directives: $ReadOnlyArray<GraphQLDirective>;
6363
_typeMap: TypeMap;
6464
_implementations: ObjMap<Array<GraphQLObjectType>>;
6565
_possibleTypeMap: ?ObjMap<ObjMap<boolean>>;
@@ -176,7 +176,7 @@ export class GraphQLSchema {
176176

177177
getPossibleTypes(
178178
abstractType: GraphQLAbstractType,
179-
): Array<GraphQLObjectType> {
179+
): $ReadOnlyArray<GraphQLObjectType> {
180180
if (abstractType instanceof GraphQLUnionType) {
181181
return abstractType.getTypes();
182182
}
@@ -210,7 +210,7 @@ export class GraphQLSchema {
210210
return Boolean(possibleTypeMap[abstractType.name][possibleType.name]);
211211
}
212212

213-
getDirectives(): Array<GraphQLDirective> {
213+
getDirectives(): $ReadOnlyArray<GraphQLDirective> {
214214
return this._directives;
215215
}
216216

src/utilities/concatAST.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import type { DocumentNode } from '../language/ast';
1414
* concatenate the ASTs together into batched AST, useful for validating many
1515
* GraphQL source files which together represent one conceptual application.
1616
*/
17-
export function concatAST(asts: Array<DocumentNode>): DocumentNode {
17+
export function concatAST(asts: $ReadOnlyArray<DocumentNode>): DocumentNode {
1818
const batchDefinitions = [];
1919
for (let i = 0; i < asts.length; i++) {
2020
const definitions = asts[i].definitions;

src/validation/rules/OverlappingFieldsCanBeMerged.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,8 +637,8 @@ function findConflict(
637637
}
638638

639639
function sameArguments(
640-
arguments1: Array<ArgumentNode>,
641-
arguments2: Array<ArgumentNode>,
640+
arguments1: $ReadOnlyArray<ArgumentNode>,
641+
arguments2: $ReadOnlyArray<ArgumentNode>,
642642
): boolean {
643643
if (arguments1.length !== arguments2.length) {
644644
return false;

0 commit comments

Comments
 (0)