MCPcopy Index your code
hub / github.com/Effect-TS/effect / equals

Function equals

packages/effect/src/SchemaAST.ts:2871–2903  ·  view source on GitHub ↗
(self: AST, that: AST)

Source from the content-addressed store, hash-verified

2869
2870/** @internal */
2871export const equals = (self: AST, that: AST): boolean => {
2872 switch (self._tag) {
2873 case "Literal":
2874 return isLiteral(that) && that.literal === self.literal
2875 case "UniqueSymbol":
2876 return isUniqueSymbol(that) && that.symbol === self.symbol
2877 case "UndefinedKeyword":
2878 case "VoidKeyword":
2879 case "NeverKeyword":
2880 case "UnknownKeyword":
2881 case "AnyKeyword":
2882 case "StringKeyword":
2883 case "NumberKeyword":
2884 case "BooleanKeyword":
2885 case "BigIntKeyword":
2886 case "SymbolKeyword":
2887 case "ObjectKeyword":
2888 return that._tag === self._tag
2889 case "TemplateLiteral":
2890 return isTemplateLiteral(that) && that.head === self.head && equalsTemplateLiteralSpan(that.spans, self.spans)
2891 case "Enums":
2892 return isEnums(that) && equalsEnums(that.enums, self.enums)
2893 case "Union":
2894 return isUnion(that) && equalsUnion(self.types, that.types)
2895 case "Refinement":
2896 case "TupleType":
2897 case "TypeLiteral":
2898 case "Suspend":
2899 case "Transformation":
2900 case "Declaration":
2901 return self === that
2902 }
2903}
2904
2905const equalsTemplateLiteralSpan = Arr.getEquivalence<TemplateLiteralSpan>((self, that): boolean => {
2906 return self.literal === that.literal && equals(self.type, that.type)

Callers 1

SchemaAST.tsFile · 0.70

Calls 1

isUnionFunction · 0.85

Tested by

no test coverage detected