Fail on cyclic fragments, fix #22
This commit is contained in:
		@@ -94,17 +94,21 @@ collectFragments = do
 | 
			
		||||
        _ <- fragmentDefinition nextValue
 | 
			
		||||
        collectFragments
 | 
			
		||||
 | 
			
		||||
fragmentDefinition :: Full.FragmentDefinition -> TransformT (NonEmpty Core.Selection)
 | 
			
		||||
fragmentDefinition ::
 | 
			
		||||
    Full.FragmentDefinition ->
 | 
			
		||||
    TransformT (NonEmpty Core.Selection)
 | 
			
		||||
fragmentDefinition (Full.FragmentDefinition name _tc _dirs sels) = do
 | 
			
		||||
    modify deleteFragmentDefinition
 | 
			
		||||
    selections <- traverse selection sels
 | 
			
		||||
    let newValue = either id pure =<< selections
 | 
			
		||||
    modify $ moveFragment newValue
 | 
			
		||||
    modify $ insertFragment newValue
 | 
			
		||||
    liftJust newValue
 | 
			
		||||
  where
 | 
			
		||||
    moveFragment newValue (Replacement fullFragments emptyFragDefs) =
 | 
			
		||||
        let newFragments = HashMap.insert name newValue fullFragments
 | 
			
		||||
            newDefinitions = HashMap.delete name emptyFragDefs
 | 
			
		||||
         in Replacement newFragments newDefinitions
 | 
			
		||||
    deleteFragmentDefinition (Replacement fragments' fragmentDefinitions') =
 | 
			
		||||
        Replacement fragments' $ HashMap.delete name fragmentDefinitions'
 | 
			
		||||
    insertFragment newValue (Replacement fragments' fragmentDefinitions') =
 | 
			
		||||
        let newFragments = HashMap.insert name newValue fragments'
 | 
			
		||||
         in Replacement newFragments fragmentDefinitions'
 | 
			
		||||
 | 
			
		||||
field :: Full.Field -> TransformT Core.Field
 | 
			
		||||
field (Full.Field a n args _dirs sels) = do
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user