@@ -786,6 +786,37 @@ function initSearch(rawSearchIndex) {
786786 }
787787 elems . push ( makePrimitiveElement ( name , { bindingName, generics } ) ) ;
788788 }
789+ } else if ( parserState . userQuery [ parserState . pos ] === "&" ) {
790+ if ( parserState . typeFilter !== null && parserState . typeFilter !== "primitive" ) {
791+ throw [
792+ "Invalid search type: primitive " ,
793+ "&" ,
794+ " and " ,
795+ parserState . typeFilter ,
796+ " both specified" ,
797+ ] ;
798+ }
799+ parserState . typeFilter = null ;
800+ parserState . pos += 1 ;
801+ let c = parserState . userQuery [ parserState . pos ] ;
802+ while ( c === " " && parserState . pos < parserState . length ) {
803+ parserState . pos += 1 ;
804+ c = parserState . userQuery [ parserState . pos ] ;
805+ }
806+ const generics = [ ] ;
807+ if ( parserState . userQuery . slice ( parserState . pos , parserState . pos + 3 ) === "mut" ) {
808+ generics . push ( makePrimitiveElement ( "mut" , { typeFilter : "keyword" } ) ) ;
809+ parserState . pos += 3 ;
810+ c = parserState . userQuery [ parserState . pos ] ;
811+ }
812+ while ( c === " " && parserState . pos < parserState . length ) {
813+ parserState . pos += 1 ;
814+ c = parserState . userQuery [ parserState . pos ] ;
815+ }
816+ if ( ! isEndCharacter ( c ) && parserState . pos < parserState . length ) {
817+ getFilteredNextElem ( query , parserState , generics , isInGenerics ) ;
818+ }
819+ elems . push ( makePrimitiveElement ( "reference" , { generics } ) ) ;
789820 } else {
790821 const isStringElem = parserState . userQuery [ start ] === "\"" ;
791822 // We handle the strings on their own mostly to make code easier to follow.
0 commit comments