@@ -280,10 +280,10 @@ class ExprVisitor : public AstVisitorBase<ExprVisitor> {
280280 }
281281 }
282282
283- void visitParenExpr ( swift::ParenExpr* expr) {
284- auto label = dispatcher_.assignNewLabel (expr);
285- dispatcher_. emit (ParenExprsTrap{label} );
286- emitIdentityExpr (expr, label) ;
283+ codeql::ParenExpr translateParenExpr ( const swift::ParenExpr& expr) {
284+ ParenExpr entry{ dispatcher_.assignNewLabel (expr)} ;
285+ fillIdentityExpr (expr, entry );
286+ return entry ;
287287 }
288288
289289 void visitLoadExpr (swift::LoadExpr* expr) {
@@ -535,6 +535,62 @@ class ExprVisitor : public AstVisitorBase<ExprVisitor> {
535535 dispatcher_.emit (OtherConstructorDeclRefExprsTrap{label, ctorLabel});
536536 }
537537
538+ codeql::UnresolvedDeclRefExpr translateUnresolvedDeclRefExpr (
539+ const swift::UnresolvedDeclRefExpr& expr) {
540+ codeql::UnresolvedDeclRefExpr entry{dispatcher_.assignNewLabel (expr)};
541+ if (expr.hasName ()) {
542+ llvm::SmallVector<char > scratch;
543+ entry.name = expr.getName ().getString (scratch).str ();
544+ }
545+ return entry;
546+ }
547+
548+ codeql::UnresolvedDotExpr translateUnresolvedDotExpr (const swift::UnresolvedDotExpr& expr) {
549+ codeql::UnresolvedDotExpr entry{dispatcher_.assignNewLabel (expr)};
550+ assert (expr.getBase () && " Expect UnresolvedDotExpr to have a base" );
551+ entry.base = dispatcher_.fetchLabel (expr.getBase ());
552+ llvm::SmallVector<char > scratch;
553+ entry.name = expr.getName ().getString (scratch).str ();
554+ return entry;
555+ }
556+
557+ codeql::UnresolvedMemberExpr translateUnresolvedMemberExpr (
558+ const swift::UnresolvedMemberExpr& expr) {
559+ UnresolvedMemberExpr entry{dispatcher_.assignNewLabel (expr)};
560+ llvm::SmallVector<char > scratch;
561+ entry.name = expr.getName ().getString (scratch).str ();
562+ return entry;
563+ }
564+
565+ codeql::SequenceExpr translateSequenceExpr (const swift::SequenceExpr& expr) {
566+ SequenceExpr entry{dispatcher_.assignNewLabel (expr)};
567+ entry.elements = dispatcher_.fetchRepeatedLabels (expr.getElements ());
568+ return entry;
569+ }
570+
571+ codeql::BridgeToObjCExpr translateBridgeToObjCExpr (const swift::BridgeToObjCExpr& expr) {
572+ BridgeToObjCExpr entry{dispatcher_.assignNewLabel (expr)};
573+ entry.sub_expr = dispatcher_.fetchLabel (expr.getSubExpr ());
574+ return entry;
575+ }
576+
577+ codeql::BridgeFromObjCExpr translateBridgeFromObjCExpr (const swift::BridgeFromObjCExpr& expr) {
578+ BridgeFromObjCExpr entry{dispatcher_.assignNewLabel (expr)};
579+ entry.sub_expr = dispatcher_.fetchLabel (expr.getSubExpr ());
580+ return entry;
581+ }
582+
583+ codeql::DotSelfExpr translateDotSelfExpr (const swift::DotSelfExpr& expr) {
584+ DotSelfExpr entry{dispatcher_.assignNewLabel (expr)};
585+ fillIdentityExpr (expr, entry);
586+ return entry;
587+ }
588+
589+ codeql::ErrorExpr translateErrorExpr (const swift::ErrorExpr& expr) {
590+ ErrorExpr entry{dispatcher_.assignNewLabel (expr)};
591+ return entry;
592+ }
593+
538594 private:
539595 void emitAbstractClosureExpr (swift::AbstractClosureExpr* expr,
540596 TrapLabel<AbstractClosureExprTag> label) {
@@ -566,9 +622,9 @@ class ExprVisitor : public AstVisitorBase<ExprVisitor> {
566622 dispatcher_.emit (ExplicitCastExprsTrap{label, dispatcher_.fetchLabel (expr->getSubExpr ())});
567623 }
568624
569- void emitIdentityExpr ( swift::IdentityExpr* expr, TrapLabel<IdentityExprTag> label ) {
570- assert (expr-> getSubExpr () && " IdentityExpr has getSubExpr()" );
571- dispatcher_. emit (IdentityExprsTrap{label, dispatcher_.fetchLabel (expr-> getSubExpr ())} );
625+ void fillIdentityExpr ( const swift::IdentityExpr& expr, codeql::IdentityExpr& entry ) {
626+ assert (expr. getSubExpr () && " IdentityExpr has getSubExpr()" );
627+ entry. sub_expr = dispatcher_.fetchLabel (expr. getSubExpr ());
572628 }
573629
574630 void emitAnyTryExpr (swift::AnyTryExpr* expr, TrapLabel<AnyTryExprTag> label) {
0 commit comments